Skip to content

Commit

Permalink
v9.0.2
Browse files Browse the repository at this point in the history
  • Loading branch information
MoyuScript committed Nov 6, 2021
1 parent d67fa55 commit ac5ab3e
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 16 deletions.
4 changes: 4 additions & 0 deletions CHANGELOGS/v9.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
v9.0.2 2021/11/06
+ 修复部分文档错误
+ 增加对多线程的支持

v9.0.1 2021/11/02
+ 修复 video_uploader 上传大文件时转码失败的错误

Expand Down
28 changes: 13 additions & 15 deletions bilibili_api/utils/network.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,18 @@
from .Credential import Credential
from .. import settings

__session_pool = {}

@atexit.register
def __clean():
"""
程序退出清理操作。
"""
async def __clean_task():
await __session.close()
loop = asyncio.get_event_loop()

if __session is None or __session.closed:
return
async def __clean_task():
await __session_pool[loop].close()

loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
if loop.is_closed():
loop.run_until_complete(__clean_task())
else:
Expand Down Expand Up @@ -161,20 +159,20 @@ async def request(method: str,
return real_data


__session: aiohttp.ClientSession = None


def get_session():
"""
获取当前模块的 aiohttp.ClientSession 对象,用于自定义请求
Returns:
aiohttp.ClientSession
"""
global __session
if __session is None:
__session = aiohttp.ClientSession(loop=asyncio.get_event_loop())
return __session
loop = asyncio.get_event_loop()
session = __session_pool.get(loop, None)
if session is None:
session = aiohttp.ClientSession(loop=loop)
__session_pool[loop] = session

return session


def set_session(session: aiohttp.ClientSession):
Expand All @@ -184,8 +182,8 @@ def set_session(session: aiohttp.ClientSession):
Args:
session (aiohttp.ClientSession): aiohttp.ClientSession 实例。
"""
global __session
__session = session
loop = asyncio.get_event_loop()
__session_pool[loop] = session


def to_form_urlencoded(data: dict) -> str:
Expand Down
8 changes: 8 additions & 0 deletions bilibili_api/utils/sync.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
from typing import Coroutine
import asyncio

def __ensure_event_loop():
try:
asyncio.get_event_loop()

except:
asyncio.set_event_loop(asyncio.new_event_loop())


def sync(coroutine: Coroutine):
"""
Expand All @@ -12,6 +19,7 @@ def sync(coroutine: Coroutine):
Returns:
该异步函数的返回值
"""
__ensure_event_loop()
loop = asyncio.get_event_loop()
return loop.run_until_complete(coroutine)

2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

setuptools.setup(
name='bilibili-api',
version='9.0.1',
version='9.0.2',
license='GPLv3+',
author='MoyuScript',
description='哔哩哔哩的各种 API 调用便捷整合(视频、动态、直播等),另外附加一些常用的功能。',
Expand Down

0 comments on commit ac5ab3e

Please sign in to comment.