如何在Heroku上执行python脚本?

时间:2013-12-09 23:45:55

标签: python django csv heroku

我有一个python脚本,我只需要运行一次(我不想将它提交到repo发送到Cedar实例)。

脚本通过我的Django模型聚合数据并输出.csv文件。

通常在AWS中,我会{!1}将服务器的脚本scpmanage.py shell < script.py生成的.csv返回给我的计算机。

我理解Heroku文件系统是短暂的,但是有没有办法在Heroku服务器上检索生成的文件而不将它们上传到S3?

这是我最好的镜头:

scp

适用于单行脚本,但不适用于换行符。

另外,上面的脚本只会产生命令行输出,而不会返回.csv文件。

3 个答案:

答案 0 :(得分:3)

我想在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 commmand: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

关键是用双引号包装反引号,这样就可以保留脚本中的换行符。