pycharm中使用调试模式运行 uvicorn.run(app)报错TypeError: _patch_asyncio.locals.run() got an unexpected keywor解决

news/2025/9/26 14:37:59/文章来源:https://www.cnblogs.com/T-Ajie/p/19110604

问题出现和解决过程

近期更新了pycharm版本从2023.01.06升级了2025.2.1版本,但是在升级之后,使用pycharm的调试模式运行uvicorn.run(app)报错如下:image
产生过以下几个可能性猜测

  1. fastapiuvicorn版本不匹配的问题
    但是根据目前已经都是按照最新的版本已经更新了,还是不行

  2. fastapi初始化内容中存在其他未发现的异步操作引发
    所以自己完全新建了一个最简的fastapi应用,运行结果仍然是报错
    image

  3. 怀疑是pycharm调试模式运行的问题
    怀疑原因如下:

  • uvicorn.run执行的reload参数为true时,能够正常调试运行,但是不设置或者设置为false不能运行
  • 已经尝试过按照最简fastapi应用运行,但是还是报错
  • 已经尝试在控制台能够正常运行

通过上述尝试和排查基本确定是由于pycharm的版本原因导致,通过pycharm配置已解决

与deepseek的确定

你在PyCharm调试模式下遇到的 TypeError: _patch_asyncio.<locals>.run() got an unexpected keyword argument 'loop_factory' 错误,通常与PyCharm调试器和异步事件循环的交互方式有关。下面我来帮你分析原因并提供解决方案。

🔍 问题根源

这个错误的核心原因通常是:

  1. PyCharm异步调试器冲突:PyCharm 2023.3.3及更高版本引入并默认启用了"异步IO调试器支持"的实验性功能。该功能旨在改进对Python异步代码的调试体验,但可能会与uvicorn服务器的事件循环设置产生冲突,导致在传递参数(如loop_factory)时出现异常。
  2. 事件循环环境差异:当你设置 reload=True 时,uvicorn会启动一个子进程来运行应用,这个子进程拥有一个干净的事件循环环境,从而可能避开了主进程中的环境冲突。而当 reload=False 时,uvicorn尝试在当前进程(即PyCharm调试器控制下的进程)的事件循环中启动服务器,此时PyCharm调试器对事件循环的干预就可能引发参数不匹配的错误。

🛠️ 解决方案

你可以尝试以下几种方法,建议从第一种开始:

  1. 禁用PyCharm的实验性异步调试支持
    这是最直接的解决方法,通过关闭可能导致冲突的功能来解决问题。

    • 在PyCharm中,连续按两下Shift键,打开"Search Everywhere"对话框。
    • 输入Registry...(包含三个点)并回车。
    • 在打开的注册表窗口中,找到并取消勾选python.debug.asyncio.repl选项。
    • 关闭注册表窗口,并重新启动调试会话。
      image
      image
  2. 使用命令行启动替代PyCharm运行配置
    绕过PyCharm的调试器,直接使用终端命令启动uvicorn,可以确保服务器在一个干净的环境中启动。

    • 在PyCharm中打开终端(Terminal)。
    • 使用以下命令启动你的应用(请根据你的实际文件路径调整app.main:app):
      uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
      
    • 这种方式通常能有效避免由IDE运行配置引发的问题。
  3. 调整代码中的事件循环配置
    如果问题与事件循环的特定实现(如uvloop)有关,可以尝试强制使用标准的asyncio事件循环。

    • 在你的启动脚本中(通常是包含uvicorn.run的那个文件),进行如下修改:
      import uvicorn
      import asyncio# 在uvicorn.run之前,设置使用标准asyncio事件循环
      asyncio.set_event_loop_policy(asyncio.DefaultEventLoopPolicy())if __name__ == "__main__":uvicorn.run("app.main:app",host="0.0.0.0",port=8000,reload=False,  # 即使reload为False也尝试解决loop="asyncio"  # 明确指定使用asyncio)
      
  4. 尝试程序化启动方式
    使用uvicorn.ServerConfig类来启动,有时能提供更好的控制。

    • 将你的启动代码修改为:
      import uvicornif __name__ == "__main__":config = uvicorn.Config("app.main:app", host="0.0.0.0", port=8000, reload=False)server = uvicorn.Server(config)server.run()
      

💎 总结

这个错误通常源于PyCharm调试环境与uvicorn事件循环设置之间的交互问题。大多数情况下,禁用PyCharm的异步调试功能改用命令行启动就能解决。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916803.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交换机命令

1、检查区域汇聚设备接入端口,在线端口及描述 检查在线端口命令 show int status 检查端口描述命令 show int description 登陆方式,CRT超级终端 telnet IP 地址,用户名为admin 密码见表 show run 查看现有配置 …

2025.9.25

完成了MySQL学习,开始Mybatis,Spring,SpringMVC,争取国庆前把这三个学完

空间三维坐标变换(转)-四元数-RowPitchYaw角互换

空间三维坐标变换(转)-四元数-RowPitchYaw角互换 1、空间三维坐标系的平移(矢量加法获取) 解题思路:根据适量的加法即可求解= + 2、空间三维坐标系的旋转(旋转矩阵) 关键是:姿态矩阵(或称之为“旋转矩阵”)…

易基因:Cell Rep:华农任文凯团队利用ChIP-seq及多组学解析过敏性疾病的关键调控机制|项目文章

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 近日,华南农业大学动物科学学院Yaoyao Xia、宾朋等为共同第一作者,任文凯教授为唯一通讯作者在《Cell Reports》期刊上发表题为“Glycerophospholi…

为什么做免费视频网站网站内容页相关性怎么做

目前&#xff0c;市场上的芯片主要包括指令集架构和数据流架构两种实现方式。指令集架构主要包括X86架构、ARM架构、精简指令集运算RISC-V开源架构&#xff0c;以及SIMD架构。总体来说&#xff0c;四者都属于传统的通用指令集架构。传统的指令集架构采用冯诺依曼计算方式&#…

网站设计自学seo的特点是什么

一、前言 最近想实现AVM拼接&#xff0c;看了不少博客和论文&#xff0c;不过比较愚钝&#xff0c;一直没能很好理解原理&#xff0c;尤其是怎么在实现时把下文式1与式2中Z1和Z2消除的&#xff0c;所以严谨的推导了一下对应的公式&#xff0c;如有不对&#xff0c;水平有限&am…

详细介绍:STL 容器 --- list 类

详细介绍:STL 容器 --- list 类pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

Idea代码回退已经push到远段仓库的代码分支到指定提交记录

步骤一:先打开git对应分支提交记录,回退本地代码到指定commitId。等待提交记录删除。 步骤二:找到要回退的commitId,并清除远端git提交记录Soft:仅移动分支指针,保留工作目录和暂存区的所有修改。相当于撤销了提…

开写第一篇

我的知识能力都是祂所赐的,若不靠着祂我什么也不能做 开写第一篇博客了,之前笔记也记了不少,但是没有正经的整理过,现在开始陆续整理上传。以前总是网上看别人写的技术博客,学了不少东西,希望我自己写的也能帮助…

重庆家居网站制作公司傻瓜建网站

java处理ip的工具类&#xff0c;包括把long类型的Ip转为一般Ip类型、把xx.xx.xx.xx类型的转为long类型、根据掩码位获取掩码、根据 ip/掩码位 计算IP段的起始IP、根据 ip/掩码位 计算IP段的终止IP等方法&#xff0c;可以直接使用&#xff01;package com.hh.test;import java.u…

大模型function calling多轮对话开发示例

OpenAI接口支持的function calling使得大模型能够方便的集成外部能力和数据,是实现agent(智能体)的重要基础,能让LLM和各种功能集成,从而解决复杂的问题。 对于兼容openai接口的大模型如阿里的通义千问,也是可以使…

ViTables 安装与 HDF5 数据可视化全指南 - 实践

ViTables 安装与 HDF5 数据可视化全指南 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

elementuiplus修改el-checked多选框样式

elementuiplus修改el-checked多选框样式废话不多说直接上代码: 1、给check加类名 2、css样式:/deep/.image-checkbox .el-checkbox__input .el-checkbox__inner {/* 隐藏原生复选框 */display: none; }/deep/.image…

怎样用dw做 网站首页网站关键词排行查询

首先&#xff0c;对于零基础的想学习C的同学&#xff0c;我想要你们先明白一件事&#xff1a;C是一门极为复杂且难以掌握的编程语言。因此推荐在学习C之前可以先去学习C语言&#xff0c;在拥有了一定的知识储备和编程能力后再学习C会更加的高效和相对轻松。 下面推荐从三个方面…

宜昌营销网站建设ppt模板免费下载素材医学类

一&#xff0c;dns与域名 网络基于tcp/ip协议进行通信和连接的&#xff0c;其中主机以ip地址做固定的地址标识&#xff0c;用以区分用户和计算机。ip地址是由32位二进制数组成&#xff0c;不方便记忆。为了方便记忆&#xff0c;采用了域名。但是网络通信的唯一标识是ip地址&…

DataGrip格式化SQL模板

个人使用比较好的,各位可以根据自己的使用习惯自行调整。 点击下载

靶向肽Dcpep - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

做一个网站完整的网页app软件开发sh365

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 例如&#xff1a;第一章 Python 机器学习入门之pandas的使用 文章目录 系列文章目录前言一、空间范围中点位数量的快速统计算法1.引入库2.百度地图基于范围的搜索 Java 前…

企业网站制作机构排名wordpress html音乐

基于STM32单片机多功能智能小车功能说明&#xff1a; TFTLCD显示按键LVGL&#xff08;菜单、小车工作模式选择、设置&#xff09;手机蓝牙遥控模式射频手柄遥控模式5路红外寻迹模式超声波避障模式语音播报低功耗控制 硬件原理图设计 单片机最小系统&#xff1a; 由于要使用…