【问题标题】:Problems deploying simple Python script to keep running on Heroku部署简单 Python 脚本以继续在 Heroku 上运行时出现问题
【发布时间】:2016-07-19 10:48:45
【问题描述】:

我有一个简单的 Python 程序,它每隔 30 秒重复一次以下过程:使用 Gmail API 检查我的收件箱,查找某种邮件,如果找到,使用 Twilio API 给我打电话。

我一直在我的机器上运行这个程序,但我希望它能够 24x7 全天候运行。一位朋友说我应该能够使用 Heroku 做到这一点。我无法弄清楚如何做到这一点,并希望得到任何帮助。 我设置了 Heroku,并首先尝试部署我的脚本(我已在下面复制)并在帖子末尾复制了错误。

我也尝试在 Flask 应用程序函数中运行它,但代码只在我打开 Heroku 链接时运行一次,我无法让它在后台继续运行。

如果我应该以不同的方式/使用不同的托管/平台提供商,请告诉我。

#Procfile
web: python gmail_twilio.py 

#Logs error
2016-07-13T03:35:39.635528+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=pacific-woodland-28065.herokuapp.com request_id=54912af8-83a6-4feb-bb36-def791621e5f fwd="171.50.142.162" dyno= connect= service= status=503 bytes=

#gmail_twilio.py

while True:
  inbox_list = ListMessagesMatchingQuery(service, '##', query="in:inbox -label:called ")# create list with non called labels
  if len(inbox_list)>0:
    twiliocall() # function to call me
    for element in inbox_list:
      ModifyMessage(service, 'me', element[u'id'], {'removeLabelIds': [], 'addLabelIds': ['Label_3']}) # add called label
  time.sleep(30) # wait for 30 seconds

【问题讨论】:

    标签: python heroku deployment procfile


    【解决方案1】:

    请注意,Heroku 平台设计用于托管 Web 应用程序,而不是任意守护程序。当您查看heroku logs 的输出时,我想您会看到诸如“R10 Web 进程无法绑定”之类的错误。这是因为 Heroku 期望您的 Web 进程通过绑定到通过 $PORT 传入的端口来侦听 Web 请求;如果这没有发生,Heroku 会假设出现问题并宣布应用程序崩溃。

    您可能可以使其工作 - 例如,创建一个仅回显状态以满足“绑定”要求的 Web 进程,然后使用“调度程序”插件每隔几分钟运行一次脚本或定义您的脚本作为“工人”进程。或者,您可以查看其他解决方案,例如 AWS Lambda。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 2017-10-31
      • 2022-09-30
      相关资源
      最近更新 更多