[英]How do I execute a python script on Heroku?
我有一個 python 腳本,我只需要運行一次(我不想將它提交到 repo 以發送到 Cedar 實例)。
該腳本在我的 Django 模型上聚合數據並輸出一個 .csv 文件。
通常在 AWS 中,我會將腳本scp
到服務器, manage.py shell < script.py
,然后將生成的 .csv scp
回我的機器。
我知道 Heroku 文件系統是短暫的,但是有沒有辦法在 Heroku 服務器上檢索生成的文件而不將它們上傳到 S3?
這是我最好的鏡頭:
cat script.py | heroku run manage.py shell --app appname
適用於單行腳本,但不適用於換行符。
此外,上述腳本只會產生命令行輸出,不會返回 .csv 文件。
Heroku 不會在你的 dyno 的任何地方給你寫權限(它寫入的唯一文件是在你推送更新時從你的主分支檢出的文件,以及任何依賴項)。 您必須將輸出上傳到 S3,將其保存到日志中,或者找到其他一些傳送機制(電子郵件?)
我想一次在 heroku 中手動執行一個 python 腳本。 它是這樣工作的:
import django
django.setup()
(這對於能夠在 django 中使用創建的模型很重要)heroku run bash
export DJANGO_SETTINGS_MODULE=projectsname.settings
cd projectsname
python yourscriptname.py
你快到了。 您遇到的問題更多地與典型的 shell 語法的工作方式有關。
你有cat script.py | heroku run manage.py shell --app appname
cat script.py | heroku run manage.py shell --app appname
,它在腳本中沒有換行符。
為了讓你的換行符試試這個。
heroku run python -c "`cat script.py`" --app appname
關鍵是用雙引號將反引號括起來,這樣腳本中的換行符就得以保留。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.