小编Ecl*_*lar的帖子

如何让 Django 3、channels 和 uvicorn 协同工作

我一直在尝试从 daphne 切换到 uvicorn 进行使用 django 3 和通道的项目的生产。我在加载频道的经典 asgi 文件时遇到错误。由于同步调用 django.setup 或 get_application,我无法使用它。我尝试使用sync_to_async 调用调整此文件,但没有成功。有人设法让它发挥作用吗?

原始asgi.py

代码

import os
import django
from channels.routing import get_default_application


os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings")

django.setup()
application = get_default_application()
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪

Traceback (most recent call last):                                                                                                                                              
File "/usr/local/lib/python3.8/multiprocessing/process.py", line 315, in _bootstrap                                                                                           
  self.run()                                                                                                                                                                  
File "/usr/local/lib/python3.8/multiprocessing/process.py", line 108, in run                                                                                                  
  self._target(*self._args, **self._kwargs)                                                                                                                                   
File "/var/www/.cache/pypoetry/virtualenvs/project-4ffvdAoS-py3.8/lib/python3.8/site-packages/uvicorn/subprocess.py", line 61, in subprocess_started                           
  target(sockets=sockets)                                                                                                                                                     
File "/var/www/.cache/pypoetry/virtualenvs/project-4ffvdAoS-py3.8/lib/python3.8/site-packages/uvicorn/main.py", line 407, in run                                               
  loop.run_until_complete(self.serve(sockets=sockets))                                                                                                                        
File "/usr/local/lib/python3.8/asyncio/base_events.py", line 612, in run_until_complete                                                                                       
  return future.result()                                                                                                                                                      
File "/var/www/.cache/pypoetry/virtualenvs/project-4ffvdAoS-py3.8/lib/python3.8/site-packages/uvicorn/main.py", line 414, in serve                                             
  config.load() …
Run Code Online (Sandbox Code Playgroud)

django django-channels django-3.0 uvicorn

5
推荐指数
1
解决办法
4998
查看次数

标签 统计

django ×1

django-3.0 ×1

django-channels ×1

uvicorn ×1