2010-12-21 7 views
0

Ich entwickle eine App, die alle 5-15 Minuten ein POP3-Konto abrufen muss, um nach neuen E-Mails zu suchen und sie zu bearbeiten. Ich habe den ganzen Code außer dem Teil geschrieben, wo es automatisch alle 5-15 Minuten läuft.Was ist der beste Weg, um alle 15 Minuten einen POP3-Server für neue Mails zu holen?

Ich verwende Sinatra, DataMapper und Hosting auf Heroku, was bedeutet, dass Cron-Jobs nicht in Frage kommen, weil Heroku stündliche Cron-Jobs bestenfalls anbietet.

Ich habe in Delayed :: Job untersucht, die nicht Sinatra noch DataMapper nativ unterstützt, aber es gibt Problemumgehungen forboth. Da mein Ruby-Wissen begrenzt ist, konnte ich keine Möglichkeit finden, diese beiden Forks in einen funktionierenden Delayed :: Job für Sinatra/DataMapper-Lösung zusammenzuführen.

Zunächst habe ich Mailman verwendet, um nach E-Mails zu suchen, die integrierte Abfragen haben und kontinuierlich ausgeführt werden, aber da es nicht auf einem Rack basiert, läuft es nicht auf Heroku.

Irgendwelche Hinweise darauf, wo als nächstes zu gehen? Bevor du sagst: ein anderer Webhost, sollte ich hinzufügen, dass ich es vorziehe, bei Heroku zu bleiben, weil es einfach zu benutzen ist (außer natürlich, für das obige Problem).

Antwort

1

Ein einfacher Trick ist, den Code enthalten in einer Schleife zu schreiben, schlafen dann am unteren Ende es jedoch lange Sie wollen:

Ungeprüfte Codebeispiel ...

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

Wenn es hat im Hauptteil der App enthalten sein dann verwenden Sie eine Thread, um es so zu wickeln, dass der Thread die Arbeit erledigt. Sie müssen Ihre gemeinsamen Datenstrukturen herausfinden, um die Daten aus der Schleife zu übertragen. Queue ist dein Freund dort.

Verwandte Themen