Redis
 sql >> Database >  >> NoSQL >> Redis

Python Reddis Queue ValueError:le funzioni del modulo __main__ non possono essere elaborate dai lavoratori

Rompi il codice fornito in due file:count_words.py :

import requests

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

e main.py (dove importerai la funzione richiesta):

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

Separo sempre le attività dalla logica che esegue tali attività su file diversi. È solo una migliore organizzazione. Nota inoltre che puoi definire una classe di attività e importare/programmare attività da quella classe invece della struttura (eccessivamente semplificata) che suggerisco sopra. Questo dovrebbe farti andare avanti. Vedi anche qui per confermare che non sei il primo a lottare con questo esempio. RQ è fantastico una volta presa la mano.