Fantasm! That's a blast from the past!

I'm one of the original authors of that package. It does indeed help to 
make things idempotent, but at the end of the day, it relies on a datastore 
transaction (fronted by memcache for some performance 
gains): https://github.com/iki/fantasm/blob/master/src/fantasm/lock.py#L150

Datastore transactions are one of the few things you can "count on" in a 
distributed system like App Engine.

Another tool that is often helpful are named tasks, which can help ensure 
that you don't requeue an already queued task (e.g., in the event of a 
retry): 
https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/creating-tasks#naming_a_task

Finally, keep in mind that you can also enqueue a task transactionally with 
a Datastore 
transaction: 
https://cloud.google.com/appengine/docs/standard/python/ndb/transactions#python_Transactional_task_enqueuing

With some creativity, you can get a long way with these basic building 
blocks.
 

On Friday, 6 October 2017 16:39:14 UTC-7, George (Cloud Platform Support) 
wrote:
>
> Hello Nilson, 
>
> Among other sources, you may benefit from reading the "Implementing 
> Workflows on Google App Engine with Fantasm" article 
> <https://cloud.google.com/appengine/articles/fantasm>. Fantasm is an 
> excellent launch pad for building an understanding of how to decompose a 
> workflow into the appropriate chunk size as well as gaining a solid footing 
> in how to build idempotent states.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to google-appengine+unsubscr...@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
Visit this group at https://groups.google.com/group/google-appengine.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-appengine/54d1d179-72b4-4add-ba4d-289928d7d832%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to