Heroku Scheduler vs Heroku Temporize Scheduler,有什么区别?

时间:2016-08-13 03:30:32

标签: python postgresql heroku cron scheduled-tasks

我想知道Heroku Scheduler加载项和Heroku Temporize Scheduler加载项之间的区别。他们似乎都是自由的,并且做预定的工作。

他们如何比较在Heroku中运行Python sched

我想只运行一个cron作业,每分钟使用Heroku Python保存到Postgres来抓取一些网站。 (我也试图弄清楚在cron工作中要写什么,但那是另一个问题。)

使用解决方案进行更新:

感谢danneu的建议,工作解决方案正在使用Heroku Scheduler。由于this tutorial,设置起来非常简单。

(我尝试使用sched和twisted,但两次都得到了:

Application Error
An error occurred in the application and your page could not be served. Please try again in a few moments.

If you are the application owner, check your logs for details.

这可能是由于我缺乏将它们放在正确位置的经验。它没有与同步工作者Heroku guricorn一起工作。我不知道细节。)

1 个答案:

答案 0 :(得分:2)

Temporize是第三方服务。你必须阅读他们的免费计划的局限性。看起来免费计划只允许您每天运行20次任务,这与您间隔1分钟的需求相差甚远。

Heroku的调度程序由Heroku提供。它为每个任务旋转一个服务器,并为运行时收费。 Heroku调度程序的最小任务间隔是10分钟,也不会给你你想要的东西。

对于擦除页面的1分钟间隔,我只是在我的Heroku应用程序进程中运行并发循环。 Javascript中的setTimeout是可以与应用程序服务器一起运行的并发循环的示例(如果您使用的是Node)。看起来Python sched链接中的Twisted示例是Python等效的。

如果您正在使用Heroku的免费套餐(我认为您在IRC中看到您之后),那么一旦您验证帐户,您每个月就会获得1,000个运行时间(否则您只能获得550小时) ),我想这意味着给他们你的信用卡号码。 1000个小时就足以让一个dyno全月免费运行。

但是,如果在没有收到HTTP请求的情况下已经超过X分钟,那么免费层dyno将会休眠(关闭)。显然,Twisted / concurrent循环方法只有在dyno唤醒并运行时才会起作用,因为循环在应用程序进程中运行。

因此,如果您的dyno入睡,您的并发循环将停止,直到您的dyno唤醒并恢复。

如果你想让你的dyno整个月都保持清醒,你可以以7美元/月的价格升级你的dyno。