我知道AsyncIO WSGI插件仍在创建过程中(http://uwsgi-docs.readthedocs.org/en/latest/asyncio.html)。我只是在考虑在现有的Web项目中使用它的可行性。
似乎头号问题是管理事件循环的位置。 WSGI请求是在一个线程上完成的,还是它们自己的线程?
我认为使用它的一种方法是,如果单个请求具有可以非阻塞方式执行的多个任务,那么这可能很有用。例如,如果请求需要从Web上的另一个地方出去并检索多个文件。您可以在请求中创建一个事件循环,以便更有效地执行集合非阻塞操作。
这是否是目前在现有网络项目中真正利用AsyncIO的唯一方法?
答案 0 :(得分:1)
您可以将阻止任务“转换”为非阻塞任务,例如:
我建议: https://docs.python.org/3/library/asyncio-eventloop.html#executor
我有一个听取Twitter提要,功能“提及”的功能,我在执行者中运行它,
@asyncio.coroutine
def boucle_un():
while True:
print("debut du un")
value = t.next()
future1 = loop.run_in_executor(None, mention,20, value)
response1 = yield from future1
yield from asyncio.sleep(5)
print("fin du un")