小编G0r*_*0rt的帖子

如何关闭 aiohttp ClientSession

我正在尝试制作一个可以存活一天、一周或更长时间的应用程序。在应用程序的生命周期中,它会向不同的 API 发出请求。其中一些 api 可能需要登录,因此我可以随时访问 cookie,这一点很重要。

所以我需要的是一个不同的 API 可以在不阻塞应用程序的情况下使用的文件。

我是异步编程(asyncio/aiohttp)的新手,我见过的示例展示了如何从 url 列表发出大量请求,但这不是我需要的。

我的代码的问题是,我得到 ClientSession is closed 错误或未关闭的 ClientSession 警告。

import asyncio  # only here for debugging purposes
import aiohttp

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:61.0) Gecko/20100101 Firefox/61.1'


def default_headers():
    header = {
        'User-Agent': USER_AGENT
    }
    return header


class WebSession(object):
    session = None

    @classmethod
    def create(cls):
        cls.session = aiohttp.ClientSession()
        return cls.session

    @classmethod
    def close(cls):
        if cls.session is not None:
            cls.session.close()

async def request(method, url, **kwargs):

    if kwargs.get('headers', None) is …
Run Code Online (Sandbox Code Playgroud)

python aiohttp

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

aiohttp ×1

python ×1