Я написал приложение, используя webpy (webpy.org). Частью этого веб-приложения являются повторяющиеся фоновые задачи для статистических функций. Я использовал библиотеку APScheduler
python для выполнения расписаний в стиле cron. Потому что app.run()
позволяет webpy работать в автономном режиме во время разработки. Эта установка сработала нормально.
Однако, когда он был развернут, я обнаружил, что APScheduler больше не работает. Процедура развертывания в значительной степени соответствует эту статью. Моя программа точки входа по-прежнему печатает журналы успешного планирования. Но похоже, что uwsgi приостановит работающее веб-приложение (что приведет к приостановке потока), когда запросы не будут получены. Если я обновлю страницу, APScheduler проснется и напечатает несколько WARNING:apscheduler.scheduler:Run time of job "worker (trigger: cron[...], next run at: ..)" was missed by 0:04:36.389705
сообщений. Они ходят не по расписанию.
Мой вопрос: как мне запланировать задачи в стиле cron при развертывании веб-приложения uwsgi. Я видел, что у самого uwsgi есть поддержка cron. Но мне интересно, как я могу смешать его с моим приложением, таким как APScheduler (или заменить его)? Задачи зависят от нескольких модулей и динамических свойств приложения, поэтому их нельзя легко преобразовать в автономные программы .py.