我正在开发一款需要每5-15分钟获取一个POP3帐户的应用,以检查新电子邮件并对其进行处理。我编写了所有代码,除了每5-15分钟自动运行的部分。
我正在使用Sinatra,DataMapper并在Heroku上托管,这意味着cron作业是不可能的,因为Heroku最多只能提供每小时的cron作业。
我已经研究过Delayed :: Job,它本身不支持Sinatra和DataMapper,但有一些解决方法for both。由于我的Ruby知识有限,我找不到将这两个fork合并为一个工作的Delayed :: Job for Sinatra / DataMapper解决方案的方法。
最初,我使用Mailman检查内置轮询并连续运行的电子邮件,但由于它不是基于机架的,因此无法在Heroku上运行。
关于下一步该怎么做的任何指示?在您说:一个不同的虚拟主机之前,我应该补充一下,我更喜欢坚持使用Heroku,因为它易于使用(当然,除了上述问题)。
答案 0 :(得分:1)
一个简单的诀窍是编写循环中包含的代码,然后在其底部睡眠,无论你想要多长时间:
未经测试的示例代码......
loop do
do_something_way_cool()
sleep 5 * 60 # it's in minutes
end
如果它必须包含在应用程序的主体中,那么使用Thread
来包装它,以便线程完成工作。您需要找出共享数据结构以将数据传输出循环。 Queue
是你的朋友。
答案 1 :(得分:1)
Heroku支持CloudMailin