У меня есть два файла, буквально скопированные с http://python-rq.org/docs/:
app.py
from rq import Queue
from redis import Redis
from somewhere import count_words_at_url
import time
# Tell RQ what Redis connection to use
redis_conn = Redis()
q = Queue(connection=redis_conn) # no args implies the default queue
print(redis_conn)
# Delay execution of count_words_at_url('http://nvie.com')
job = q.enqueue(count_words_at_url, 'http://nvie.com')
print(job.result) # => None
# Now, wait a while, until the worker is finished
time.sleep(10)
print(job.result) # => 889
somewhere.py
import requests
def count_words_at_url(url):
print("hello?")
resp = requests.get(url)
return len(resp.text.split())
Я запустил app.py
, и я получил результат 2 None, а не 889, которые я должен получить в соответствии с документами.
Я не уверен, что понимаю, почему это происходит. Мой тайм-аут составляет 10 секунд, и это дольше, чем в документе, поэтому я ожидал, что работа закончит работу.
Что я делаю неправильно?
Сервер Redis работает?
статус службы redis-сервера
Работает ли rq рабочий?
rq info
если рабочий не работает, то
rq worker # run this under the same directory of your project
18:44:54 RQ worker 'rq:worker:ubuntu.45276' started, version 0.12.0
18:44:54 *** Listening on default...
18:44:54 Cleaning registries for queue: default
замените count_words_at_url на более простую функцию, например
def just_mock (url): time.sleep(5) return "count words for {} is??". format (url)
count_words_at_url('http://nvie.com')
,count_words_at_url('http://nvie.com')
лиcount_words_at_url('http://nvie.com')
889 самостоятельно?