在Heroku上部署简单的Python脚本以继续运行时出现问题

2024-06-03 13:21:17 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我一直在我的机器上运行这个程序,但我希望它全天候运行。一个朋友说我应该可以用Heroku做这个。我不知道该怎么做,谢谢你的帮助。 我设置了Heroku,并首先尝试部署我的脚本(我在下面复制了它),并在post的末尾复制了错误。在

我也试着在Flask app函数中运行它,但是当我打开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

Tags: inpy程序idforherokuserviceerror
1条回答
网友
1楼 · 发布于 2024-06-03 13:21:17

请注意,Heroku平台是为托管web应用程序而设计的,而不是任意的守护程序。当您查看heroku logs的输出时,我想您会看到类似“R10Web进程未能绑定”之类的错误。这是因为Heroku希望您的web进程通过绑定到通过$PORT传入的端口来侦听web请求;如果没有发生这种情况,Heroku会假设出现了问题并声明应用程序崩溃。在

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

相关问题 更多 >