sql >> Base de Datos >  >> NoSQL >> Redis

Python Reddis Queue ValueError:los trabajadores no pueden procesar las funciones del módulo __main__

Divide el código proporcionado en dos archivos:count_words.py :

import requests

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

y principal.py (donde importará la función requerida):

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

Siempre separo las tareas de la lógica que ejecuta esas tareas en diferentes archivos. Es simplemente una mejor organización. También tenga en cuenta que puede definir una clase de tareas e importar/programar tareas de esa clase en lugar de la estructura (demasiado simplificada) que sugiero anteriormente. Esto debería ponerlo en marcha. Consulte también aquí para confirmar que no es el primero en tener problemas con este ejemplo. RQ es genial una vez que le cojas el truco.