2016-10-27 3 views
0

супер простой случай использования - положить изображение загрузить работу с Redis очередипитона Redis очередь ставит в очередь только 1 работа

# main.py 
from redis import Redis 
from rq import Queue 
from tasks import download_asset 

queue = Queue(connection=Redis()) 
if __name__ == '__main__': 
    image_urls = ['https://image.com/image1.png', 'https://image.com/image2.png'] 
    job1 = queue.enqueue(download_asset, image_urls[0], result_ttl=5000) 
    print job1 
    job2 = queue.enqueue(download_asset, image_urls[1], result_ttl=5000) 
    print job2 
    import time; time.sleep(3) 
    print job1.result 
    print job2.result 

когда я бегу python main.py,

<Job 8de87fc3-0480-4181-bb57-182773eaa4dd: tasks.download_asset('https://image.com/image1.png')> 
<Job 6e334cc7-e2a5-46cb-b28a-7f8df6921c44: tasks.download_asset('https://image.com/image2.png')> 
None 
None 

результатов их нет, но я вижу второе изображение загружено в папку. и в журнале рабочих

01:48:26 default: tasks.download_asset('https://image.com/image2.png') (6e334cc7-e2a5-46cb-b28a-7f8df6921c44) 
download image 
01:48:26 Job OK 
01:48:26 Result is kept for 5000 seconds 
01:48:26 
01:48:26 *** Listening on default... 

только 1 работа была обработана

Рабочие были уставились с помощью rq worker.

скачать код:

def download_asset(url): 
    print 'download image' 
    media_file = urllib2.urlopen(url) 
    file_name = url.split('/')[-1] 
    with open(file_name, 'w') as f: 
    f.write(media_file.read()) 

одна вещь, которую я заметил, если я ставлю sleep.time (3) между Епдиеие, то первый по-прежнему не получает в очередь

+0

где определены image_urls? –

+0

прямо над enqueue –

+0

Как вы знаете, что только один объект находится в очереди? –

ответ

0

глупо, у меня еще один сотрудник из другого проекта, который вытаскивает задания из той же очереди redis