2010-12-21 42 views
0

我正在开发一个应用程序,需要每隔5-15分钟取一个POP3帐户来检查新电子邮件并处理它。除了每5-15分钟自动运行的部分,我写了所有的代码。每隔15分钟为新邮件提取POP3服务器的最佳方式是什么?

我在Heroku上使用Sinatra,DataMapper和托管,这意味着cron作业不存在问题,因为Heroku最多只提供每小时cron作业。

我已经看到Delayed :: Job本身不支持Sinatra和DataMapper,但有解决方法forboth。由于我的Ruby知识是有限的,我无法找到一种方法将这两个叉合并为一个可用于Sinatra/DataMapper解决方案的Delayed :: Job。

最初我用Mailman来检查内置轮询并持续运行的电子邮件,但由于它不是基于机架的,因此它不能在Heroku上运行。

任何指向下一步的指针?在你说:不同的网络主机之前,我应该补充一点,我真的更喜欢坚持使用Heroku,因为它的易用性(当然除了上述问题)。

回答

1

一个简单的窍门是写包含在一个循环代码,然后睡在它的底部,不过长你想:

未经测试示例代码...

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

如果有被包含在应用程序的主体中,然后使用Thread来包裹它,以便线程完成工作。你需要找出你的共享数据结构来将数据传送出循环。 Queue是你的朋友。