python redis-queue: простой пример из документации не работает

1

У меня есть два файла, буквально скопированные с 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 секунд, и это дольше, чем в документе, поэтому я ожидал, что работа закончит работу.

Что я делаю неправильно?

  • 0
    count_words_at_url('http://nvie.com') , count_words_at_url('http://nvie.com') ли count_words_at_url('http://nvie.com') 889 самостоятельно?
Теги:
python-3.x
redis
queue
message-queue

1 ответ

0
  1. Сервер Redis работает?

    статус службы redis-сервера

  2. Работает ли 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
  1. замените count_words_at_url на более простую функцию, например

    def just_mock (url): time.sleep(5) return "count words for {} is??". format (url)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню