Flask и watchdog: запуск нескольких потоков - PullRequest
0 голосов
/ 16 мая 2018

Я пишу приложение, использующее Flask, которое отслеживает обновления файловой системы и регистрирует их.Моя последовательность запуска (в режиме отладки):

  1. Создание объекта приложения Flask
  2. Запуск Watchdog
  3. Запуск приложения

Когдаработает в режиме отладки, приложение автоматически перезапускается с помощью werkzeug fsevents reloader, что нормально;однако этот перезапуск не завершает первый сторожевой поток, и поэтому на этом этапе существует второй сторожевой поток, вызывающий дублирование каждого события файловой системы.

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

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

1 Ответ

0 голосов
/ 25 мая 2018

Вместо запуска фонового потока перед запуском приложения, более чистый и безопасный запуск потока с использованием app.before_first_request. Недостатком этого является то, что фоновый поток не запустится, пока не поступит первый запрос.

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