Wondering if I haven't asked the question clearly enough. Regarding
the statement that we need to assume tasks may be executed multiple
times (i.e. ensure idempotence): is that multiple times serially, or
possibly multiple times concurrently?

I've gone ahead and coded my idempotence solution to assume that they
cannot be running concurrently, just because its a bit easier, and a
bit less work inside a transaction. I'm guessing that the reason they
may be run multiple times is that GAE won't know what to do if it
doesn't get a response from a task it executes - it can't be sure that
the task was received by the application, or that the application was
given the opportunity to correctly react the task - in fact it has to
assume that it didn't, and therefore runs it again to be sure.  I'm
assuming that GAE always knows for certain that a task has been fired,
just not whether it was fired successfully - and it will only fire
again if it hasn't correctly processed a response from the previous
execution. If this were true, then it seems as long as GAE guarantees
that it waits > 30s before firing the task a second time (rather than
just reacting to the loss of the http connection for example), then we
can know it is not executing in parallel, because the first execution
cannot be still running due to the request limit.

Am I looking at this correctly? Is it fair to assume that the same
task cannot be running in parallel? Cheers,

Colin



On Apr 23, 3:14 pm, hawkett <hawk...@gmail.com> wrote:
> Hi Tim - there's a couple of reasons why this won't work - firstly, it
> is my understanding that named tasks are also subject to the
> possibility of being executed twice (the name only prevents the same
> name being added to the queue twice), and secondly tasks raised
> transactionally cannot have a task name.
>
> On Apr 23, 11:45 am, Tim Hoffman <zutes...@gmail.com> wrote:
>
>
>
>
>
> > Probably the best way to guard would be have the task name specific to
> > the operation.
> > You cant have another task with the same name for about a week,
>
> > T
>
> > On Apr 23, 3:51 pm, hawkett <hawk...@gmail.com> wrote:
>
> > > HI,
>
> > > I understand that it is possible for a single task to be executed more
> > > than once, but is it safe to assume that only one instance of a
> > > specific task will be executing at the one time? It makes it much more
> > > difficult (time consuming) to implement idempotent behaviour if it is
> > > possible for the subsequent executions of a task to begin before the
> > > first has completed - i.e. for the same task to be executing
> > > concurrently. I can think of ways of using db locking (memcache is not
> > > reliable - especially when this scenario is most likely to occur
> > > during system failures) to recognise the multiple concurrent
> > > executions, but it would be great to know that this scenario cannot
> > > occur.  Thanks,
>
> > > Colin
>
> > > --
> > > You received this message because you are subscribed to the Google Groups 
> > > "Google App Engine" group.
> > > To post to this group, send email to google-appeng...@googlegroups.com.
> > > To unsubscribe from this group, send email to 
> > > google-appengine+unsubscr...@googlegroups.com.
> > > For more options, visit this group 
> > > athttp://groups.google.com/group/google-appengine?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Google App Engine" group.
> > To post to this group, send email to google-appeng...@googlegroups.com.
> > To unsubscribe from this group, send email to 
> > google-appengine+unsubscr...@googlegroups.com.
> > For more options, visit this group 
> > athttp://groups.google.com/group/google-appengine?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Google App Engine" group.
> To post to this group, send email to google-appeng...@googlegroups.com.
> To unsubscribe from this group, send email to 
> google-appengine+unsubscr...@googlegroups.com.
> For more options, visit this group 
> athttp://groups.google.com/group/google-appengine?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to google-appeng...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to