2016-08-01 19 views
0

Asynchronous Requests with Python requests grequestsの基本的な使い方を説明しています。grequests.get()経由でフックを送信する方法を知っています。grequests経由の関数呼び出し

私は出力が

print_test 
print_test 
print_test 
print_test 

ことを期待する4つのリンクがあるので、私は何も出力

/$ python test.py 
/$ 

を取得していないが、これを実行すると、私は周りに検索し、避難所」されている

import grequests 

urls = [ 
    'http://python-requests.org', 
    'http://httpbin.org', 
    'http://python-guide.org', 
    'http://kennethreitz.com' 
] 

# A simple task to do to each response object 
def do_something(response): 
    print ('print_test') 

# A list to hold our things to do via async 
async_list = [] 

for u in urls: 
    action_item = grequests.get(u, hooks = {'response' : do_something}) 

    async_list.append(action_item) 

# Do our list of things to do via async 
grequests.map(async_list) 

アウトプットの欠如の理由を見つけることができました私が欠けている重要な情報が少しありますが面白いです。

答えて

1

私はまだソースをチェックする必要がありますが、あなたは

# A simple task to do to each response object 
def do_something(response, *args, **kwargs): 
    print ('print_test') 

として、あなたのフック関数を書き換える場合には、結果を出力します。だからおそらく元のフック(あなたが受け入れるよりも多くの引数を渡しているので)と例外をキャッチして、出力が得られないので、

+0

ちょうどそれを試してみて、それは完璧に動作します!私はあなたが議論の量について正しいと信じています。 – user3267256

+0

印刷されたkwargs。あなたのフック関数にキーワード引数の全体の束を渡すことが判明しました。 {'プロキシ':OrderedDict()、 'タイムアウト':なし、 'ストリーム':偽、 '証明':なし、 '確認':真} ' –

関連する問題