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