Daphne + Channel v3 Deployment, RuntimeError: no running event loop
Daphne + Channel v3 Deployment, RuntimeError: no running event loop
当我 运行 systemctl start daphne
我得到以下错误
Traceback (most recent call last):
File "/srv/www/portal/bin/daphne", line 8, in <module>
sys.exit(CommandLineInterface.entrypoint())
File "/srv/www/portal/lib/python3.8/site-packages/daphne/cli.py", line 170, in entrypoint
cls().run(sys.argv[1:])
File "/srv/www/portal/lib/python3.8/site-packages/daphne/cli.py", line 232, in run
application = import_by_path(args.application)
File "/srv/www/portal/lib/python3.8/site-packages/daphne/utils.py", line 12, in import_by_path
target = importlib.import_module(module_path)
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 848, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/srv/www/portal/portal/./portal/asgi.py", line 3, in <module>
from channels.routing import ProtocolTypeRouter, URLRouter, ChannelNameRouter
File "/srv/www/portal/lib/python3.8/site-packages/channels/routing.py", line 10, in <module>
from channels.http import AsgiHandler
File "/srv/www/portal/lib/python3.8/site-packages/channels/http.py", line 9, in <module>
from asgiref.sync import async_to_sync, sync_to_async
File "/srv/www/portal/lib/python3.8/site-packages/asgiref/sync.py", line 304, in <module>
class SyncToAsync:
File "/srv/www/portal/lib/python3.8/site-packages/asgiref/sync.py", line 328, in SyncToAsync
loop = get_running_loop()
RuntimeError: no running event loop
服务定义:
[Unit]
Description=daphne service
PartOf=postgresql.service
After=postgresql.service
[Service]
WorkingDirectory=/srv/www/portal/portal/
Environment=JSON_SETTINGS=/srv/www/portal/settings.json
Environment=ASGI_THREADS=10
ExecStart=/srv/www/portal/bin/daphne -b 0.0.0.0 -p 8000 portal.asgi:application
Restart=always
KillSignal=SIGTERM
NotifyAccess=all
[Install]
WantedBy=multi-user.target
这是我的asgi.py
import os
import django
from channels.http import AsgiHandler
from channels.routing import ProtocolTypeRouter, URLRouter, ChannelNameRouter
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "portal.settings")
django.setup()
from api.routing import websocket_urlpatterns
from channels.auth import AuthMiddlewareStack
from api.consumers import MultiplexConsumer
application = ProtocolTypeRouter({
"http": AsgiHandler(),
"websocket": AuthMiddlewareStack(
URLRouter(
websocket_urlpatterns
)
),
})
我在 Python 3.8 上有以下版本:
Django==2.2.24
channels==3.0.4
daphne==3.0.2
asgiref==3.4.1
看起来像一个 channels
问题:https://github.com/django/channels/issues/1713
Same issue here as I am going through the tutorial of Channels v3 at https://channels.readthedocs.io/en/stable/tutorial/index.html. Using asgiref==3.3.4 is okay.
固定到 asgiref==3.3.4
是当前的解决方法
当我 运行 systemctl start daphne
我得到以下错误
Traceback (most recent call last):
File "/srv/www/portal/bin/daphne", line 8, in <module>
sys.exit(CommandLineInterface.entrypoint())
File "/srv/www/portal/lib/python3.8/site-packages/daphne/cli.py", line 170, in entrypoint
cls().run(sys.argv[1:])
File "/srv/www/portal/lib/python3.8/site-packages/daphne/cli.py", line 232, in run
application = import_by_path(args.application)
File "/srv/www/portal/lib/python3.8/site-packages/daphne/utils.py", line 12, in import_by_path
target = importlib.import_module(module_path)
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 848, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/srv/www/portal/portal/./portal/asgi.py", line 3, in <module>
from channels.routing import ProtocolTypeRouter, URLRouter, ChannelNameRouter
File "/srv/www/portal/lib/python3.8/site-packages/channels/routing.py", line 10, in <module>
from channels.http import AsgiHandler
File "/srv/www/portal/lib/python3.8/site-packages/channels/http.py", line 9, in <module>
from asgiref.sync import async_to_sync, sync_to_async
File "/srv/www/portal/lib/python3.8/site-packages/asgiref/sync.py", line 304, in <module>
class SyncToAsync:
File "/srv/www/portal/lib/python3.8/site-packages/asgiref/sync.py", line 328, in SyncToAsync
loop = get_running_loop()
RuntimeError: no running event loop
服务定义:
[Unit]
Description=daphne service
PartOf=postgresql.service
After=postgresql.service
[Service]
WorkingDirectory=/srv/www/portal/portal/
Environment=JSON_SETTINGS=/srv/www/portal/settings.json
Environment=ASGI_THREADS=10
ExecStart=/srv/www/portal/bin/daphne -b 0.0.0.0 -p 8000 portal.asgi:application
Restart=always
KillSignal=SIGTERM
NotifyAccess=all
[Install]
WantedBy=multi-user.target
这是我的asgi.py
import os
import django
from channels.http import AsgiHandler
from channels.routing import ProtocolTypeRouter, URLRouter, ChannelNameRouter
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "portal.settings")
django.setup()
from api.routing import websocket_urlpatterns
from channels.auth import AuthMiddlewareStack
from api.consumers import MultiplexConsumer
application = ProtocolTypeRouter({
"http": AsgiHandler(),
"websocket": AuthMiddlewareStack(
URLRouter(
websocket_urlpatterns
)
),
})
我在 Python 3.8 上有以下版本:
Django==2.2.24
channels==3.0.4
daphne==3.0.2
asgiref==3.4.1
看起来像一个 channels
问题:https://github.com/django/channels/issues/1713
Same issue here as I am going through the tutorial of Channels v3 at https://channels.readthedocs.io/en/stable/tutorial/index.html. Using asgiref==3.3.4 is okay.
固定到 asgiref==3.3.4
是当前的解决方法