Redis
 sql >> Base de données >  >> NoSQL >> Redis

Python Reddis Queue ValueError :les fonctions du module __main__ ne peuvent pas être traitées par les travailleurs

Divisez le code fourni en deux fichiers :count_words.py :

import requests

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

et main.py (où vous importerez la fonction requise) :

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

Je sépare toujours les tâches de la logique exécutant ces tâches dans différents fichiers. C'est juste une meilleure organisation. Notez également que vous pouvez définir une classe de tâches et importer/planifier des tâches à partir de cette classe au lieu de la structure (trop simplifiée) que je suggère ci-dessus. Cela devrait vous aider à démarrer. Voir également ici pour confirmer que vous n'êtes pas le premier à lutter avec cet exemple. RQ est génial une fois que vous avez compris.