При использовании runserver в django запускаются все скрипты, но при использовании daphne для производства запускается только asgi.py
У меня есть проблема, когда я настраиваю django для производства
по какой-то причине, когда я использую runserver
, он проверяет все скрипты и запускает их совершенно нормально
но когда я запускаю его с помощью daphne
, он игнорирует все и сразу запускает сервер
Вот структура моего проекта
.
├── Dockerfile
├── chat
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── graph.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0002_alter_langchainhistorysession_id_and_more.py
│ │ ├── 0003_rename_collection_id_langchainembedding_collection.py
│ │ ├── 0004_alter_langchainembedding_id.py
│ │ ├── 0005_alter_langchainhistorysession_account_id.py
│ │ ├── 0006_alter_langchainhistorysession_chat_history.py
│ │ ├── 0007_langchainhistorysession_enabled.py
│ │ ├── __init__.py
│ ├── models.py
│ ├── permissions.py
│ ├── serializers.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── chatbot
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
├── data_worker
│ ├── __init__.py
│ └── utils.py
├── db_init.py
├── docker-compose.yml
├── graph.png
├── gunicorn_conf.py
├── manage.py
├── market_data.json
├── markets.csv
├── nginx
│ └── nginx.conf
├── prompt.txt
├── requirements.txt
└── wait-for-it.sh
asgi.py
"""
ASGI config for chatbot project.
It exposes the ASGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/5.0/howto/deployment/asgi/
"""
import os
from django.core.asgi import get_asgi_application
import socketio
import json
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'chatbot.settings')
cors_allowed_origins = list(json.loads(os.getenv("CORS_ALLOWED_ORIGINS")))
django_asgi_app = get_asgi_application()
sio = socketio.AsyncServer(async_mode='asgi', cors_allowed_origins=cors_allowed_origins)
socketio_app = socketio.ASGIApp(sio, django_asgi_app)
application = socketio_app
Итак, я разработал бэкэнд, используя py manage.py runserver
, и предполагаемое поведение заключается в том, что он запускает graph.py
, который использует data_worker
для получения некоторых данных, связанных с приложением, а затем запускает приложение
2024-06-04 10:03:07,415 [INFO ] [10944] Fetching market info
2024-06-04 10:03:07,651 [INFO ] [10944] Fetched market info
2024-06-04 10:03:08,295 [INFO ] [10944] Last news id: (1164386,)
2024-06-04 10:03:08,295 [INFO ] [10944] Total news fetched: 0
2024-06-04 10:03:08,295 [INFO ] [10944] No new news to add
2024-06-04 10:03:14,072 [INFO ] [10944] Fetched markets data in 5 seconds
2024-06-04 10:03:14,942 [INFO ] [10944] Market data fetching process finished
2024-06-04 10:03:16,285 [INFO ] [10944] HTTP Request: POST https://api.openai.com/v1/embeddings "HTTP/1.1 200 OK"
2024-06-04 10:03:16,461 [INFO ] [10944] None
System check identified no issues (0 silenced).
June 04, 2024 - 10:03:17
Django version 5.0.6, using settings 'chatbot.settings'
Starting ASGI/Daphne version 4.1.2 development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
2024-06-04 10:03:17,031 [INFO ] [10944] HTTP/2 support not enabled (install the http2 and tls Twisted extras)
2024-06-04 10:03:17,032 [INFO ] [10944] Configuring endpoint tcp:port=8000:interface=127.0.0.1
2024-06-04 10:03:17,033 [INFO ] [10944] Listening on TCP address 127.0.0.1:8000
теперь, когда я запускаю daphne chatbot.asgi:application
, он игнорирует все и сразу запускает сервер, как показано ниже
2024-06-04 10:04:33,146 INFO Starting server at tcp:port=8000:interface=127.0.0.1
2024-06-04 10:04:33,147 INFO HTTP/2 support not enabled (install the http2 and tls Twisted extras)
2024-06-04 10:04:33,148 INFO Configuring endpoint tcp:port=8000:interface=127.0.0.1
2024-06-04 10:04:33,148 INFO Listening on TCP address 127.0.0.1:8000
Почему поведение в runserver
и daphne
совершенно разное?