![](/img/trans.png)
[英]python 3 : how to wait for the callback in async function when use asyncio tasks
[英]How to block and wait for async, callback based Python function calls
我有一个Python脚本会产生许多异步请求。 我正在使用的API进行回调。
主函数调用run,我希望它阻止执行,直到所有请求都返回。
我可以在Python 2.7中使用什么来实现这一目标?
def run():
for request in requests:
client.send_request(request, callback)
def callback(error, response):
# handle response
pass
def main():
run()
# I want to block here
我发现最简单,侵入性最小的方法是使用threading.Event
, 在2.7中可用 。
import threading
import functools
def run():
events = []
for request in requests:
event = threading.Event()
callback_with_event = functools.partial(callback, event)
client.send_request(request, callback_with_event)
events.append(event)
return events
def callback(event, error, response):
# handle response
event.set()
def wait_for_events(events):
for event in events:
event.wait()
def main():
events = run()
wait_for_events(events)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.