То, что вы ищете, вероятно, запускает два разных процесса в Heroku.
Heroku имеет Procfile
, который определяет, что на самом деле запускает ваше приложение. Один из них, вероятно, запускает ваш веб-сервер как есть. Источник .
Можно определить второй процесс, это так же просто, как добавление новой строки в файл proc. Вы можете использовать эту новую строку, чтобы начать что-то вроде Celery , которое может делать именно то, что вам нужно. Celery - это распределенная система очередей задач, которую можно использовать, например, для планирования задачи каждый n раз. Это также устранит необходимость в вашем while l oop, так как вы можете просто запланировать его каждые 300 секунд.
web: flask run
worker: celery worker -A your_app/celery.py
Очевидно, что существуют и другие альтернативы Celery, найдите хорошую структуру очереди задач, которая соответствует вашим потребностям. Вы даже можете запустить свой веб-скреб напрямую, однако он может не восстановиться, как это сделал бы Celery в случае ошибки sh.