如何创建单个aiohttp.ClientSession?

aiohttp推荐一个app使用一个clientsession,但是clientsession无法在协程外声明,那我怎么在不同的协程使用同一个clientsession呢?

阅读 3.5k
1 个回答
import aiohttp
import asyncio

class MySession:
    _session = None

    @classmethod
    def session(cls):
        if not cls._session:
            cls._session = aiohttp.ClientSession()
        return cls._session

    @classmethod
    def close(cls):
        return cls._session.close()


async def get_sth():
    resp = await MySession.session().get('http://httpbin.org/get')
    print(await resp.text())

async def close_session():
    await MySession.close()

# before start your app
loop = asyncio.get_event_loop()

loop.run_until_complete(get_sth())
# ...

# after stop your app
loop.run_until_complete(close_session())
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题