我想知道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一起工作。我不知道细节。)
答案 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。