Почему он не может найти url
Я пытаюсь настроить каналы для нашего приложения, но мне кажется, что у меня что-то не получается.
Я попробовал следовать руководству youtuber's tutorial наряду с официальным. Все шло хорошо, пока я не сделал первый запрос ws, который привел к следующей ошибке
backend:
Not Found: /ws/live
frontend:
VM160:4 WebSocket connection to 'ws://localhost:83/ws/live/' failed:
Из-за других зависимостей, я должен использовать Django 2.2, поэтому я думаю, что я где-то напортачил, но не знаю где.
вот код
asgi.py:
import os
import django
from channels.http import AsgiHandler
from channels.routing import ProtocolTypeRouter
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import homepage.routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
django.setup()
application = ProtocolTypeRouter({
"http": AsgiHandler(),
"websocket": AuthMiddlewareStack(
URLRouter(
homepage.routing.websocket_urlpatterns
)
),
})
routing.py
from django.urls import path
from .consumers import WSConsumer
websocket_urlpatterns = [
path('ws/live/', WSConsumer.as_asgi())
]
consumers.py
import json
from random import randint
from time import sleep
from channels.generic.websocket import WebsocketConsumer
class WSConsumer(WebsocketConsumer):
def connect(self):
self.accept
print('accepted')
def disconnect(self, close_code):
print('closed')
docker-compose.yml
version: "3"
networks:
data-net:
driver: bridge
http:
driver: bridge
backend:
driver: bridge
services:
db-0:
image: "bitnami/postgresql-repmgr:11"
env_file:
- ".env"
restart: unless-stopped
shm_size: "20gb"
networks:
- data-net
volumes:
- "postgresql_data:/bitnami/postgresql"
web:
build: .
command: bash -c "python manage.py migrate && python manage.py dbr && gunicorn myapp.asgi:application --timeout 60 -w 20 -b :8000 --reload -k uvicorn.workers.UvicornWorker"
container_name: myapp
volumes:
- .:/app
expose:
- "8000"
depends_on:
- db-0
env_file:
- ".env"
links:
- db-0:db-0
- redis:redis
networks:
- data-net
- http
- backend
restart: unless-stopped
shm_size: "20gb"
celery:
restart: unless-stopped
build: .
env_file:
- ".env"
command: bash -c "celery -A celery_tasks worker -l info"
volumes:
- .:/app
depends_on:
- db-0
- beat
links:
- db-0:db-0
- redis:redis
- beat:beat
networks:
- data-net
- backend
beat:
restart: unless-stopped
build: .
env_file:
- ".env"
command: bash -c "celery -A celery_tasks beat -l info"
volumes:
- .:/app
depends_on:
- redis
links:
- redis:redis
networks:
- backend
- data-net
redis:
restart: unless-stopped
image: redis:latest
expose:
- "6379"
networks:
- backend
nginx:
restart: unless-stopped
build: ./nginx/
ports:
- "84:443"
- "83:80"
volumes:
- .:/app
links:
- web:web
networks:
- http
volumes:
datael:
driver: local
postgresql_data:
driver: local
Структура проекта:
├── docker-compose.yml
├── Dockerfile
├── homepage
│ ├── admin.py
│ ├── aggregators.py
│ ├── apps.py
│ ├── consumers.py
│ ├── forms.py
│ ├── helpers.py
│ ├── __init__.py
│ ├── models.py
│ ├── routing.py
│ ├── tasks.py
│ ├── templatetags
│ ├── tests
│ ├── urls.py
│ └── views.py
├── Makefile
├── manage.py
├── nginx
│ ├── Dockerfile
│ └── sites-enabled
│ └── django.conf
├── pull_request_template.md
├── pylama.ini
├── pytest.ini
├── static
├── tasks.log
├── templates
└── myapp
├── asgi.py
├── config.py
├── __init__.py
├── __pycache__
├── settings.py
├── slack_block.py
├── urls.py
└── wsgi.py
urls.py: