Python Django通道自定义身份验证关闭旧连接同步仅限操作异常
我尝试从实现CustomAuthentication,但每次尝试建立websocket连接时都会出现SynchronousOnlyOperation异常。我错过了什么 我试图使用Python Django通道自定义身份验证关闭旧连接同步仅限操作异常,python,django,authentication,websocket,channels,Python,Django,Authentication,Websocket,Channels,我尝试从实现CustomAuthentication,但每次尝试建立websocket连接时都会出现SynchronousOnlyOperation异常。我错过了什么 我试图使用channels.db中的database\u sync\u to \u async,但是,即使使用wait,我仍然坚持使用一个corroutine对象作为返回值。也许有人知道我做错了什么 软件包版本: Python 3.6.9 Django 3.0.2 ASGI/通道2.4.0 达芙妮2.4.1 asgiref 3.
channels.db中的database\u sync\u to \u async
,但是,即使使用wait
,我仍然坚持使用一个corroutine对象作为返回值。也许有人知道我做错了什么
软件包版本:
- Python 3.6.9
- Django 3.0.2
- ASGI/通道2.4.0
- 达芙妮2.4.1
- asgiref 3.2.3
- 通道redis 2.4.1
数据库:
- sqlite3
执行:
python3 manage.py运行服务器
文件:
设置.py
[…]
ASGI_应用程序='backend.routing.APPLICATION'
通道_层={
“默认值”:{
“后端”:“channels\u redis.core.RedisChannelLayer”,
“配置”:{
'主机':[('127.0.0.1',6379)]
},
},
}
[...]
routing.py(应用程序)
from channels.routing导入协议类型路由器,URLRouter
导入backend.api.routing作为路由
从backend.api.auth导入ticketuthmiddleware
应用程序=协议类型路由器({
“websocket”:ticketuthmiddleware(
URLRouter(
route.websocket\urlpatterns
)
)
})
routing.py(url)
从django.url导入重新路径
从backend.api.consumers导入OwnConsumer
websocket\u urlpatterns=[
重新设置路径(r'',所有者用户)
]
消费者.py
从channels.generic.websocket导入WebsocketConsumer
导入json
类别OwnConsumer(WebsocketConsumer):
def连接(自):
self.accept()
def断开连接(自身、关闭_代码):
打印(“断开”,关闭\u代码)
auth.py
从django.db导入关闭旧连接
类ticketuthmiddleware:
定义初始化(自,内部):
self.inner=内部
定义调用(自身,范围):
close_old_connections()#目前这是一个有文档记录的问题,显然Django 3:
(解决方案在里面)。目前这是一个记录在案的问题,显然Django 3:
(解决方案在里面)。您正在使用哪个数据库?我正在使用sqlite3您正在使用哪个数据库?我正在使用sqlite3