我正在使用asyncioPython 3.5中的使用流程,但我还没有看到我应该做什么await以及我不应该做的事情或者可以忽略不计的事情的描述.我是否必须在"这是一个IO操作,因此应该await编辑" 方面使用我的最佳判断?
我有一个异步应用程序,它通过aiohttp提供请求并执行其他异步任务(与数据库交互,处理消息,将请求本身作为HTTP客户端).我想监视事件循环的繁忙程度,也就是说它花费了多少时间来执行代码而不是等待select完成.
有没有办法用标准库事件循环或其他第三方循环(uvloop)来衡量这个?
具体来说,我想要一个持续的百分比衡量饱和度,而不仅仅是这个问题似乎要解决的二元"忙碌" .
我有一些用例,我需要在不关心产生的项目的情况下运行生成器函数.
我不能使它们成为非齐型函数,因为在其他用例中我当然需要屈服值.
我目前正在使用一个简单的自制功能来耗尽发电机.
def exhaust(generator):
for _ in generator:
pass
Run Code Online (Sandbox Code Playgroud)
我想知道,是否有更简单的方法可以做到这一点,我错过了?
编辑 用例:
def create_tables(fail_silently=True):
"""Create the respective tables."""
for model in MODELS:
try:
model.create_table(fail_silently=fail_silently)
except Exception:
yield (False, model)
else:
yield (True, model)
Run Code Online (Sandbox Code Playgroud)
在某些情况下,我关心错误和成功价值......
for success, table in create_tables():
if success:
print('Creation of table {} succeeded.'.format(table))
else:
print('Creation of table {} failed.'.format(table), file=stderr)
Run Code Online (Sandbox Code Playgroud)
...而在某些我只是想"盲目地"运行这个功能:
exhaust(create_tables())
Run Code Online (Sandbox Code Playgroud)