我有一个python脚本,我只需要运行一次(我不想将它提交到repo发送到Cedar实例)。
脚本通过我的Django模型聚合数据并输出.csv文件。
通常在AWS中,我会{!1}将服务器的脚本scp
和manage.py shell < script.py
生成的.csv返回给我的计算机。
我理解Heroku文件系统是短暂的,但是有没有办法在Heroku服务器上检索生成的文件而不将它们上传到S3?
这是我最好的镜头:
scp
适用于单行脚本,但不适用于换行符。
另外,上面的脚本只会产生命令行输出,而不会返回.csv文件。
答案 0 :(得分:3)
我想在heroku中一次手动执行一个python脚本。这就是它的工作原理:
import django
django.setup()
(这对于能够在django中使用创建的模型很重要)heroku run bash
export DJANGO_SETTINGS_MODULE=projectsname.settings
cd projectsname
python yourscriptname.py
答案 1 :(得分:2)
Heroku不会在你的dyno上的任何地方给你写权限(它所写的唯一文件是你在推送更新时从你的主分支中检出的文件,以及任何依赖项)。您必须将输出上传到S3,将其保存到日志中,或找到其他一些传送机制(电子邮件?)
答案 2 :(得分:1)
你快到了。您遇到的问题与典型的shell语法的工作方式有关。
您在脚本中有cat script.py | heroku run manage.py shell --app appname
个管道,没有换行符。
要获得换行符,请尝试此操作。
herkoku run python -c "`cat script.py`" --app appname
关键是用双引号包装反引号,这样就可以保留脚本中的换行符。