Redis
 sql >> Base de données >  >> NoSQL >> Redis

L'utilisation du pool de multitraitement à partir de la tâche de céleri soulève une exception

C'est un problème connu avec le céleri. Cela découle d'un problème introduit dans la dépendance du billard. Une solution de contournement consiste à définir manuellement le _config attribut pour le processus en cours. Merci à l'utilisateur @martinth pour la solution ci-dessous.

from celery.signals import worker_process_init
from multiprocessing import current_process

@worker_process_init.connect
def fix_multiprocessing(**kwargs):
    try:
        current_process()._config
    except AttributeError:
        current_process()._config = {'semprefix': '/mp'}

Le worker_process_init hook exécutera le code lors de l'initialisation du processus de travail. Nous vérifions simplement si _config existe et définissez-le si ce n'est pas le cas.