Docker Sanic 在 alpine:latest(3.9) 上的图像使用 python json 而不是 ujson
Docker image with Sanic over alpine:latest(3.9) uses python json instead of ujson
Docker 文件:
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)
运行 Sanic 服务器使用 docker 图片 returns 500:
TypeError: Object of type 'datetime' is not JSON serializable
但是 运行 这个来自命令行的服务器应用程序工作正常。
更有趣的是,如果使用 Alpine linux 版本 3.8,则服务器应用程序可以正常工作。
我认为 Sanic 服务器找不到 ujson 包并使用默认 python json.
有人对如何解决这个问题有什么建议吗?
尝试从 git 主源安装 ujson
Docker 文件:
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)
运行 Sanic 服务器使用 docker 图片 returns 500:
TypeError: Object of type 'datetime' is not JSON serializable
但是 运行 这个来自命令行的服务器应用程序工作正常。
更有趣的是,如果使用 Alpine linux 版本 3.8,则服务器应用程序可以正常工作。
我认为 Sanic 服务器找不到 ujson 包并使用默认 python json.
有人对如何解决这个问题有什么建议吗?
尝试从 git 主源安装 ujson