如何在没有flask / django的heroku上运行一个简单的python脚本?

时间:2016-02-16 17:17:09

标签: python heroku

我正在尝试在我的heroku服务器上运行一个简单的hello world python程序。我是heroku的新手。我能够成功地将我的脚本部署到heroku。 我的python脚本和procfile如下所示,

hi.py

print("hello world")

Procfile

web: python hi.py

当我在终端上运行heroku run web时,我输出了“Hello world”作为输出。但是当我尝试使用heroku web url运行应用程序时,它显示以下错误。

  

应用程序错误应用程序和页面中发生错误   无法提供服务。请稍后再试。

我在这里做错了什么?我是heroku& amp;的新手它的概念,请做好。

2 个答案:

答案 0 :(得分:8)

Heroku上有three types of dyno configurations

  • 网络 - 接收网络流量。
  • 工作人员 - 在后台保持处理任务/队列。
  • 一次性 - 执行一次。例如:备份。

如果您对运行脚本感兴趣,请不要关心接收网络流量,也不要排队等待处理,然后 One-off dynos 很可能是你想要使用的。这对数据库迁移或备份以及诸如此类的东西很有用。

下面的最小例子。

使用Heroku和python AKA“hello world”

示例一次性dyno

这假设您已经在Heroku上创建了应用程序,并且能够从命令行使用Herolu CLI。

最小的“hello world”Python脚本将如下所示。只需要2个文件:

  • requirements.txt必填,但可以留空。
  • 内容为task.py
  • print("hello world")

然后部署到Heroku,例如:

git add .;
git commit -m "My first commit";
git push heroku master

之后,您将能够使用heroku run python task.py运行您的脚本(并且应该在输出中看到期待已久的hello world。)

如果您想在特定时间运行程序,请使用免费的Heroku Scheduler插件。

仅供参考,Procfile是可选的。如果您将其设置为hello: python task.py,那么您只需使用heroku run hello即可运行您的程序。

(请注意,将requirements.txt留空会在部署时触发You must give at least one requirement to install (see "pip help install")警告。但这只是一个警告,但并不妨碍正确部署该程序。)

答案 1 :(得分:6)

我不同意并声明你想要烧瓶

<强> main_app.py

import flask
app = flask.Flask(__name__)

@app.route("/")
def index():
    #do whatevr here...
    return "Hello Heruko"

然后将您的procfile更改为web: gunicorn main_app:app --log-file -