Как перезапустить приложение heroku, не убивая незаконченные задачи сельдерея - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть веб-приложение django на heroku, в котором несколько заданий сельдерея могут выполняться в фоновом режиме.Redis используется в качестве брокера.

Проблема в том, что когда я перезапускаю приложение heroku либо с heroku restart, либо путем развертывания с heroku container:release во время выполнения некоторых задач, они уничтожаются с помощью SIGTERM, что означает, что задачи никогда не завершаются.

2018-11-23T19:35:24.506833+00:00 heroku[beat.1]: Restarting
2018-11-23T19:35:24.507645+00:00 heroku[beat.1]: State changed from up to starting
2018-11-23T19:35:24.517551+00:00 heroku[web.1]: Restarting
2018-11-23T19:35:24.518013+00:00 heroku[web.1]: State changed from up to starting
2018-11-23T19:35:24.528684+00:00 heroku[worker.1]: Restarting
2018-11-23T19:35:24.529175+00:00 heroku[worker.1]: State changed from up to starting
2018-11-23T19:35:24.952139+00:00 app[worker.1]: 
2018-11-23T19:35:24.952156+00:00 app[worker.1]: worker: Warm shutdown (MainProcess)
2018-11-23T19:35:24.949622+00:00 heroku[worker.1]: Stopping all processes with SIGTERM
2018-11-23T19:35:24.996307+00:00 heroku[worker.1]: Process exited with status 143
2018-11-23T19:35:25.456920+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2018-11-23T19:35:25.480748+00:00 app[web.1]: [2018-11-23 19:35:25 +0000] [16] [INFO] Handling signal: term
2018-11-23T19:35:25.481026+00:00 app[web.1]: [2018-11-23 19:35:25 +0000] [19] [INFO] Worker exiting (pid: 19)
2018-11-23T19:35:25.481491+00:00 app[web.1]: [2018-11-23 19:35:25 +0000] [20] [INFO] Worker exiting (pid: 20)
2018-11-23T19:35:25.481519+00:00 app[web.1]: [2018-11-23 19:35:25 +0000] [21] [INFO] Worker exiting (pid: 21)
2018-11-23T19:35:25.623274+00:00 heroku[web.1]: Process exited with status 143
2018-11-23T19:35:25.816061+00:00 heroku[beat.1]: Stopping all processes with SIGTERM
2018-11-23T19:35:25.928498+00:00 heroku[beat.1]: Process exited with status 143

Из того, что я нашел в интернете, горячее отключение, вызванное SIGTERM, должно ждать завершения задач , но этого не происходит.Они просто убиты.

  • Почему это?
  • Нужно ли что-то настраивать для достижения желаемого поведения?Или это просто не работает?

При текущем поведении я не уверен, как выполнить развертывание, если только я не проверю, как-то не выполняются никакие задачи, а затем перезагружаюсь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...