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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章