2017-09-13 12 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データ構造を使用することもできます。リストは関数のこの外側を初期化し、それに応じて値を追加します。

+0

をファイルに格納します。クール:) –

0

あなたの最後にjson_resp値を設定することができます。示したようにそうしないと、あなたは)

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)あなたの更なる処理

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() 
    my_process_func(json_resp) 

をjson_respで関数を呼び出すことができます。また、グローバル変数としてVARを扱うことができますhere、 何か私は個人的には本当に好きではない

+0

サンプルコード –

+0

を投稿すると、戻り値json_respの後の最初の点で回答が –

+0

に変更されました。私はprint(json_resp)のような関数の外部でアクセスしようとしました - NameError:name 'json_resp'が定義されていません。 –

関連する問題