繁体   English   中英

如何阻止和等待基于回调的异步,Python函数调用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM