Подтвердить что ты не робот

Запуск простого python script непрерывно на Heroku

У меня есть простой python script, который я бы хотел разместить на Heroku и запускать его каждые 10 минут с помощью планировщика Heroku. Так может кто-нибудь объяснить мне, что я должен набирать в команде rake в планировщике и как я должен изменить Procfile из Heroku?

4b9b3361

Ответ 1

Конечно, вам нужно сделать несколько вещей:

  • Определите файл requirements.txt в корне вашего проекта, в котором перечислены ваши зависимости. Это то, что Heroku будет использовать, чтобы "обнаружить", что вы используете приложение Python.

  • В аддоне планировщика Heroku просто определите команду, которую нужно запустить, чтобы запустить ваш python script. Вероятно, это будет что-то вроде python myscript.py.

  • Наконец, у вас должен быть какой-то веб-сервер, который будет прослушивать правильный Heroku PORT - в противном случае Heroku будет думать, что ваше приложение не работает, и оно будет в состоянии "с разбивкой" - который не то, что вы хотите. Чтобы удовлетворить это требование Heroku, вы можете запустить действительно простой веб-сервер Flask, как это...

Код (server.py):

from os import environ
from flask import Flask

app = Flask(__name__)
app.run(environ.get('PORT'))

Затем, в Procfile, просто скажите: web: python server.py.

И это должно было бы сделать это =)

Ответ 2

Если вы используете бесплатную учетную запись [unverified *] в Heroku (поэтому вы не можете устанавливать дополнения), вместо использования "Планировщика Heroku", используйте time.sleep(n). В этом случае вам не нужен Flask или какой-либо сервер, просто поместите скрипт, скажем, в папку Scripts (в приложении/проекте по умолчанию от Heroku) и добавьте в Procfile:
worker: python script.py.
Конечно, вы заменяете script.py на Path к вашему сценарию, включая имя,
ex. worker: python Scripts/my_script.py
Примечание: Если в вашем скрипте используются сторонние модули, например, bs4 или запросы, вам необходимо установить их в
pipenv install MODULE_NAME или создать requirements.txt и поместить их в файл manage.py, Procfile, Pipfile. (и т.д.) Следующее место в этих требованиях .txt:
requirements.txt:

MODULE_NAME==MODULE_VERSION

Вы можете проверить их в pip freeze | grep MODULE_NAME
Наконец, разверните на сервере Heroku, используя git, и выполните следующую команду:

heroku ps:scale worker=1

Вот оно! Bot/Script запущен, проверьте его в логах:

heroku logs --tail

Источник: https://github.com/michaelkrukov/heroku-python-script


unverified * - "Чтобы помочь в предотвращении злоупотреблений, предоставление надстройки требует проверки учетной записи. Если ваша учетная запись не была подтверждена, вам будет предложено посетить сайт проверки". Он перенаправляет на данные кредитной карты. Тем не менее, у вас все еще может быть Free Acc, но вы не сможете использовать определенные опции для бесплатных пользователей, такие как установка дополнений:
https://devcenter.heroku.com/articles/getting-started-with-python#provision-add-ons