Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Python Reddis Queue ValueError:As funções do módulo __main__ não podem ser processadas por trabalhadores


Divida o código fornecido em dois arquivos:count_words.py :
import requests

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

e main.py (onde você importará a função necessária):
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

Eu sempre separo as tarefas da lógica que executa essas tarefas para arquivos diferentes. É apenas melhor organização. Observe também que você pode definir uma classe de tarefas e importar/agendar tarefas dessa classe em vez da estrutura (simplificada) que sugiro acima. Isso deve ajudá-lo. Veja também aqui para confirmar que você não é o primeiro a se debater com este exemplo. RQ é ótimo assim que pegar o jeito.