|  |  |  | @ -15,43 +15,43 @@ First, run a Redis server.  You can use an existing one.  To put jobs on | 
		
	
		
			
				|  |  |  |  | queues, you don't have to do anything special, just define your typically | 
		
	
		
			
				|  |  |  |  | lengthy or blocking function: | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | {% highlight python %} | 
		
	
		
			
				|  |  |  |  | ```python | 
		
	
		
			
				|  |  |  |  | import requests | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | def count_words_at_url(url): | 
		
	
		
			
				|  |  |  |  |     resp = requests.get(url) | 
		
	
		
			
				|  |  |  |  |     return len(resp.text.split()) | 
		
	
		
			
				|  |  |  |  | {% endhighlight %} | 
		
	
		
			
				|  |  |  |  | ``` | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | Then, create a RQ queue: | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | {% highlight python %} | 
		
	
		
			
				|  |  |  |  | ```python | 
		
	
		
			
				|  |  |  |  | from redis import Redis | 
		
	
		
			
				|  |  |  |  | from rq import Queue | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | q = Queue(connection=Redis()) | 
		
	
		
			
				|  |  |  |  | {% endhighlight %} | 
		
	
		
			
				|  |  |  |  | ``` | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | And enqueue the function call: | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | {% highlight python %} | 
		
	
		
			
				|  |  |  |  | ```python | 
		
	
		
			
				|  |  |  |  | from my_module import count_words_at_url | 
		
	
		
			
				|  |  |  |  | result = q.enqueue(count_words_at_url, 'http://nvie.com') | 
		
	
		
			
				|  |  |  |  | {% endhighlight %} | 
		
	
		
			
				|  |  |  |  | ``` | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | Scheduling jobs are similarly easy: | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | {% highlight python %} | 
		
	
		
			
				|  |  |  |  | ```python | 
		
	
		
			
				|  |  |  |  | # Schedule job to run at 9:15, October 10th | 
		
	
		
			
				|  |  |  |  | job = queue.enqueue_at(datetime(2019, 10, 8, 9, 15), say_hello) | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | # Schedule job to be run in 10 seconds | 
		
	
		
			
				|  |  |  |  | job = queue.enqueue_in(timedelta(seconds=10), say_hello) | 
		
	
		
			
				|  |  |  |  | {% endhighlight %} | 
		
	
		
			
				|  |  |  |  | ``` | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | You can also ask RQ to retry failed jobs: | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | {% highlight python %} | 
		
	
		
			
				|  |  |  |  | ```python | 
		
	
		
			
				|  |  |  |  | from rq import Retry | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | # Retry up to 3 times, failed job will be requeued immediately | 
		
	
	
		
			
				
					|  |  |  | @ -59,20 +59,20 @@ 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])) | 
		
	
		
			
				|  |  |  |  | {% endhighlight %} | 
		
	
		
			
				|  |  |  |  | ``` | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | ### The worker | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | To start executing enqueued function calls in the background, start a worker | 
		
	
		
			
				|  |  |  |  | from your project's directory: | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | {% highlight console %} | 
		
	
		
			
				|  |  |  |  | ```console | 
		
	
		
			
				|  |  |  |  | $ 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 | 
		
	
		
			
				|  |  |  |  | {% endhighlight %} | 
		
	
		
			
				|  |  |  |  | ``` | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | That's about it. | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | 
 |