Здравствуйте, я новичок в мире Python, поэтому я все еще пытаюсь понять осторожность при работе с ASGI. Я прочитал несколько руководств и документации, а также посмотрел несколько видео на YouTube. Однако в некоторых моментах я не был уверен.
У меня есть небольшое серверное приложение, использующее Django + Django Rest Framework.
Мой код очень тривиален и состоит из наиболее распространенных концепций фреймворка: представлений, сериализаторов, моделей, URL-адресов и т. Д. Кроме того, я использую реляционную базу данных.
Моя среда такова:
- Python 3.8
- Джанго 3
- Фреймворк Django Rest 3.11
Теперь мне нужно добавить поддержку WebSockets, и я выполнил базовую настройку, описанную в руководстве Django Channels:
- Я установил Django Channels 2.4.0 (Daphene 2.5.0)
- Добавлены "каналы" в INSTALLED_APPS.
- Я создал файл routing.py с пустым ProtocolTypeRouter
- Я добавил ASGI_APPLICATION в свой settings.py
- Я настроил файл asgi.py для использования каналов
- На данный момент я не настраивал слои каналов.
- На данный момент я не создал ни одной конечной точки WebSocket
После этих конфигураций сервер запуска использует сервер разработки ASGI, и, по-видимому, все мои конечные точки REST работают.
Некоторые вопросы:
Учитывая, что весь мой код синхронный, не нужно ли было бы вносить в него какие-либо корректировки?
Эта конфигурация, приведенная выше, уже выполняет всю магию, необходимую для безопасного выполнения моего синхронного кода на дафене, учитывая, что это сервер ASGI?
Могу ли я надежно и стабильно обслуживать обычные запросы HTTP и WebSockets, используя только ASGI? Или рекомендуется обслуживать HTTP-трафик с помощью WSGI и оставлять только трафик WebSockets для дафена?
Где именно следует позаботиться о синхронном коде?