Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Die Verwendung des Multiprocessing-Pools aus der Sellerie-Task löst eine Ausnahme aus

Dies ist ein bekanntes Problem bei Sellerie. Es stammt aus einem Problem, das in der Billardabhängigkeit eingeführt wurde. Eine Problemumgehung besteht darin, die _config manuell festzulegen Attribut für den aktuellen Prozess. Vielen Dank an Benutzer @martinth für die Problemumgehung unten.

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'}

Die worker_process_init Hook führt den Code bei der Initialisierung des Worker-Prozesses aus. Wir prüfen einfach, ob _config vorhanden ist, und legen Sie es fest, wenn dies nicht der Fall ist.