J'ai cette tâcheExiste-t-il un moyen de gérer plusieurs travailleurs céleri avec la même tâche avec des blocs atomiques?
def some_task(self, param):
do_some_stuff_that_might_break_with_models()
normalement je pouvais faire:
def some_task(self, param):
try:
with transaction.atomic():
do_some_stuff_that_might_break_with_models()
except:
self.retry(....)
Mais en le faisant, il semble que si j'ai les travailleurs couple exécuter cette tâche, il va verrouiller le db parce que du bloc atomique. Mais si je m'en débarrasse, mon essai sera mis en colère. Comment pourrais-je gérer cela? J'ai essayé de prétraiter mon entrée avec des hachages uniques, puis d'envoyer chaque morceau à son propre worker et de me débarrasser des blocs atomiques et try mais en perdant la possibilité de réessayer/suivre les tâches qui ont échoué. Je peux toujours voir ce qui a échoué à partir du panneau d'administration via djcelery, mais pas dans la tâche elle-même.