[英]Running simple python script continuously on Heroku
我有一个简单的 python 脚本,我想在 Heroku 上托管它,并使用 Heroku 调度程序每 10 分钟运行一次。 那么有人可以解释我应该在调度程序的 rake 命令中输入什么以及我应该如何更改 Heroku 的 Procfile 吗?
当然,你需要做一些事情:
在项目的根目录中定义一个requirements.txt
文件,其中列出了您的依赖项。 这就是 Heroku 将用来“检测”您正在使用 Python 应用程序的内容。
在 Heroku 调度程序插件中,只需定义您需要运行的命令来启动您的 Python 脚本。 它可能类似于python myscript.py
。
最后,你需要有某种网络服务器来监听正确的 Heroku 端口——否则,Heroku 会认为你的应用程序不工作,它会处于“崩溃”状态——这不是你想要的想要。 为了满足 Heroku 的这个要求,你可以像这样运行一个非常简单的 Flask Web 服务器......
代码( server.py
):
from os import environ
from flask import Flask
app = Flask(__name__)
app.run(environ.get('PORT'))
然后,在您的Procfile
,只需说: web: python server.py
。
这应该就可以了 =)
如果您在 Heroku 上使用免费帐户 [unverified*](因此您无法安装插件),请使用 time.sleep(n),而不是使用“Heroku 调度程序”。 在这种情况下,您不需要 Flask 或任何服务器,只需将脚本放入文件夹 Scripts(在 Heroku 的默认应用程序/项目中)并添加到 Procfile:
worker: python script.py
。
当然,您将 script.py 替换为脚本的路径,包括名称,
例如。 worker: python Scripts/my_script.py
注意:如果你的脚本使用第三方模块,比如 bs4 或 requests,你需要将它们安装在
pipenv install MODULE_NAME
或创建requirements.txt
并将其放在 manage.py、Procfile、Pipfile 等所在的位置。 在那个requirements.txt中的下一个地方:
requirements.txt
:
MODULE_NAME==MODULE_VERSION
您可以在 pip freeze 中查看它们 | grep MODULE_NAME
最后使用git
部署到 Heroku 服务器并运行以下命令:
heroku ps:scale worker=1
就是这样! Bot/Script 正在运行,在日志中检查它:
heroku logs --tail
来源: https : //github.com/michaelkrukov/heroku-python-script
未验证* - “为了帮助防止滥用,提供附加组件需要帐户验证。如果您的帐户尚未验证,您将被引导访问验证站点。” 它重定向到信用卡信息。 但是,您仍然可以拥有 Free Acc,但您将无法为免费用户使用某些选项,例如安装插件:
https://devcenter.heroku.com/articles/getting-started-with-python#provision-add-ons
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.