HFrost0 / bilix

⚡️Lightning-fast async download tool for bilibili and more

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

httpx.RemoteProtocolError: <ConnectionTerminated error_code:0, last_stream_id:1999, additional_data:None>

luckykeeper opened this issue · comments

看到 #1 有人提到了这个问题,但是没有提供样例供复测,这里提供一个样例可供复测尝试
OS: Windows 11 企业版 22H2
bilix version: 0.18.5

下载命令如下,多次尝试后总会在中间报错停止,每次停止不在同一p上,试了别的几个 up 的没有这个问题,似乎不是普遍性问题,为防止同时请求过多的原因,尝试通过 vc pc sl 加以限制,仍然如此,同一时间下载了别的几个 up 的视频,其它的可以正常下载,这个的就不行,很奇怪

bilix up 'https://space.bilibili.com/436476225' --dir ./ -vc 1 -pc 1 -sr 99 --image --subtitle --dm -n 99999999 -fb firefox -sl 2MB

截取一次报错信息如下,供分析,重试次数没有达到预期,出错的这个链接同时使用浏览器打开了一下,没有问题

INFO     已存在 ゲーム「金色ラブリッチェ」Complete Sound Track/SAGA PLANETS-P3-1.03.崇尚诺布尔之风-弹幕.ass
WARNING  GET RemoteProtocolError url: https://www.bilibili.com/video/BV1m44y1j7kF?p=4
WARNING  GET RemoteProtocolError url: https://www.bilibili.com/video/BV1m44y1j7kF?p=4
WARNING  GET RemoteProtocolError url: https://www.bilibili.com/video/BV1m44y1j7kF?p=4
WARNING  GET RemoteProtocolError url: https://www.bilibili.com/video/BV1m44y1j7kF?p=4
WARNING  GET RemoteProtocolError url: https://www.bilibili.com/video/BV1m44y1j7kF?p=4
ERROR    GET 超过重复次数 https://www.bilibili.com/video/BV1m44y1j7kF?p=4

Traceback (most recent call last):
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\h2\connection.py", line 224, in process_input
    func, target_state = self._transitions[(self.state, input_)]
                         ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
KeyError: (<ConnectionState.CLOSED: 3>, <ConnectionInputs.SEND_HEADERS: 0>)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpcore\_async\http2.py", line 106, in handle_async_request
    await self._send_request_headers(request=request, stream_id=stream_id)
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpcore\_async\http2.py", line 203, in _send_request_headers
    self._h2_state.send_headers(stream_id, headers, end_stream=end_stream)
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\h2\connection.py", line 766, in send_headers
    self.state_machine.process_input(ConnectionInputs.SEND_HEADERS)
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\h2\connection.py", line 228, in process_input
    raise ProtocolError(
h2.exceptions.ProtocolError: Invalid input ConnectionInputs.SEND_HEADERS in state ConnectionState.CLOSED

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_transports\default.py", line 60, in map_httpcore_exceptions
    yield
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_transports\default.py", line 353, in handle_async_request
    resp = await self._pool.handle_async_request(req)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpcore\_async\connection_pool.py", line 253, in handle_async_request
    raise exc
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpcore\_async\connection_pool.py", line 237, in handle_async_request
    response = await connection.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpcore\_async\connection.py", line 90, in handle_async_request
    return await self._connection.handle_async_request(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpcore\_async\http2.py", line 139, in handle_async_request
    raise RemoteProtocolError(self._connection_error_event)
httpcore.RemoteProtocolError: <ConnectionTerminated error_code:0, last_stream_id:1999, additional_data:None>

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Scripts\bilix.exe\__main__.py", line 7, in <module>
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\click\core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\cli\main.py", line 374, in main
    loop.run_until_complete(cor)
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\sites\bilibili\downloader.py", line 266, in get_up
    await asyncio.gather(*cors)
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\sites\bilibili\downloader.py", line 276, in _get_up_by_page
    await asyncio.gather(
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\download\base_downloader.py", line 75, in wrapper
    return await func(*new_args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\sites\bilibili\downloader.py", line 312, in get_series
    await asyncio.gather(*cors)
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\download\base_downloader.py", line 75, in wrapper
    return await func(*new_args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\sites\bilibili\downloader.py", line 335, in get_video
    video_info = await api.get_video_info(self.client, url)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\download\utils.py", line 90, in wrapped
    return await func(client, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\sites\bilibili\api.py", line 399, in get_video_info
    return await _get_video_info_from_html(client, url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\sites\bilibili\api.py", line 406, in _get_video_info_from_html
    res = await req_retry(client, url, follow_redirects=True)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\download\utils.py", line 49, in req_retry
    raise pre_exc
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\bilix\download\utils.py", line 32, in req_retry
    res = await client.request(method, url, follow_redirects=follow_redirects, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_client.py", line 1533, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_client.py", line 1620, in send
    response = await self._send_handling_auth(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_client.py", line 1648, in _send_handling_auth
    response = await self._send_handling_redirects(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_client.py", line 1685, in _send_handling_redirects
    response = await self._send_single_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_client.py", line 1722, in _send_single_request
    response = await transport.handle_async_request(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_transports\default.py", line 352, in handle_async_request
    with map_httpcore_exceptions():
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\contextlib.py", line 155, in __exit__
    self.gen.throw(typ, value, traceback)
  File "C:\Users\Luckykeeper\AppData\Local\Programs\Python\Python311\Lib\site-packages\httpx\_transports\default.py", line 77, in map_httpcore_exceptions
    raise mapped_exc(message) from exc
httpx.RemoteProtocolError: <ConnectionTerminated error_code:0, last_stream_id:1999, additional_data:None>

未能复现