我想知道
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.我不知道细节.)
最佳答案 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.