Cryptic AttributeError: 'tuple' object has no attribute 'setsockopt' error message
Cryptic AttributeError: 'tuple' object has no attribute 'setsockopt' error message
我正在尝试部署一个 dockerized python (nameko) 应用程序。
一切都按预期工作,直到我尝试通过 GET
方法访问其中一个模块。我收到一个非常神秘的错误:
...
File "/usr/local/lib/python3.6/site-packages/eventlet/wsgi.py", line 347,
in setup conn.setsockopt(socket.IPPROTO_TCP, socket.TCP_QUICKACK, True)
AttributeError: 'tuple' object has no attribute 'setsockopt'
我知道我的代码不是问题,因为它已经启动并且 运行 在暂存计算机上没有问题(至少是那种问题)。
我正在使用的 Dockerfile 看起来像这样(请注意,它确实有效!):
FROM python:3.5
EXPOSE 8000
CMD ["./run.sh"]
RUN adduser --uid 1000 --disabled-password --gecos '' --home /home/devuser devuser
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libxml2-dev \
zlib1g-dev \
libssl-dev \
libxslt1-dev \
netcat && \
pip install --upgrade pip && \
rm -rf /var/lib/apt/lists/* \
rm -f /var/cache/apt/archives/*.deb
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt
COPY . /app
RUN chown devuser.devuser -R .
USER devuser
我所做的与我的舞台机器没有什么不同,所以我想知道...
这是 bug in nameko, caused by a change in the eventlet library 的症状。
解决方案是升级到 nameko 2.8.3,它将要安装的 eventlet 的版本固定在 0.16.1 - 0.22.0 范围内。
我正在尝试部署一个 dockerized python (nameko) 应用程序。
一切都按预期工作,直到我尝试通过 GET
方法访问其中一个模块。我收到一个非常神秘的错误:
...
File "/usr/local/lib/python3.6/site-packages/eventlet/wsgi.py", line 347,
in setup conn.setsockopt(socket.IPPROTO_TCP, socket.TCP_QUICKACK, True)
AttributeError: 'tuple' object has no attribute 'setsockopt'
我知道我的代码不是问题,因为它已经启动并且 运行 在暂存计算机上没有问题(至少是那种问题)。
我正在使用的 Dockerfile 看起来像这样(请注意,它确实有效!):
FROM python:3.5
EXPOSE 8000
CMD ["./run.sh"]
RUN adduser --uid 1000 --disabled-password --gecos '' --home /home/devuser devuser
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libxml2-dev \
zlib1g-dev \
libssl-dev \
libxslt1-dev \
netcat && \
pip install --upgrade pip && \
rm -rf /var/lib/apt/lists/* \
rm -f /var/cache/apt/archives/*.deb
COPY requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt
COPY . /app
RUN chown devuser.devuser -R .
USER devuser
我所做的与我的舞台机器没有什么不同,所以我想知道...
这是 bug in nameko, caused by a change in the eventlet library 的症状。
解决方案是升级到 nameko 2.8.3,它将要安装的 eventlet 的版本固定在 0.16.1 - 0.22.0 范围内。