我有如下的小代码片段:
import requests
import multiprocessing
header = {
'X-Location': 'UNKNOWN',
'X-AppVersion': '2.20.0',
'X-UniqueId': '2397123',
'X-User-Locale': 'en',
'X-Platform': 'Android',
'X-AppId': 'com.my_app',
'Accept-Language': 'en-ID',
'X-PushTokenType': 'GCM',
'X-DeviceToken': 'some_device_token'
}
BASE_URI = 'https://my_server.com/v2/customers/login'
def internet_resource_getter(post_data):
stuff_got = []
response = requests.post(BASE_URI, headers=header, json=post_data)
stuff_got.append(response.json())
return stuff_got
tokens = [{"my_token":'EAAOZAe8Q2rKYBAu0XETMiCZC0EYAddz4Muk6Luh300PGwGAMh26Bpw3AA6srcxbPWSTATpTLmvhzkUHuercNlZC1vDfL9Kmw3pyoQfpyP2t7NzPAOMCbmCAH6ftXe4bDc4dXgjizqnudfM0D346rrEQot5H0esW3RHGf8ZBRVfTtX8yR0NppfU5LfzNPqlAem9M5ZC8lbFlzKpZAZBOxsaz'},{"my_token":'EAAOZAe8Q2rKYBAKQetLqFwoTM2maZBOMUZA2w5mLmYQi1GpKFGZAxZCaRjv09IfAxxK1amZBE3ab25KzL4Bo9xvubiTkRriGhuivinYBkZAwQpnMZC99CR2FOqbNMmZBvLjZBW7xv6BwSTu3sledpLSGQvPIZBKmTv3930dBH8lazZCs3q0Q5i9CZC8mf8kYeamV9DED1nsg5PQZDZD'}]
pool = multiprocessing.Pool(processes=3)
pool_outputs = pool.map(internet_resource_getter, tokens)
pool.close()
pool.join()
我要做的就是向端点发出并行 POST 请求,而每个 POST 将具有不同的令牌,因为它是 post 正文。
- 我能用上面的方法实现我想要的吗?我得到了输出,但不确定我的请求是否是并行发送的。
- 我知道 grequests。我想实现真正的并行请求(如在我的系统上使用多个处理器),因此我选择了多处理而不是 grequests(据我所知,它使用 gevents,它又不是并行的,而是多线程的)。我的理解在这里正确吗?