Django каналов обновление кода нулевого простоя? - PullRequest
0 голосов
/ 21 июня 2020

У меня есть приложение на основе django каналов в производственной среде. Я использую supervisord для управления процессами. Также я использую uvicorn через gunicorn для обработки asgi запросов, как упоминалось здесь .

Всякий раз, когда у меня есть что-то новое для развертывания, я должен перезапустить процесс стрельбы, и он будет уничтожьте все старые подключения к веб-сокетам и подключите их снова. Есть ли способ сохранить эти подключения к веб-сокетам. По сути, это приводит к внезапной нагрузке на сервер, поскольку каждое устройство пытается повторно подключиться через несколько секунд после отключения.

Существует концепция отправки HUP сигнала Link на Gunicorn, чтобы только рабочие процессы перезапуск, но даже перезапуск рабочих процессов отключает соединение с веб-сокетом.

  1. Есть ли способ сделать это без потери старых подключений к веб-сокету?
  2. Или, если нет, есть способ избежать внезапной загрузки на сервере при перезапуске сервера?
  3. Могу ли я сделать это через какой-нибудь прокси-сервер?
...