Hello all: Within a celery task, I need to have 2 unrelated sessions that can commit/rollback independently of each other: One session (`domain_model_session`) performs vanilla domain model operations and the other (`celery_state_session`) is to persist the state of the celery task itself **isolated from the domain model one**.
*Imagine "checkpoints"* Something along these lines @task def my task(...): *# Persist checkpoint 'started'* cs = celery_state_session.query(CeleryTask).get(self.request.id) cs.started = datetime.now() celery_state_session.commit() try: with transaction.manager: mymodel = domain_model_session.query(MyModel).one() mymodel.value = "..." *# Persist checkpoint 'value updated' * cs = celery_state_session.query(CeleryTask).get(self.request.id) cs.model_value_updated = datetime.now() except Exception as e: * # Persist checkpoint 'transaction failed' <<< This checkpoint is never persisted !!!!* cs = celery_state_session.query(CeleryTask).get(self.request.id) cs.failed_with_exception = datetime.now() finally: *# Persist checkpoint 'celery task completed anyhow' * cs = celery_state_session.query(CeleryTask).get(self.request.id) cs.failed_with_exception = datetime.now() I've been trying multiple things but I can't get the behavior I need. No matter what, whenever the transaction associated to `domain_model_session` fails it "rolls back" all operations performed by `celery_state_session` as if `celery_state_session` was automatically bound to the same transaction.manager. How am I supposed to create a session that works isolated? -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.