0

Vielen Dank im Voraus. Ich bin neu im Multiprocessing. Ich habe einen Prozess erstellt, durch den ich die Daten gleichzeitig über Rabbit MQueue konsumieren möchte, aber es läuft jeweils ein Prozess.Multiprocess Kaninchen Verbraucher

def start_consum(queue_name): 
    channel.basic_consume(func, queue=queue_name) 
    channel.start_consuming() 

def process_start(number): 
    from multiprocessing import Process 
    events = ["ev1","ev2","ev3"] 
    for process in range(number): 
     for event in events: 
      proc = Process(target= start_consum(event)) 
      proc.daemon = True 
      proc.start() 


process_start(10) 

Im obigen Code beginnt es, das erste Ereignis zu konsumieren und dann startet es das zweite.

Antwort

0

Sie können einen Thread dafür starten.

class Threaded_worker(threading.Thread): 
    def __init__(self): 
     threading.Thread.__init__(self) 
     self.credentials = pika.PlainCredentials('', '') 
     self.connection = pika.BlockingConnection(pika.ConnectionParameters(credentials=self.credentials,host=)) 
     self.channel = self.connection.channel() 
     self.channel.basic_qos(prefetch_count=1) 
     events = ["ev1","ev2","ev3"] 
     for event in events: 
      self.channel.basic_consume(func, queue=event)    

    def run(self): 
     print 'start consuming' 
     self.channel.start_consuming() 

    def thread_start(numberofthreads):     
     for _ in range(numberofthreads): 
      td = Threaded_worker() 
      td.setDaemon(True) 
      td.start() 
+0

danke @shashank – John

Verwandte Themen