You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

旧环境(Ubuntu18.04+Docker19.03.13)下Python3.10+的multiprocessing.Manager异常问题求助

旧环境(Ubuntu18.04+Docker19.03.13)下Python3.10+的multiprocessing.Manager异常问题求助

我遇到了一个棘手的问题:需要在装有Docker 19.03.13的Ubuntu18.04主机上部署Python应用,但目前这两者都没法更新,只能在现有环境下解决问题。

当我尝试运行应用时,它总是因为多进程相关的异常崩溃。我把问题简化成了两行测试代码来复现:

from multiprocessing import Manager
Manager().dict()

我试过不同版本的Python3官方镜像,但所有测试过的3.10+版本都抛出了两种异常之一:

第一种是连接重置错误:

ConnectionResetError: [Errno 104] Connection reset by peer

对应的完整报错栈:

Python 3.12.8 (main, Dec  4 2024, 20:39:47) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from multiprocessing import Manager
>>> Manager().dict()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.12/multiprocessing/managers.py", line 726, in temp
    token, exp = self._create(typeid, *args, **kwds)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/multiprocessing/managers.py", line 606, in _create
    conn = self._Client(self._address, authkey=self._authkey)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/multiprocessing/connection.py", line 525, in Client
    answer_challenge(c, authkey)
  File "/usr/local/lib/python3.12/multiprocessing/connection.py", line 953, in answer_challenge
    message = connection.recv_bytes(256)         # reject large message
              ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/multiprocessing/connection.py", line 216, in recv_bytes
    buf = self._recv_bytes(maxlength)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/multiprocessing/connection.py", line 430, in _recv_bytes
    buf = self._recv(4)
          ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/multiprocessing/connection.py", line 395, in _recv
    chunk = read(handle, remaining)
            ^^^^^^^^^^^^^^^^^^^^^^^
ConnectionResetError: [Errno 104] Connection reset by peer

第二种是文件找不到错误:

FileNotFoundError: [Errno 2] No such file or directory

对应的完整报错栈:

Python 3.10.16 (main, Dec  4 2024, 20:37:22) [GCC 12.2.0] on linux Type "help", "copyright", "credits" or "license" for more information.
>>> from multiprocessing import Manager
>>> Manager().dict() 
Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "/usr/local/lib/python3.10/multiprocessing/managers.py", line 723, in temp
    token, exp = self._create(typeid, *args, **kwds)   File "/usr/local/lib/python3.10/multiprocessing/managers.py", line 606, in
_create
    conn = self._Client(self._address, authkey=self._authkey)   File "/usr/local/lib/python3.10/multiprocessing/connection.py", line 502, in Client
    c = SocketClient(address)   File "/usr/local/lib/python3.10/multiprocessing/connection.py", line 630, in SocketClient
    s.connect(address) FileNotFoundError: [Errno 2] No such file or directory

我的测试方式是通过以下命令启动Docker容器,然后在交互式解释器中运行上述两行代码:

docker run -it --entrypoint=/bin/bash python:VERSION

我试过的大多数Python版本都出现了上述异常,只有python:3.8.2能够正常运行。

另外,在其他装有较新OS和Docker的机器上,所有Python版本都能正常工作。

所以我的问题是:在不更新主机OS和Docker的前提下,如何让Python3.10+在这个旧环境中正常运行?

备注:内容来源于stack exchange,提问作者Sergey Yampol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:30:26