6

http リクエストをサーバーに送信する方法があるとしましょう。これらのリクエストのうち 2 つ (またはそれ以上) を同時にサーバーに送信するにはどうすればよいでしょうか? たとえば、プロセスをフォークすることでしょうか?どうすればできますか?(私もdjangoを使用しています)

#This example is not tested...
import requests

def tester(request):
    server_url = 'http://localhost:9000/receive'

    payload = {
        'd_test2': '1234',
        'd_test2': 'demo',
        }
    json_payload = simplejson.dumps(payload)
    content_length = len(json_payload)

    headers = {'Content-Type': 'application/json', 'Content-Length': content_length}
    response = requests.post(server_url, data=json_payload, headers=headers, allow_redirects=True)

    if response.status_code == requests.codes.ok:
        print 'Headers: {}\nResponse: {}'.format(response.headers, response.text)

ありがとう!

4

2 に答える 2

3

これはgevent、これらすべてをいわゆるグリーンスレッドで起動できます。

# This will make requests compatible
from gevent import monkey; monkey.patch_all()
import requests

# Make a pool of greenlets to make your requests
from gevent.pool import Pool
p = Pool(10)

urls = [..., ..., ...]
p.map(requests.get, urls)

もちろん、この例でgetは s を送信しますが、pool は一般化されて、入力を任意の関数にマップします。たとえば、リクエストを作成する関数も含まれます。これらの greenlet は、使用するのとほぼ同時に実行されますforkが、はるかに高速で軽量です。

于 2013-04-01T22:29:59.547 に答える