0

Ich habe eine schöne Standard-Setup: Django + Rabbitmq + Sellerie.Prozess laicht mit Multiprocessing-Modul in Sellerie

Ich versuche, einen Prozess mit Standard Python Multiprocessing-Modul in Sellerie zu spawnen.

Ich habe bemerkt, dass der Prozess selbst nicht laicht. Was könnte der Grund dafür sein, den Prozess nicht hervorzubringen? hier ist der Code:

import multiprocessing as mp 
from celery.schedules import crontab 
from celery.decorators import periodic_task 

@periodic_task(run_every=crontab(minute='*/1'), name='test_process_celery') 
def main(): 
data = config_read() 
try: 
    myqueue = mp.Queue(-1) 
    mylog_process = mp.Process(target=test_logger_process, args=(myqueue,)) 
    mylog_process.start() 
    . . . 
    . . . 
except Exception as e: 
    raise 
finally: 
    mylog_process.join() 
  1. Können wir Multiprocessing-Modul in Sellerie verwenden?

  2. Gibt es eine Sellerie-Beschränkung bei Multiprocessing? wenn es keine Beschränkung gibt, warum der Prozess nicht hervorgebracht wird?

Vielen Dank im Voraus.

Antwort

0

versuchen Sie dies:

@periodic_task(run_every=crontab(minute='*/1'), name='test_process_celery') 
def main(): 
    from multiprocessing import current_process 
    current_process().daemon = False 

    your_stuff() 

    current_process().daemon = True