簡體   English   中英

如何在 Heroku 上執行 python 腳本?

[英]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 腳本。 它是這樣工作的:

  1. 在腳本中import django
  2. 在你的 python 腳本中添加一行django.setup() (這對於能夠在 django 中使用創建的模型很重要)
  3. shell 命令(必須在您的 git 存儲庫中執行): heroku run bash
  4. bash 命令: export DJANGO_SETTINGS_MODULE=projectsname.settings
  5. bash 命令: cd projectsname
  6. bash 命令: 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.

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