У меня проблема с каналами django. Приложение Django отлично работает с WSGI для HTTP-запросов. Я попытался выполнить миграцию на каналы, чтобы разрешить запросы на веб-рассылку, и выясняется, что после установки каналов и запуска ASGI (дафни) и рабочего сервера сервер отвечает на ошибку 503, а браузер отображает ошибку 504 (тайм-аут) для http запросы, которые ранее работали (например, страница администратора). Я прочитал все учебники, которые мог найти, и я не понимаю, в чем проблема. Более того, если я запускаю «runerver», он работает нормально.Django каналы с дафной и работником
У меня есть Nginx перед приложением (на отдельном сервере), работая как прокси-сервер и loadbalancer. Я использую Django 1.9.5 с asgi-redis> = 0.10.0, channels> = 0.17.0 и daphne> = 0.15.0. Файлы wsgi.py и asgi.py находятся в одной папке. Редис работает.
Команда, которую я ранее используя с WSGI (и который до сих пор работает, если вернуться к нему) является: uwsgi --http :8000 --master --enable-threads --module Cats.wsgi
Команда, которая работает с использованием runserver является: python manage.py runserver 0.0.0.0:8000
Команды, которые не для запросов, которые работают с 2 другими командами являются: daphne -b 0.0.0.0 -p 8000 Cats.asgi:channel_layer python manage.py runworker
Дополнительная информация: Я добавил «каналы» в установленных приложений (в settings.py)
другой settings.py отношение информация
CHANNEL_LAYERS = {
"default": {
"BACKEND": "asgi_redis.RedisChannelLayer",
"ROUTING": "Cats.routing.app_routing",
"CONFIG": {
"hosts": [(os.environ['REDIS_HOST'], 6379)],
},
},
}
Кошки/routing.py
from channels.routing import route, include
from main.routing import routing as main_routing
app_routing = [
include(main_routing, path=r"^/ws/main"),
]
главная/routing.py
from channels.routing import route, include
http_routing = [
]
stream_routing = [
route('websocket.receive', 'main.consumers.ws_echo'), #just for test once it will work
]
routing = [
include(stream_routing),
include(http_routing),
]
основные/потребители. py
def ws_echo(message):
message.reply_channel.send({
'text': message.content['text'],
})
#this consumer is just for test once it will work
Любая идея, что может быть неправильным? Вся помощь очень ценится! Ty
EDIT: Я попробовал новую вещь:
python manage.py runserver 0.0.0.0:8000 --noworker
python manage.py runworker
И это не работает, в то время как python manage.py runserver 0.0.0.0:8000
работал ...
Любая идея, что может помочь?
Отредактировано мое сообщение с новой попыткой отделить работника от «сервера-запуска». Он тоже не работает – Yom86
Вы проверили redis, если daphne действительно отправляет запрос в очередь? – r00m
Разве вы решили это тем временем? У нас есть каналы, работающие на производстве, но когда я пытаюсь развернуть тот же проект на нашем dev-сервере, я получаю эту проблему. Рабочий получает запрос, но он останавливается. daphne (runningerver) возвращает 503, а в браузере я получаю 504. – ThaJay