Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Python Reddis Queue ValueError:Funkcje z modułu __main__ nie mogą być przetwarzane przez pracowników

Podziel dostarczony kod na dwa pliki:count_words.py :

import requests

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

i main.py (gdzie zaimportujesz wymaganą funkcję):

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

Zawsze oddzielam zadania od logiki uruchamiającej te zadania do różnych plików. To po prostu lepsza organizacja. Zauważ również, że możesz zdefiniować klasę zadań i importować/planować zadania z tej klasy zamiast (nadmiernie uproszczonej) struktury, którą sugeruję powyżej. To powinno Cię zachęcić. Zobacz również tutaj, aby potwierdzić, że nie jesteś pierwszym, który zmaga się z tym przykładem. RQ jest świetne kiedy już to zrozumiesz.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dzwonię do Redis zunionstore z Lua ze zmienną KEYS

  2. Buforowanie obiektów JSON po stronie serwera

  3. Mechanizm blokady magazynu Redis (lub dowolnej bazy danych?) (NodeJS)

  4. Konfigurowanie Redis ElastiCache z Elastic BeanStalk + Django

  5. Jak naprawić klucze Redis serializowane za pomocą Java?