RQ( Redis Queue )는 작업을 대기열에 추가하고 작업자와 함께 백그라운드에서 처리하기 위한 간단한 Python 라이브러리입니다. Redis의 지원을 받으며 진입 장벽이 낮도록 설계되었습니다. 웹 스택에 쉽게 통합되어야 합니다.
RQ에는 Redis >= 3.0.0이 필요합니다.
전체 문서는 여기에서 찾을 수 있습니다.
RQ가 유용하다고 생각하시면 Tidelift를 통해 이 프로젝트를 지원해 보세요.
먼저 Redis 서버를 실행합니다.
$ redis-server
대기열에 작업을 추가하려면 특별한 작업을 수행할 필요가 없으며 일반적으로 길거나 차단하는 기능을 정의하기만 하면 됩니다.
import requests
def count_words_at_url ( url ):
"""Just an example function that's called async."""
resp = requests . get ( url )
return len ( resp . text . split ())
그런 다음 RQ 대기열을 만듭니다.
from redis import Redis
from rq import Queue
queue = Queue ( connection = Redis ())
그리고 함수 호출을 대기열에 추가합니다.
from my_module import count_words_at_url
job = queue . enqueue ( count_words_at_url , 'http://nvie.com' )
작업 예약도 마찬가지로 쉽습니다.
# Schedule job to run at 9:15, October 10th
job = queue . enqueue_at ( datetime ( 2019 , 10 , 10 , 9 , 15 ), say_hello )
# Schedule job to run in 10 seconds
job = queue . enqueue_in ( timedelta ( seconds = 10 ), say_hello )
실패한 작업 재시도도 지원됩니다.
from rq import Retry
# Retry up to 3 times, failed job will be requeued immediately
queue . enqueue ( say_hello , retry = Retry ( max = 3 ))
# Retry up to 3 times, with configurable intervals between retries
queue . enqueue ( say_hello , retry = Retry ( max = 3 , interval = [ 10 , 30 , 60 ]))
더 완전한 예를 보려면 문서를 참조하세요. 그러나 이것이 본질입니다.
대기열에 추가된 함수 호출을 백그라운드에서 실행하려면 프로젝트 디렉터리에서 작업자를 시작하세요.
$ rq worker --with-scheduler
*** Listening for work on default
Got count_words_at_url('http://nvie.com') from default
Job result = 818
*** Listening for work on default
그게 다야.
최신 릴리스 버전을 설치하려면 다음 명령을 사용하십시오.
pip install rq
최신 버전(깨질 수 있음)을 원할 경우 다음을 사용하세요.
pip install git+https://github.com/rq/rq.git@master#egg=rq
문서를 빌드하고 실행하려면 jekyll을 설치하고 다음을 실행하세요:
cd docs
jekyll serve
RQ를 사용하는 경우 rq 기반 프로젝트에 유용할 수 있는 아래 저장소를 확인하세요.
이 프로젝트는 Celery, Resque 및 이 코드 조각의 좋은 부분에서 영감을 얻었으며 Celery 또는 기타 AMQP 기반 대기열 구현의 무거움에 대한 가벼운 대안으로 만들어졌습니다.