[英]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.