Я пытаюсь использовать concurrent.futures
, чтобы получить много ответов за более короткое время, чем последовательно. Я попытался сделать следующее, но символ, который запрашивается, по какой-то причине переходит к последнему.
Код, который у меня есть:
from concurrent import futures
import requests
PARAMS = {
'fmt': 'json',
}
def get_share(session, share):
print('Getting Symbol {0}'.format(share))
response = session.get(
'https://example.com/api/eod/{0}'.format(share),
params=PARAMS
)
return response
def requests_with_futures(share_list):
close_list = []
session = requests.Session()
with futures.ThreadPoolExecutor(max_workers=4) as executor:
future_results = [
executor.submit(
lambda: get_share(session, share))
for share in share_list
]
close_list = [f.result() for f in future_results]
if __name__ == '__main__':
share_list = [
'US.AAPL', 'US.AABA', 'US.AAL', 'US.ADT', 'US.AES', 'US.AFL',
'US.AFNL', 'US.AFT', 'US.AGE', 'US.AIA', 'US.AST', 'US.ATO',
'ZZZZZ'
]
requests_with_futures(share_list)
Результаты:
Getting Symbol US.AAPL
Getting Symbol US.AABA
Getting Symbol US.AAL
Getting Symbol US.ADT
Getting Symbol ZZZZZ
Getting Symbol ZZZZZ
Getting Symbol ZZZZZ
Getting Symbol ZZZZZ
Getting Symbol ZZZZZ
Getting Symbol ZZZZZ
Getting Symbol ZZZZZ
Getting Symbol ZZZZZ
Getting Symbol ZZZZZ
Почему это не работает правильно?