python aiohttp 异步携程 请求

import json
import aiohttp
import asyncio

async def httpPost(session,url,data,headers=None,cookies=None):
	async with session.post(url=url,data=data,headers=headers,cookies=cookies) as res:
		assert res.status == 200
		try:
            #此处为了方便返回结果为json,注意content_type类型要与请求返回的一致
			resData = await res.json(content_type='application/json',encoding='utf-8') 
			return resData
		except Exception as e:
			MyLog.error(e)
			resData = await res.text()
			return json.loads(resData) 
			
			

async def httpGet(session,url,data,headers=None,cookies=None):
	async with session.get(url=url,data=data,headers=headers,cookies=cookies) as res:
		assert res.status == 200
		try:
			resData = await res.json(content_type='application/json',encoding='utf-8')
			return resData
		except Exception as e:
			MyLog.error(e)
			resData = await res.text()
			return json.loads(resData)




#定义一个方法调用上面的异步请求get和post方法
async def go(dev,type):
    headers = {
		'deviceId': dev,
		'mac': "bc:1c:81:93:ad:10",
		'app_ver': '1.0',
		'resolution': '1080*720,1920*1080',
		'resolution_type': type,
		'dev_type': '3',
		'Content-Type': 'application/json'
	}
    
    #创建一个aiohttp的异步请求的ClientSession
    async with aiohttp.ClientSession() as session:
        url_online = ''.join([host, online])
        data_online_param = json.dumps(data_online)
        headers['sign']= get_sign(data_online)
        MyLog.info("设备{0}上线请求参数:{1}".format(dev,data_online))
        res_online = await http_request.httpPost(session=session,url=url_online,data=data_online_param,headers=headers)
        MyLog.info("设备{0}上线响应结果{1}".format(dev,res_online))
        if 'msg' in res_online.keys() and res_online['msg'] == 'success':
            basePlayid = res_online['data']['playlist_id']
            basePlayType = res_online['data']['playlist_type']
        else:
            MyLog.error("设备{0}上线请求基础播放列表异常,响应参数{1}".format(dev,res_online))
            return

猜你喜欢

转载自blog.csdn.net/dance117/article/details/101539341