如何将参数和标头传递给 aiohttp ClientSession
Posted
技术标签:
【中文标题】如何将参数和标头传递给 aiohttp ClientSession【英文标题】:How to pass params and headers to aiohttp ClientSession 【发布时间】:2020-05-05 14:13:55 【问题描述】:我希望将params
和headers
传递给aiohttp.ClientSession
,如图所示here。
这是我尝试过的:
async def make_request(self, url, headers, params):
async with aiohttp.ClientSession(headers=headers, params=params) as session:
async with self.limit, session.get(url=url) as response:
await asyncio.sleep(self.rate)
resp = await response.read()
return resp
async def process(url, url_id, update_id, rate, limit):
limit = asyncio.BoundedSemaphore(limit)
f = Fetch(
rate=rate,
limit=limit,
)
if "coinmarketcap" in url:
params =
'start': '1',
'limit': '1',
'convert': 'USD,BTC'
headers =
'Accepts': 'application/json',
'X-CMC_PRO_API_KEY': API_KEY,
else:
params =
headers =
result = await f.make_request(url, headers, params)
但我得到了错误:
Unexpected Argument at:
async with aiohttp.ClientSession(headers=headers, params=params) as session
如果 URL 是 coinmarketcap 和 no params/headers
,我希望设置标题。
如何解决?
【问题讨论】:
【参考方案1】:params 属性不能传递给会话。您需要在 get 调用中发送它,如下所示:
async def make_request(self, url, headers, params):
async with aiohttp.ClientSession(headers=header) as session:
async with self.limit, session.get(url=url, params=params) as response:
await asyncio.sleep(self.rate)
resp = await response.read()
return resp
您可以在客户端会话初始化或 get 调用中发送标头。我认为两者都可以。
【讨论】:
天哪!我怎么错过了?谢谢@PirateNinjas :)以上是关于如何将参数和标头传递给 aiohttp ClientSession的主要内容,如果未能解决你的问题,请参考以下文章