2017-06-13 51 views
-1

我試圖使用redis與API(Mailchimp)進行通信並將查詢結果保存到csv文件;但該函數既不保存csv文件也不返回任何錯誤。我錯過了什麼?REDIS:redis在python中不返回任何內容

這是我的BG功能:

def mailchimp_get_subscribed(): 

    config = mailchimp_config() 
    path_params = 'lists' + '/xxxxxxxxx' + '/members' 
    endpoint = urlparse.urljoin(config.api_root, path_params) 
    query_params = {'fields': 'members.email_address', 'count': 10, 'offset': 0} 

    data = requests.get(endpoint, auth=('apikey', config.apikey), params=query_params, verify=False).text 
    data = json.loads(data) 
    df = json_normalize(data['members']) 
    df.to_csv('existing.csv') 

    return df 

這是我main.py:

from rq import Queue 
from redis import Redis 
from mailchimp_get_subscribed import mailchimp_get_subscribed 

# Tell RQ what Redis connection to use 
redis_conn = Redis() 
q = Queue(connection=redis_conn) # no args implies the default queue 

# Delay execution of mailchimp_get_subscribed 
job = q.enqueue(mailchimp_get_subscribed) 
print(job.result) 
time.sleep(5) 
print(job.result) 

這是輸出:

runfile('/path/main.py', wdir='/path') 
Reloaded modules: mailchimp_get_subscribed, mailchimp_config 
None 
None 

雖然這要花費一毫秒api來響應,我的main.py既沒有返回df也沒有保存csv文件。我嘗試過執行mailchimp_get_subscribed(),它將csv正確保存在當前路徑上,所以當函數沒有被redis執行時,它正常工作。

我缺少什麼?

在ADITION ......這是Redis的-CLI監視器顯示的日誌:

1497331842.335658 [0 [::1]:59600] "MULTI" 
1497331842.335722 [0 [::1]:59600] "SADD" "rq:queues" "rq:queue:default" 
1497331842.335762 [0 [::1]:59600] "HSET" "rq:job:afe583b0-82e1-45ae-830b-9564faaa932e" "status" "queued" 
1497331842.335776 [0 [::1]:59600] "HMSET" "rq:job:afe583b0-82e1-45ae-830b-9564faaa932e" "timeout" "180" "description" "mailchimp_get_subscribed.mailchimp_get_subscribed()" "data" "\x80\x04\x95<\x00\x00\x00\x00\x00\x00\x00(\x8c1mailchimp_get_subscribed.mailchimp_get_subscribed\x94N)}\x94t\x94." "status" "queued" "enqueued_at" "2017-06-13T05:30:42Z" "created_at" "2017-06-13T05:30:42Z" "origin" "default" 
1497331842.335827 [0 [::1]:59600] "RPUSH" "rq:queue:default" "afe583b0-82e1-45ae-830b-9564faaa932e" 
1497331842.335862 [0 [::1]:59600] "EXEC" 
1497331842.336224 [0 [::1]:59600] "HGET" "rq:job:afe583b0-82e1-45ae-830b-9564faaa932e" "result" 
1497331847.342004 [0 [::1]:59600] "HGET" "rq:job:afe583b0-82e1-45ae-830b-9564faaa932e" "result" 

回答

1

問題是我還沒有開始的工人!

1

賓果。我得到了問題

您正在使用命令設置散列:

"HMSET" "rq:job:afe583b0-82e1-45ae-830b-9564faaa932e" "timeout" "180" "description" "mailchimp_get_subscribed.mailchimp_get_subscribed()" "data" "\x80\x04\x95<\x00\x00\x00\x00\x00\x00\x00(\x8c1mailchimp_get_subscribed.mailchimp_get_subscribed\x94N)}\x94t\x94." "status" "queued" "enqueued_at" "2017-06-13T05:30:42Z" "created_at" "2017-06-13T05:30:42Z" "origin" "default" 

如果我得到的數據如下:rq:job:afe583b0-82e1-45ae-830b-9564faaa932e如下:

127.0.0.1:6379> HGETALL rq:job:afe583b0-82e1-45ae-830b-9564faaa932e 
1) "data" 
2) "\x80\x04\x95<\x00\x00\x00\x00\x00\x00\x00(\x8c1mailchimp_get_subscribed.mailchimp_get_subscribed\x94N)}\x94t\x94." 
3) "description" 
4) "mailchimp_get_subscribed.mailchimp_get_subscribed()" 
5) "origin" 
6) "default" 
7) "enqueued_at" 
8) "2017-06-13T05:30:42Z" 
9) "timeout" 
10) "180" 
11) "created_at" 
12) "2017-06-13T05:30:42Z" 
13) "status" 
14) "queued" 

,且您嘗試使用獲取散列數據:

"HGET" "rq:job:afe583b0-82e1-45ae-830b-9564faaa932e" "result" 

但是有一個叫result IN YOUR HASH

沒有元素所以這就是爲什麼你得到blanknull作爲結果。

試試下面代碼來解決:

print(job.description) 

OR

print(job.enqueued_at) 
相關問題