Heroku预定任务每10分钟运行一次,每小时一次

时间:2013-01-30 20:12:01

标签: python heroku scheduler

所以我只是把我的twitter机器人推到了Heroku,然后开始用Heroku调度程序插件在半小时内每小时运行一次。然而,无论出于何种原因,它每10分钟就会运行一次。这是调度程序的错误吗?这是我的日志的摘录,从调度程序成功运行它,然后它尝试再次运行它十分钟后:

2013-01-30T19:30:20+00:00 heroku[scheduler.4875]: Starting process with command `python ff7ebooks.py`
2013-01-30T19:30:21+00:00 heroku[scheduler.4875]: State changed from starting to up
2013-01-30T19:30:24+00:00 heroku[scheduler.4875]: Process exited with status 0
2013-01-30T19:30:24+00:00 heroku[scheduler.4875]: State changed from up to complete
2013-01-30T19:34:34+00:00 heroku[web.1]: State changed from crashed to starting
2013-01-30T19:34:42+00:00 heroku[web.1]: Starting process with command `python ff7ebooks.py`
2013-01-30T19:34:44+00:00 heroku[web.1]: Process exited with status 0
2013-01-30T19:34:44+00:00 heroku[web.1]: State changed from starting to crashed

我可以提供帮助我诊断此问题所需的任何信息。[web.1]日志消息每隔几分钟重复一次。我不想向我的粉丝发送垃圾邮件。

3 个答案:

答案 0 :(得分:6)

如果有其他人有这个问题,我想出来了。我启用了调度程序,然后分配了0个dynos,这样它只能在计划运行时分配一个Heroku dyno。由于某种原因,它一直在运行我的流程(我的假设是)Twitter只让它每隔几分钟就连接到一个套接字,这导致了零星的推文。

答案 1 :(得分:0)

我将与您分享一个曾经帮助过我的人的解决方案,该脚本可以一次性运行脚本(例如python脚本,该脚本开始然后结束,但不保持运行状态)。

有任何问题让我知道,我会帮助您-> andreabalbo.com

  

你好安德里亚

     

我还刚刚在Procfile中创建了一个随机过程类型:

     

tmp-process-type:命令:test

     

我没有在Heroku仪表板中切换进程类型。后   安装高级计划程序,我用命令创建触发器   每分钟运行一次的“ tmp-process-type”。查看我的日志,我可以   看到每分钟都有一个以“ command:test”开始的进程,   确认Procfile中的进程类型正在运行。然后我   在Heroku信息中心中的流程类型上切换。这出现了   立即在我的日志中:

     

已缩放为tmp-process-type @ 1:免费web @ 0:用户免费...

     

这是因为在切换之后,Heroku会旋转正常的测功机   它将尝试跟上。由于您的脚本是一个结束的任务,因此   dyno死亡,Heroku将自动重新启动它,从而导致您的任务   可以运行多次。

     

总而言之,以下步骤应该可以解决您的问题:   1.关闭流程类型(但将其保留在Procfile中)   2.安装高级计划程序   3.使用命令“ tmp-process-type”创建触发器(定期或一次性)   4.查看您的日志以查看是否出现任何奇怪的情况

     

奥斯卡奖,

答案 2 :(得分:0)

最后只用一个动作解决了这个问题:

  • 我将工人数量设为 0
  • 然后在调度程序中它仍然放置“python ELO_voetbal.py”并为此自动启动一个工作程序。
  • 所以我既没有使用高级调度程序,也没有在某处放置“tmp-process-type”。