2

我在连接到我的网站时收到此错误,因为它正在运行频道。

2018-03-25 20:59:19,049 - ERROR - http_protocol - Traceback (most recent call last):
  File "/home/.virtualenvs/blog/lib/python3.5/site-packages/daphne/http_protocol.py", line 158, in process
"server": self.server_addr,
  File "/home/.virtualenvs/blog/lib/python3.5/site-packages/daphne/server.py", line 184, in create_application
application_instance = self.application(scope=scope)
  File "/home/.virtualenvs/blog/lib/python3.5/site-packages/channels/staticfiles.py", line 42, in __call__
return self.application(scope)
TypeError: 'dict' object is not callable

我不知道从哪里开始解码错误。频道服务器设法以此开始

Starting ASGI/Channels development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
2018-03-25 20:57:45,400 - INFO - server - HTTP/2 support not enabled (install the http2 and tls Twisted extras)
2018-03-25 20:57:45,400 - INFO - server - Configuring endpoint 
tcp:port=8000:interface=0.0.0.0
2018-03-25 20:57:45,401 - INFO - server - Listening on TCP address 0.0.0.0:8000
4

2 回答 2

1

不确定它是否仍然相关,但为了让其他人看到,我今天想通了。

在升级 Django 配置新环境时,我创建了一个 asgi.py 文件

 application = 'whatever.module.application' 

在我的情况下,错误消息是“str”对象不可调用。

所以我做了一些思考(因为找不到这个问题的直接答案,我几乎把它贴在堆栈上;))并认为应用程序变量需要是实际的路由器实例。

在我的情况下,我使用协议路由器,因为我需要 websockets 和普通 HTTP。查看前面的代码,http_protocol.py 在内部处理它(“# BORING old HTTP”是其中的一条评论。哈哈。)

application = ProtocolTypeRouter({
    "websocket": urls.urlpatterns
}) 

然后 urls.urlpatterns 可能包含如下内容:

urlpatterns = [
  url(r'^', include('cars.urls', namespace='cars')),
  url(r'^help/', include('help.urls', namespace='help'))
]

我猜你的问题是直接使用上面 urlpatterns 中类似的东西

...
application = []
...

信任可以帮助遇到同样问题的人。

于 2019-01-29T02:09:41.510 回答
1

我有一个类似的问题导致 daphne 服务器在开发中崩溃。

File "C:\Users\sjsui\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\handlers[base.py](base.py)", line 39, 
in load_middleware mw_instance = middleware(handler) 
TypeError: 'module' object is not callable

我意识到在从 pip 安装频道包的过程中,我不小心添加了一个错误的中间件settings.MIDDLEWARE

在此处输入图像描述

删除此行后django.middleware,我能够再次启动开发服务器。

于 2018-04-24T00:56:27.653 回答