You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django报Cannot import ASGI_APPLICATION module 'asgi'如何解决

报错根因

ASGI_APPLICATION配置的模块导入路径错误。你创建的asgi.py存放在项目包myproject目录下,与settings.py、wsgi.py同层级,但配置中写的ASGI_APPLICATION = 'asgi.application'会让Python直接从项目根目录查找顶层asgi模块,找不到对应模块就会抛出你看到的导入错误。

修复方法
  • 修改settings.py中的ASGI应用路径,替换原有错误配置:
# 错误配置
# ASGI_APPLICATION = 'asgi.application'
# 正确配置,和WSGI路径规则一致,带上项目包名
ASGI_APPLICATION = 'myproject.asgi.application'
  • 确认asgi.py存放位置正确:必须放在myproject项目包目录下(和settings.py同级),不要直接放在项目最外层根目录。
  • 恢复原本注释掉的WSGI配置,不要删除,后续WSGI部署仍需使用:
WSGI_APPLICATION = 'myproject.wsgi.application'
  • 如果你后续要接入WebSocket功能,需要补全asgi.py的路由配置,参考写法如下:
import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
# 导入你自己chat应用的websocket路由
import chat.routing

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    "websocket": AuthMiddlewareStack(
        URLRouter(
            chat.routing.websocket_urlpatterns
        )
    ),
})
  • 完成以上修改后重启开发服务器,即可正常识别ASGI应用,不会再抛出模块导入错误。
补充说明

你当前使用的是Django 3.0 + Channels 3.0.4的版本组合,和Channels 2版本存在少量API差异,不要完全照搬Channels 2的旧教程配置,避免出现其他兼容性问题。

内容的提问来源于stack exchange,提问作者Adarsh kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:33:33