带有Daphne的Django Channel 2在Heroku上启动时崩溃

我使用heroku上的Channels 2创建了一个django应用程序,但是它以503错误代码开头崩溃。

2020-04-07T10:05:35.226253+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=www.mysite.com request_id=317bfbe6-9055-4957-9fbb-8190616c3964 fwd="" dyno= connect= service= status=503 bytes= protocol=https

Procfile

release: python manage.py migrate
web : daphne myproject.asgi:application --port $PORT --bind 0.0.0.0 -v2 
worker: python manage.py runworker channels -v2

settings.py

ASGI_APPLICATION = 'myproject.routing.application'
# Channels
    CHANNEL_LAYERS = {
    "default": {
         'BACKEND': 'channels_redis.core.RedisChannelLayer',"CONFIG": {
            "hosts": [os.environ.get('REDIS_URL','redis://localhost:6379')],},}

asgi.py

import os
import django
from channels.routing import get_default_application

os.environ.setdefault("DJANGO_SETTINGS_MODULE","myproject.settings")
django.setup()
application = get_default_application()
wanlili3646 回答:带有Daphne的Django Channel 2在Heroku上启动时崩溃

您是否在heroku中创建了流程Web的实例? 您可以在命令行中执行此操作:heroku ps:scale worker=1

将Procfile中的工作程序赋予为:

worker: python manage.py runworker channels --settings=<project-name>.settings -v2
,

您的Procfile应该改为:

release: python3 manage.py makemigrations && python3 manage.py migrate
web: daphne domecode.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: python3 manage.py runworker channel_layer -v2

channel_layer而不是channels。为什么?好吧,再次查看您的设置,您已经在其中声明了CHANNEL_LAYER,并在Docker的Redis实例上本地运行。但是,在部署时,您不能在Docker上运行它(我的意思是,从技术上讲,您可以在Digital Ocean或AWS上使用Docker Swarms,但不确定它在Heroku上如何工作),因此您需要将其更改为channel_layer

本文链接:https://www.f2er.com/2494983.html

大家都在问