所以我只是把我的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]日志消息每隔几分钟重复一次。我不想向我的粉丝发送垃圾邮件。
答案 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)
最后只用一个动作解决了这个问题: