如何向aiohttp ClientSession传递参数和头文件?

问题描述 投票:1回答:1

我想通过 paramsheadersaiohttp.ClientSession 如图 此处.

这是我试过的。

    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

我希望设置标题,如果让我们的网址是 币值no params/headers 否则,如何解决?

python-3.x python-requests python-asyncio aiohttp
1个回答
2
投票

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调用中发送。我想这两种方法都可以。

© www.soinside.com 2019 - 2024. All rights reserved.