1 方法一是通过requests.Session 一次性获取TCP连接后,之后的请求可以共享
import requests
import time
headers = {"Content-Type":"application/json",
"Authorization":"Bearer 86e9e12426c77b242522429e308068a921819fad3a44-3386c7b03993469c343536536346947"}
url = 'https://api-fxpractice.oanda.com/v3/instruments/EUR_USD/candles'
count = '10'
granularity = 'M1'
price = 'M'
fields={'count':count,'granularity':granularity,'price':price}
session = requests.Session()
session.headers.update(headers)
session.params.update(fields)
num = 0
while True:
time.sleep(0.2)
with session.get(url,headers=headers) as r:
print(r.status_code)
print(r.text)
2 通过协程的方式获得更为高效的请求
import aiohttp
import asyncio
headers = {"Content-Type":"application/json",
"Authorization":"Bearer 86e9e23425368a921819fad3a44-3386c7b252424255e4134812f7d947"}
url = 'https://api-fxpractice.oanda.com/v3/instruments/EUR_USD/candles'
count = '10'
granularity = 'M1'
price = 'M'
params={'count':count,'granularity':granularity,'price':price}
async def fetch():
await asyncio.sleep(0.2)
async with aiohttp.ClientSession(headers=headers) as session:
while True:
async with session.get(url,params=params) as resp:
print(resp.status)
print(await resp.text())
if __name__ == '__main__':
loop = asyncio.get_event_loop()
try:
loop.run_until_complete(fetch())
except RuntimeError as e:
pass