beanstalkc icon indicating copy to clipboard operation
beanstalkc copied to clipboard

Added a small YAML parser, which should be sufficient for most purposes.

Open ptjm opened this issue 11 years ago • 0 comments
trafficstars

If parse_yaml is True and PyYAML is not available, this change fails over to a small built-in parser which handles the syntax returned by beanstalkd. For example:

>>> import beanstalkc
>>> import pprint
>>> bs = beanstalkc.Connection()
>>> pprint(bs.stats())
{'binlog-current-index': 0,
 'binlog-max-size': 10485760,
 ...
 'current-jobs-buried': 0,
 'current-jobs-delayed': 0,
 'current-jobs-ready': 0,
 'current-jobs-reserved': 0,
 ...
 'rusage-stime': '0.008396',
 'rusage-utime': '0.000000',
 ...
 'version': '1.9'}
>>> bs.use('t1')
't1'
>>> bs.watch('t1')
2
>>> bs.using()
't1'
>>> bs.watching()
['default', 't1']
>>> bs.put('a job for t1', priority = 56)
6
>>> j = bs.reserve()
>>> pprint(j.stats())
{'age': 9,
 'buries': 0,
 'delay': 0,
 'file': 0,
 'id': 6,
 'kicks': 0,
 'pri': 56,
 'releases': 0,
 'reserves': 1,
 'state': 'reserved',
 'time-left': 118,
 'timeouts': 0,
 'ttr': 120,
 'tube': 't1'}
>>> j.release()
>>> j = bs.reserve()
>>> pprint(j.stats())
{'age': 68,
 'buries': 0,
 'delay': 0,
 'file': 0,
 'id': 6,
 'kicks': 0,
 'pri': 56,
 'releases': 1,
 'reserves': 2,
 'state': 'reserved',
 'time-left': 115,
 'timeouts': 0,
 'ttr': 120,
 'tube': 't1'}
>>> pprint(bs.stats_tube('t1'))
{'cmd-delete': 1,
 'cmd-pause-tube': 0,
 'current-jobs-buried': 0,
 'current-jobs-delayed': 0,
 'current-jobs-ready': 0,
 'current-jobs-reserved': 1,
 'current-jobs-urgent': 0,
 'current-using': 1,
 'current-waiting': 0,
 'current-watching': 1,
 'name': 't1',
 'pause': 0,
 'pause-time-left': 0,
 'total-jobs': 2}
>>> for i in range(1,bs.stats()['total-jobs']+1):
...  try:
...   bs.delete(i)
...   print i
...  except: pass
... 
6

I believe the parsed result is identical to what PyYAML gives for the same input, with the exception of the rusage and version keys, which this code leaves as strings. This would affect someone graphing rusage, but not most people.

ptjm avatar Jul 23 '14 04:07 ptjm