1

所以我刚刚将我的 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] 日志消息每隔几分钟就会重复一次。我不想向我的追随者发送垃圾邮件。

4

3 回答 3

6

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

于 2013-01-31T02:30:15.710 回答
0

我将与你分享一个帮助我一次性运行脚本的人的解决方案(比如一个开始然后结束,而不是继续运行的 python 脚本)。

有任何问题请告诉我,我会帮助你 --> andreabalbo.com

嗨安德里亚

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

tmp 进程类型:命令:测试

我没有在 Heroku Dashboard 中打开进程类型。安装高级调度程序后,我使用命令“tmp-process-type”创建了一个触发器,该触发器每分钟运行一次。查看我的日志,我可以看到每分钟都有一个进程以“command:test”开始,确认 Procfile 中的进程类型正在工作。然后我在 Heroku Dashboard 中切换了进程类型。这立即出现在我的日志中:

缩放到 tmp-process-type@1:Free web@0:Free by user ...

这是因为在切换之后,Heroku 会启动一个正常的测功机,它会尝试跟上。由于你的脚本是一个结束的任务,dyno 死掉了,Heroku 会自动重启它,导致你的任务运行多次。

总之,以下步骤应该可以解决您的问题: 1. 关闭您的进程类型(但将其保留在 Procfile 中) 2. 安装高级调度程序 3. 使用命令“tmp-”创建触发器(重复或一次性) process-type" 4. 查看你的日志,看看是否有任何奇怪的东西出现

亲切的问候,奥斯卡

于 2019-10-14T17:38:25.157 回答
0

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

  • 我将工人数量设为 0
  • 然后在调度程序中仍然放置“python ELO_voetbal.py”并为此自动启动一个工作程序。
  • 所以我没有使用任何高级调度程序,也没有在某处放置“tmp-process-type”。
于 2021-01-21T19:05:08.007 回答