2017-09-13 91 views
0

下面是功能正在使用擺脫producer.pyPython中獲取變量值的功能之外的RabbitMQ

def callback(ch, method, properties, body): 
result = body.decode() 
resp = JSONEncoder().encode(result) 
json_resp = json.loads(resp) 
print(json_resp) 
ch.basic_ack(delivery_tag = method.delivery_tag) 
channel.stop_consuming() 

的消息,該打印出預期的結果,但是在找的是獲得可變json_resp回調函數以外的進一步處理

回答

2

使這個變量global或者你可以將其存儲在任何數據庫或文件中,還可以使用Python數據結構(如Dictionary,Lists)初始化該函數的外側並相應地追加該值。

+0

存儲在一個文件中。酷:) –

0

你可以在你的方法結束json_resp值。否則,你可以調用一個函數json_resp作爲參數來執行你的進一步處理

1)

def callback(ch, method, properties, body): 
    result = body.decode() 
    resp = JSONEncoder().encode(result) 
    json_resp = json.loads(resp)  
    print(json_resp) 
    ch.basic_ack(delivery_tag = method.delivery_tag) 
    channel.stop_consuming() 
    return json_resp 


responce = callback(ch, method, properties, body) 
print responce 

2)

def callback(ch, method, properties, body): 
    result = body.decode() 
    resp = JSONEncoder().encode(result) 
    json_resp = json.loads(resp)  
    print(json_resp) 
    ch.basic_ack(delivery_tag = method.delivery_tag) 
    channel.stop_consuming() 
    my_process_func(json_resp) 

還可以治療變種作爲一個全局變量,如圖在here, 我個人不太喜歡的東西

+0

可以發佈樣本代碼 –

+0

剛剛在返回json_resp後的第一個點編輯答案 –

+0

。我試圖訪問外部函數像打印(json_resp)拋出和錯誤 - NameError:名稱'json_resp'未定義。 –