¿Hay alguna forma de ejecutar código después de la confirmación de la transacción en Django?ejecutar el código después de la confirmación de la transacción en Django
Necesito enviar algunos mensajes a un servidor rabbitmq para el procesamiento fuera de línea, pero el mensaje llega al consumidor antes de que se haya comprometido la transacción de Django.
Mi mensaje se envía en la señal post_save del modelo. Lo que estoy buscando es un mecanismo similar, que use señales u otra cosa, que ejecute código después de la confirmación (y no haga nada si la transacción falla).
No he encontrado ninguna forma genérica de hacerlo en Django. ¿Tienes alguna idea?
que tenía un problema simmilar. En post_save, Publisher (proceso 1) guarda el estado de la tarea y publica el mensaje. El consumidor (proceso 2) recibe el mensaje y actualiza el estado de la tarea, que aún no se encuentra en la base de datos. Lo que funcionó fue poner al consumidor a dormir por un segundo o dos, después de recibir el mensaje. Se siente sucio de todos modos. – ohnoes
Después de luchar durante 4 horas, descubrí a partir de esta pregunta que no podemos tener código después de transaction.commit() y ahora mi código está funcionando bien. Gracias. – zubinmehta
Boleto relacionado: https: //code.djangoproject.com/ticket/14051 – guettli