我有一个基于python3.5+异步框架(apistar、sanic等)构建的web应用程序。该应用程序进行各种IO调用-对数据库、Redis等的调用也是异步的。在
Some docs建议使用其他事件循环:
import asyncio
import peewee
from peewee_async import Manager, PostgresqlDatabase
loop = asyncio.new_event_loop() # Note: custom loop!
database = PostgresqlDatabase('test')
objects = Manager(database, loop=loop)
据我所知,await
语句允许事件循环在它到达IO时进行上下文切换,因此额外的事件循环似乎完全没有必要。在
使用附加事件循环的好处是什么?何时应该使用附加循环?在
您应该一次只使用一个IO循环,并且每个线程一次只允许一个IO循环。}对并发性使用了不同的对比方法。运行多个循环(在多个线程中)被认为是不好的做法,应该避免。在
threading
和{上面的文档不建议使用“附加”循环。它展示了如何显式地指定一个自定义循环,而不将其注册为默认循环。在
在运行测试时,应该逐个使用多个事件循环,这样每个测试用例都是针对其自己的事件循环运行的。在
根据底层框架的要求,您可能需要同时使用多个循环。在示例中,}需要它们自己的事件循环。在
pyzmq
和{如果需要更好地控制任务执行,您可能希望同时使用多个循环。在示例中,当您希望显式地对任务分组并决定应该执行哪个组时。在
请记住,当前实现一次只允许每个线程运行一个循环。在
相关问题 更多 >
编程相关推荐