Есть ли способ запустить два процесса в развертывании Heroku?

У меня есть приложение для тире, и самый простой способ его развернуть — через Heroku. У меня есть две части моего приложения: стример и интерфейс dash. Поток стримера твитит из твиттера через tweepy API, анализирует соответствующую информацию, создает базу данных SQLite, если она не существует, а затем заносит твиты в базу данных. Интерфейс dash просто берет твиты из базы данных по нисходящей временной метке Unix (т. е. отображает самые последние твиты) и отображает их на графике в реальном времени, где пользователь может ввести термин и увидеть живое отношение к этому термину.

Я знаю, что в Procfile вы определяете, какой процесс вы хотите запустить на дино через web: gunicorn app: server, где app.py — это файл Python, содержащий app.run_server, но мне нужно, чтобы стример работал одновременно с интерфейсом dash, и они находятся в двух разных файлах .py. в моем проекте.

Я попытался поместить код в streamer.py, который обрабатывает аутентификацию Twitter, запускает стример и создает базу данных SQLite, если она не существует в def main():, а затем импортирует этот def main(): в app.py, но когда я запускаю app.py, он просто запускает стример и никогда не работает app.run_server.

Есть ли способ запустить эти два процесса одновременно на Heroku?


person Diego Delgado    schedule 02.07.2020    source источник
comment
См. мой ответ здесь. Вы столкнетесь с другой проблемой. Ваша база данных sqlite будет удалена из-за эфемерной файловой системы Heroku   -  person Tin Nguyen    schedule 02.07.2020
comment
Спасибо, и это нормально. Я хочу, чтобы база данных стиралась каждые 24 часа в любом случае. Итак, мой Procfile будет выглядеть так @TinNguyen worker: app.py & streamer.py & wait -n ?   -  person Diego Delgado    schedule 02.07.2020