【发布时间】:2019-02-14 17:51:27
【问题描述】:
我正在尝试将flask 应用程序移植到quart 以利用asyncio。我认为我目前的方法行不通,因为我的整个函数链都是在没有考虑异步的情况下编写的 - 请考虑以下几点:
def long_running_task(task):
result = some_synchronous_function(task)
return result
@app.route('/<task>', methods=['GET'])
async def do_task(task):
ok = await long_running_task(task)
if ok:
return (ok.result)
else:
return ('Something went wrong')
如果long_running_task 及其整个函数调用链未声明为async,我是否真的从我的路由声明为async 中获得任何好处?
【问题讨论】:
-
不,那根本行不通。你只能
awaitawaitables — 异步函数等。要使用异步的强大功能,你需要将你的 I/O(数据库访问等)转换为异步访问。
标签: python python-asyncio quart