Oren, any thoughts on how to regularly receive email to a heroku app?

On Oct 7, 2:50 pm, Oren Teich <[email protected]> wrote:
> Cron runs on a separate single process.  It doesn't matter how many  
> dyno's you have, you'll only have one cron process ever running.
>
> If you're seeing other behavior, let us know!
>
> Oren
>
> On Oct 7, 2009, at 8:13 AM, Yuri Niyazov wrote:
>
>
>
>
>
> > Also, I forgot the following fun fact about Heroku's cron service.
> > This was true when I investigated it; might still be true now - not
> > sure.
>
> > Since your app runs on X Heroku VMs, where X is often > 1, then, when
> > you use Heroku's cron, the cronjob is executed on each box
> > simultaneously -> unless you do something clever (and I was unable to
> > figure out what that something clever is), X email processor instances
> > run at the same time. If you need guarantee that each email is
> > processed once only, this will screw it up for you.
>
> > On Wed, Oct 7, 2009 at 11:05 AM, Yuri Niyazov  
> > <[email protected]> wrote:
> >> I haven't checked out the online cron services yet, but there's
> >> another issue that I had to solve, and I don't know whether they  
> >> would
> >> support this or not:
>
> >> Heroku limits the execution time of every request to 30 seconds each,
> >> and a request that takes longer than that is abruptly interrupted.
> >> This means that the magic URL handler has to be written in such a way
> >> that it doesn't take longer than 30 secs; I decided to take the
> >> dirty-hack approach to this: the URL handler processes two emails  
> >> at a
> >> time (let's say that 30 seconds is almost always enough to open an
> >> IMAP connection, do a search, and download the text of two emails).
> >> However, the URL handler checks the total number of messages to be
> >> processed, and returns a status code for same. So:
>
> >>      upto = 2
> >>      msg_id_list = imap.search(["NOT", "DELETED"])
> >>      msg_id_list = msg_id_list[0, upto] if upto
> >>      msg_id_list.each do |msg_id|
> >>        m = imap.fetch(msg_id, "RFC822")[0].attr["RFC822"]
> >>        process m
> >>      end
> >>      render :json => msg_id_list.to_json
>
> >> and then in the script on the cron-box:
>
> >>      do
> >>         msg_id_list = call_url.parse_json
> >>      until msg_id_list.empty?
>
> >> As far as the Google indexing your URL issue: make sure that the GET
> >> request returns a blank page, and the POST actually executes the
> >> cronjob. And, of course, you can always protect that URL via
> >> basic-auth or authenticity-token.
>
> >> On Wed, Oct 7, 2009 at 7:42 AM, Wojciech <[email protected]> wrote:
>
> >>>> so I have a separate box with actual crond on it, and
> >>>> it has a script that hits a specific URL on my app on heroku  
> >>>> every x
> >>>> minutes to process email.
>
> >>> There are services that do it for you (i.e. periodically call your
> >>> magic URL):
> >>>http://www.onlinecronservices.com/
>
> >>> But be careful: this URL could be called by anybody and could even  
> >>> get
> >>> indexed by Google. You might allow only certain IPs (ip of your  
> >>> online
> >>> cron service) to call this URL to protect the app.
>
> >>> There's also this "poor man's cron" approach, I've seen in Drupal:
> >>>http://drupal.org/project/poormanscron- but it's a bit crazy.
>
> >>> Cheers,
> >>> Wojciech
>
> >>>> On Tue, Oct 6, 2009 at 3:06 PM, Carl Fyffe <[email protected]>  
> >>>> wrote:
>
> >>>>> Rails makes it so easy to send emails. Recieving emails isn't that
> >>>>> difficult either, but requires a cron or daemon. What is the  
> >>>>> best way
> >>>>> to do this on Heroku today?
>
> >>>>> Carl
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Heroku" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/heroku?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to