sql >> Databasteknik >  >> NoSQL >> Redis

Python Reddis Queue ValueError:Funktioner från modulen __main__ kan inte bearbetas av arbetare

Bryt den angivna koden till två filer:count_words.py :

import requests

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

och main.py (där du ska importera den önskade funktionen):

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

Jag separerar alltid uppgifterna från logiken som kör dessa uppgifter till olika filer. Det är bara bättre organisation. Observera också att du kan definiera en klass av uppgifter och importera/schemalägga uppgifter från den klassen istället för den (överförenklade) strukturen jag föreslår ovan. Detta borde få dig att komma igång. Se även här för att bekräfta att du inte är den första som kämpar med det här exemplet. RQ är bra när du väl får kläm på det.



  1. MongoDb-frågevillkor vid jämförelse av 2 fält

  2. Få alla python-rom-objekt i en lista

  3. Hur man gör fulltextsökning i MongoDB

  4. Python-redis keys() returnerar en lista med byteobjekt istället för strängar