【问题标题】:Cryptic AttributeError: 'tuple' object has no attribute 'setsockopt' error messageCryptic AttributeError: 'tuple' object has no attribute 'setsockopt' 错误信息
【发布时间】:2018-05-30 14:38:12
【问题描述】:

我正在尝试部署一个 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

我所做的与我的登台机器没有什么不同,所以我想知道......

【问题讨论】:

  • @snakecharmerb 不在我的代码中...
  • @snakecharmerb 现货!!我将 nameko 版本更新为 2.8.3 并且它有效。 (如果你把它变成答案,我愿意接受)

标签: python docker nameko


【解决方案1】:

这是bug in nameko 的症状,由eventlet library 的更改引起。

解决方案是升级到 nameko 2.8.3,它将要安装的 eventlet 版本固定在 0.16.1 - 0.22.0 范围内。

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2018-03-12
    • 1970-01-01
    • 2022-12-01
    • 2022-12-03
    • 2014-12-20
    相关资源
    最近更新 更多