每15分钟为新邮件获取POP3服务器的最佳方法是什么?

时间:2010-12-21 23:33:15

标签: ruby heroku sinatra datamapper delayed-job

我正在开发一款需要每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,因为它易于使用(当然,除了上述问题)。

2 个答案:

答案 0 :(得分:1)

一个简单的诀窍是编写循环中包含的代码,然后在其底部睡眠,无论你想要多长时间:

未经测试的示例代码......

loop do
    do_something_way_cool()
    sleep 5 * 60 # it's in minutes
end

如果它必须包含在应用程序的主体中,那么使用Thread来包装它,以便线程完成工作。您需要找出共享数据结构以将数据传输出循环。 Queue是你的朋友。

答案 1 :(得分:1)

Heroku支持CloudMailin