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

Python Reddis Queue ValueError:Funktionen aus dem __main__-Modul können nicht von Arbeitern verarbeitet werden

Brechen Sie den bereitgestellten Code in zwei Dateien auf:count_words.py :

import requests

def count_words_at_url(url):
    resp = requests.get(url)
    return len(resp.text.split())

und main.py (wo Sie die erforderliche Funktion importieren):

from rq import Connection, Queue
from redis import Redis
from count_words import count_words_at_url # added import!
redis_conn = Redis()
q = Queue(connection=redis_conn)
job = q.enqueue(count_words_at_url, 'http://nvie.com')
print job

Ich trenne die Aufgaben immer von der Logik, die diese Aufgaben in verschiedenen Dateien ausführt. Es ist einfach eine bessere Organisation. Beachten Sie auch, dass Sie anstelle der (zu stark vereinfachten) Struktur, die ich oben vorschlage, eine Klasse von Aufgaben definieren und Aufgaben aus dieser Klasse importieren/planen können. Das sollte Sie in Schwung bringen. Sehen Sie sich auch hier an, um zu bestätigen, dass Sie nicht der Erste sind, der mit diesem Beispiel zu kämpfen hat. RQ ist großartig sobald Sie den Dreh raus haben.