httsleep is a powerful polling library for Python.
Set your success conditions, set a few alarms, and get polling!
until = { 'status_code': 200, 'jsonpath': [{'expression': 'status', 'value': 'OK'}] } alarms = [ {'json': {'status': 'ERROR'}}, {'jsonpath': [{'expression': 'status', 'value': 'UNKNOWN'}, {'expression': 'owner', 'value': 'Chris'}], 'callback': is_job_really_failing}, {'status_code': 404} ] try: response = httsleep( 'http://myendpoint/jobs/1', until, alarms=alarms, max_retries=20) except Alarm as e: print "Response was:", e.response print "Alarm condition that matched was:", e.alarm
Translated into English, this means:
- Poll
http://myendpoint/jobs/1
-- at most 20 times -- until- it returns a status code of
200
- AND the
status
key in its response has the valueOK
- it returns a status code of
- but raise an alarm if
- the
status
key has the valueERROR
- OR the
status
key has the valueUNKNOWN
AND theowner
key has the valueChris
AND the functionis_job_really_dying
returnsTrue
- OR the status code is 404
- the
http://httsleep.readthedocs.io/
pip install httsleep
pip install -e . pip install -r test-requirements.txt py.test