簡體   English   中英

在 Heroku 上連續運行簡單的 python 腳本

[英]Running simple python script continuously on Heroku

我有一個簡單的 python 腳本,我想在 Heroku 上托管它,並使用 Heroku 調度程序每 10 分鍾運行一次。 那么有人可以解釋我應該在調度程序的 rake 命令中輸入什么以及我應該如何更改 Heroku 的 Procfile 嗎?

當然,你需要做一些事情:

  1. 在項目的根目錄中定義一個requirements.txt文件,其中列出了您的依賴項。 這就是 Heroku 將用來“檢測”您正在使用 Python 應用程序的內容。

  2. 在 Heroku 調度程序插件中,只需定義您需要運行的命令來啟動您的 Python 腳本。 它可能類似於python myscript.py

  3. 最后,你需要有某種網絡服務器來監聽正確的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM