Lorsque céleri coopère avec lapinmq pour effectuer des tâches asynchrones, on constate que le nombre de messages dans lapinmq augmente constamment, mais ces messages ont en fait été traités par la tâche.
En regardant le backend fourni avec rabbimtq, nous avons constaté que dans les messages en file d'attente, le nombre de messages prêts et totaux a atteint plus de 5 000, et la valeur de non reconnu est 0. Cependant, lorsqu'il fonctionne réellement, la valeur de non reconnu changera, mais elle finira par devenir 0. Il n'y a rien de spécial dans la configuration de céleri. Il définit uniquement le contenu suivant
CELERY_IMPORTS = ('testtasks',)
BROKER_URL = '. amqp://guest:guest@localhost:5672//'
CELERY_RESULT_BACKEND = 'amqp://'
Y a-t-il un problème avec la configuration de celeri de mon côté ?
Cela a été résolu. Mettez simplement à niveau Rabbitmq vers la version 3.3 ou supérieure.
J'ai déjà utilisé Rabbitmq version 3.1, puis le céleri est la version 3.1
La vraie façon de résoudre le problème est d'ajouter un attribut ignore_result=True à la tâche, comme suit
@app.task(ignore_result=True)