Thanks a lot! I've ended up using `django-transaction-hooks`. On Monday, July 27, 2015 at 5:49:40 PM UTC+2, Carl Meyer wrote: > > Hi Maciej, > > On 07/27/2015 07:03 AM, Maciej Gol wrote: > > I've been recently working (porting to Django 1.8) on a project where we > > need to use a few transactions in a single request, and these > > transactions cannot be correctly handled by the `atomic` decorator due > > to functions calls nesting. Basically, we are sending celery tasks at > > the end of some processing, and it requires the results to be visible in > > the database. I'm doing this for each element of a list, thus the celery > > task sending is done right after saving the data to the database. The > > commit should happen between the save and posting the task, and since > > the processing logic is complex, I can't use a decorator here. > > I think a better solution to this situation is to use > transaction.atomic, and then use django-transaction-hooks [1] to delay > creation of the Celery task(s) until the transaction is successfully > committed. (Django 1.9 will have transaction-hooks integrated into core.) > > [1] http://django-transaction-hooks.readthedocs.org/en/latest/ > > > The issue is, when autocommit is set to off, whenever I try to > > `.update()` a `QuerySet` or `.save()` a `Model`, it results in > > `TransactionManagementError: The outermost 'atomic' block cannot use > > savepoint = False when autocommit is off.` error, which is kind of sad > > because I could handle the eventual rollback myself gracefully. Instead, > > django throws me this error in the face. > > Yes, this is a known issue in 1.8: > https://code.djangoproject.com/ticket/24921 > > The ticket describes the needed solution in some detail, it just remains > for someone to code up the patch with a test. Since the issue is a > regression in 1.8, I think such a patch would be backported to the 1.8 > branch and appear in the next 1.8.x release. > > Carl > >
-- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ed7073ba-51e9-46b3-8594-aa5fb0c35a39%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

