@yahabrovec

Как хостить скрипт не являющийся веб сервером на хостингах типа heroku?

Всем привет.
Недавно решил написать "бот-агрегатор новостей" и тому подобных вещей. Он раз в час должен высылать мне результаты на почту. Код уже готов но есть проблема. Изначально пытался сделать из него веб сервер на Flask`е и запускать его через gunicorn для последующей интеграции с heroku или любым другим хостингом схожего типа. Но пришел к выводу что мне в принципе не нужна никакая веб морда, она лишь будет мешать в работе и сжирать оперативку. Пробывал запускать два thread`а , в одном сам Flask сервер в другом мой скрипт, но это костыль высшего класса который в любом случае скоро накроется. Не знаю как в таких случаях строят архитектуру подобных приложения, ведь heroku предполагает что скрипт будет запущен любым wsgi сервером сразу при деплое, а простой запуск типа 'python server.py', сразу будет положен после первой отработки. А я бы хотел чтобы он висел там и ни кого не трогал. По сути все боты слишком малы в размерах и потреблении памяти, мне бы не хотелось платить даже за самый дешевый vds рублей 400 в месяц. Чувствую есть какой нибудь выход из ситуации.

UPD
Слышал про Celery и Redis broker. Но тогда размер проекта вырастает втрое. Этот вариант думаю мне не подойдет.
  • Вопрос задан
  • 391 просмотр
Пригласить эксперта
Ответы на вопрос 2
@prostoprofan
Есть VPS и за 1$ в европе, 512MB памяти, что мешает запустить скрипт в фоне через screen ?
Ответ написан
Robur
@Robur
Знаю больше чем это необходимо
сразу будет положен после первой отработки.

Если ваш скрипт рассчитан на бесконечную работу, то "отработка" не произойдет.

Heroku делает некоторые проверки чтобы понять поднялся ли сервер, и вырубит его по таймауту если нет, но возможно их можно отключить.
Попробуйте одно из этого:
- почитать доки насчет того как хероку мониторит процесс, возможно можно настроить свои проверки
- может быть прокатит worker вместо web
- можно просто открыть нужный порт, чтобы хероку успокоился, для этого не нужен flask или еще что-то подойдет что-то минимально простое, которое слушает порт и ничего не делает (или отдает пустой ответ если хероку нужен именно HTTP). Никаких причин к тому чтобы "скоро накрыться" у такой схемы нет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы