docker - 在 Alpine 上使用Sanic的Docker镜像:latest(3.9)使用python json而不是ujson

标签 docker alpine sanic ujson

Dockerfile:

FROM alpine:latest

RUN apk add --no-cache python3 \
    && python3 -m ensurepip \
    && rm -r /usr/lib/python*/ensurepip \
    && pip3 install -U pip setuptools ez_setup \
    && rm -r /root/.cache/* \
    && apk add --no-cache gcc autoconf python3-dev musl-dev make openssl-dev \
    && pip3 install -U sanic \
    && apk del gcc autoconf python3-dev musl-dev make openssl-dev \
    && rm -rf /var/cache/apk/* /var/tmp/* /tmp/* /root/.cache/*

WORKDIR /app
COPY . /app

EXPOSE 8000
CMD ["python3", "./app.py"]

Sanic服务器:
from sanic import Sanic
from sanic.response import json
from datetime import datetime as dt

app = Sanic()


@app.route("/")
async def test(request):
    return json({
        "hello": "world",
        "date_is": dt.utcnow()
    })

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

使用docker image运行Sanic服务器返回500:

TypeError: Object of type 'datetime' is not JSON serializable



但是从命令行运行此服务器应用程序就可以了。

更有趣的是,如果使用Alpine linux 3.8版,则服务器应用程序可以正常使用。

我认为Sanic服务器无法找到ujson包并使用默认的python json。

有人对如何解决此问题有任何建议吗?

最佳答案

尝试从git master源安装ujson

https://github.com/esnme/ultrajson/issues/326

关于docker - 在 Alpine 上使用Sanic的Docker镜像:latest(3.9)使用python json而不是ujson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54649873/

相关文章:

python - 异步单元测试 Sanic 应用程序会抛出 RuntimeError : this event loop is already running

docker - 限制docker-compose的日志数量

Docker 中的 Angular 未正确公开端口

docker - Docker build:无法满足的约束

python-3.x - Sanic 是否具有 'url_for()' 函数(如在 flask 中)?

python - aiohhttp中的 session 重用

Docker 构建失败(rpc 错误 : code = 2 desc = "oci runtime error: exec format error")

docker - kube-dns 无法解析 'kubernetes.default.svc.cluster.local'

python - 在 Mac 上安装了 Docker 但找不到命令

python - 无法在 alpine docker 镜像上安装 PyMuPDF