asyncio.run()只能调用一次,因其内部创建并关闭事件循环;await后必须是真正的awaitable对象,如asyncio.sleep而非time.sleep;create_task()实现并发调度,而直接await则顺序执行。这标题看着像教程,实际不是入门向内容——
asyncio 的核心原理和实战案例,真正卡住人的从来不是语法,而是事件循环怎么调度、协程对象怎么挂起、await 底层怎么触发状态切换。
因为 asyncio.run() 内部会创建新事件循环、运行完就关闭。再调用就会报 RuntimeError: asyncio.run() cannot be called from a running event loop。
asyncio 的环境中反复执行 asyncio.run(main())
asyncio.get_event_loop().run_until_complete(main())(注意:Python 3.10+ 推荐用 asyncio.new_event_loop() + set_event_loop() 显式管理)asyncio.run() 隐含了 loop.close(),关闭后无法复用比如 await time.sleep(1) 看似合理,实则阻塞整个事件循环——time.sleep 是同步阻塞函数,根本不是 awaitable。
await asyncio.sleep(1)
requests 没有异步支持,直接 await requests.get(...) 会报 TypeError: object Response can't be used in 'await' expression
aiomysql、asyncpg、motor 这类原生 async 驱动,不能套壳 await loop.run_in_executor(..., sqlite3.connect)(虽可行但掩盖问题)关键在于调度时机:await coro 是立即进入并阻塞等待完成;asyncio.create_task(coro) 把协程注册进事件循环,当前函数可继续往下走,下次循环 tick 才开始执行。
import asyncio
async def say(what, delay):
await asyncio.
sleep(delay)
print(what)
async def main():
task1 = asyncio.create_task(say("hello", 2))
task2 = asyncio.create_task(say("world", 1))
print("tasks created")
await task1
await task2
asyncio.run(main())
输出顺序是:tasks created → world → hello。如果写成 await say("hello", 2),那 say("world", 1) 就得等 2 秒后才开始。
没实现这些方法的对象,哪怕加了 async 前缀,也不能用于 async with。常见坑:
aiofiles.open() 可以,open() 不行aiomysql.Pool 支持 async with pool.acquire(),但自己写的普通上下文管理器加 async 不等于自动支持async for line in file: 要求 file 实现 __aiter__,不是所有文件对象都满足(比如 io.StringIO 就不行)async def,是理解「谁在什么时候让出控制权」「事件循环在哪一刻把哪个协程切回来」。调试时多打 print(f"at {inspect.currentframe().f_lineno}"),比看文档更快定位挂起点。
# mysql
# python
# ai
# 区别
# 为什么
相关文章:
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
制作农业网站的软件,比较好的农业网站推荐一下?
已有域名如何免费搭建网站?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
昆明高端网站制作公司,昆明公租房申请网上登录入口?
如何在腾讯云免费申请建站?
建站主机功能解析:服务器选择与快速搭建指南
,制作一个手机app网站要多少钱?
如何用虚拟主机快速搭建网站?详细步骤解析
如何用搬瓦工VPS快速搭建个人网站?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
制作网站的公司有哪些,做一个公司网站要多少钱?
在线制作视频网站免费,都有哪些好的动漫网站?
c# Task.ConfigureAwait(true) 在什么场景下是必须的
深圳网站制作的公司有哪些,dido官方网站?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
如何正确选择百度移动适配建站域名?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何通过远程VPS快速搭建个人网站?
如何零基础开发自助建站系统?完整教程解析
建站之星×万网:智能建站系统+自助建站平台一键生成
如何确认建站备案号应放置的具体位置?
logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?
建站主机选购指南与交易推荐:核心配置解析
如何用好域名打造高点击率的自主建站?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
内部网站制作流程,如何建立公司内部网站?
如何快速搭建高效简练网站?
常州自助建站费用包含哪些项目?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
C++中引用和指针有什么区别?(代码说明)
如何做静态网页,sublimetext3.0制作静态网页?
制作旅游网站html,怎样注册旅游网站?
如何挑选最适合建站的高性能VPS主机?
如何快速搭建个人网站并优化SEO?
如何在阿里云ECS服务器部署织梦CMS网站?
如何在IIS中新建站点并配置端口与物理路径?
山东网站制作公司有哪些,山东大源集团官网?
香港服务器租用费用高吗?如何避免常见误区?
微信推文制作网站有哪些,怎么做微信推文,急?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
孙琪峥织梦建站教程如何优化数据库安全?
安徽网站建设与外贸建站服务专业定制方案
*请认真填写需求信息,我们会在24小时内与您取得联系。