【问题标题】:How do I execute a python script on Heroku?如何在 Heroku 上执行 python 脚本?
【发布时间】:2013-12-27 07:20:55
【问题描述】:

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

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

通常在 AWS 中,我会将脚本 scp 发送到服务器,manage.py shell < script.pyscp 将生成的 .csv 发送回我的机器。

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

这是我最好的镜头:

cat script.py | heroku run manage.py shell --app appname

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

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

【问题讨论】:

    标签: python django csv heroku


    【解决方案1】:

    Heroku 不会在您的 dyno 上的任何位置授予您写入权限(它写入的唯一文件是在您推送更新时从您的主分支检出的文件以及任何依赖项)。您必须将输出上传到 S3,将其保存到日志中,或者找到其他一些传递机制(电子邮件?)

    【讨论】:

      【解决方案2】:

      我想一次在 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

      【讨论】:

        【解决方案3】:

        你快到了。您遇到的问题与典型的 shell 语法的工作方式更相关。

        你有cat script.py | heroku run manage.py shell --app appname,在脚本中没有换行符。

        要获得换行符,试试这个。

        heroku run python -c "`cat script.py`" --app appname
        

        关键是将反引号用双引号括起来,这样脚本中的换行符就会被保留。

        【讨论】:

          猜你喜欢
          • 2013-02-20
          • 2013-08-11
          • 2020-11-03
          • 1970-01-01
          • 2015-06-26
          • 1970-01-01
          • 2016-08-02
          • 2016-04-08
          • 2013-08-29
          相关资源
          最近更新 更多