单线程下两种相对高效的获取数据的方法

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值