Locking¶
To avoid raise conditions on update viewflow.flow.flow_view()
and
viewflow.flow.flow_job()
decoratos grabs process-instance wide
locks and instansiate database transaction.
You could specify selected lock implementation in :attr:lock_impl of
viewflow.base.Flow
class
-
viewflow.lock.
no_lock
(flow)¶ No pessimistic locking, just execute flow task in transaction. Not suitable when you have Join nodes in your flow.
-
viewflow.lock.
select_for_update_lock
(flow, nowait=True, attempts=5)¶ Uses select ... for update on process instance row for locking, bound to database transaction.
Recommended for use with PostgreSQL.
-
viewflow.lock.
cache_lock
(flow, attempts=5, expires=120)¶ Use it if primary cache backend has transactional add functionality, like memcached.