Ich habe Probleme beim Ausführen Multithread-Aufgaben mit Python RQ (getestet auf v0.5.6 und v0.6.0).RQ Timeout nicht Multi-Thread-Aufträge
Betrachten Sie das folgende Stück Code, als eine vereinfachte Version von dem, was ich versuche zu erreichen:
thing.py
from threading import Thread
class MyThing(object):
def say_hello(self):
while True:
print "Hello World"
def hello_task(self):
t = Thread(target=self.say_hello)
t.daemon = True # seems like it makes no difference
t.start()
t.join()
main.py
from rq import Queue
from redis import Redis
from thing import MyThing
conn = Redis()
q = Queue(connection=conn)
q.enqueue(MyThing().say_hello, timeout=5)
Bei der Ausführung main.py
(während rqworker im Hintergrund ausgeführt wird), bricht der Job wie erwartet nach Timeout innerhalb von 5 Sekunden ab.
Problem ist, wenn ich eine Aufgabe mit Thread/s wie MyThing().hello_task
festlegen, läuft der Thread für immer und nichts passiert, wenn das Timeout von 5 Sekunden vorbei ist.
Wie kann ich eine Multithread-Aufgabe mit RQ ausführen, so dass die Zeitüberschreitung die Aufgabe, ihre Söhne, Enkel und ihre Frauen tötet?
Klingt wie eine gute Frage als rq Frage zu stellen: https: // Github .com/nvie/rq/issues – ErikR
Wollte sichergehen, dass ich nichts vermisse (?) – Kludge