python - Python异步函数永远不会被等待
问题描述
我在python的异步框架FastAPI中实现了一个异步函数
该函数如下所示:
async def func2(num):
time.sleep(3)
return num
async def func1():
text = await func2(5)
print(text)
print('inside func1')
async def my_async_func():
print('start')
await func1()
print('finish')
在这里,当我执行时,my_async_func
我期望异步行为和值被打印为
start
finish
inside func1
5
但它同步打印为
start
5
inside func1
finish
如何异步处理并发操作和协程实现?
解决方案
当几个独立的(ish)任务在事件循环中轮流执行时会出现异步行为,但在这里您只运行 1 个任务my_async_func
。my_async_func
然后调用func1
,然后调用func2
;您的程序正在按照您编写的顺序执行。
这个函数调用链实际上不应该被称为同步的,因为只有一个独立的任务。my_async_func
实际上,如果您将 2 个任务排队,您可以看到异步行为。
推荐阅读
- sql - 从第二个表中为一组用户选择 SQL 表中均匀分布的记录?
- javascript - jsPDF无法正确打印
- php - 如何在用户注销后立即暂停用户而不是
- huawei-mobile-services - Huawei AppGallery Connect API 是否可以用于特定项目?
- c - OpenGL Meshing 比不 Meshing 慢
- java - 如何将字母频率存储在数组中
- node.js - 当我使用 mongoose 从 mongodb 获取项目时,有没有办法删除 mongoose.Schema.ObjectId?
- javascript - 我想用一个对象来帮助用 Chartjs 创建一个图表
- ansible - 在ansible中使用json_query组合属性值
- javascript - 如何让这个javascript跳过表中的第一个tr?