【发布时间】:2017-07-20 22:38:00
【问题描述】:
使用 gevent,我可以像这样监控长时间运行的函数:
greenlet = gevent.Greenlet(long_running_task, *args, **kwargs)
greenlet.start()
while not greenlet.ready():
send_heartbeat()
gevent.sleep(heartbeat_interval)
if greenlet.successful():
send_success(greenlet.value)
else:
send_failure(exception=greenlet.exception)
我将如何使用 asyncio 做到这一点?我尝试了以下方法,但我被卡住了:
loop = asyncio.get_event_loop()
async def send_heartbeat(heartbeat_interval=15):
send_heartbeat()
asyncio.sleep(heartbeat_interval)
await asyncio.sleep(1)
loop.run_until_complete(asyncio.wait([long_running_task(*args, **kwargs), send_heartbeat()]))
loop.close()
我将如何改变它以获得预期的行为?
【问题讨论】:
标签: python python-asyncio gevent