问题描述
def create_report(download_uuid):
transactions = get_transaction_for_report(download_uuid)
html = render_template("report.html",transactions=transactions)
config = pdfkit.configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf')
pdf = pdfkit.from_string(html,False,configuration=config)
response = make_response(pdf)
response.headers["Content-Type"] = "application/pdf"
response.headers["Content-disposition"] = "inline; filename=report.pdf"
return response
这是一个在 Swagger 中调用的操作来创建一个帖子,当一个帖子被执行时调用这个操作会返回一个 pdf 文档。现在,在我的本地计算机上它工作得很好。但是,当我将它放在 Docker 内的服务器中时,由于某种原因,当我调用此操作时,它会崩溃。我确实在 docker 中安装了 wkhtmltopdf,我用配置指向它,正如您在代码中看到的那样。当我调用此操作时,它会保持加载一段时间,然后 docker 日志会显示类似 [CRITICAL] WORKER TIMEOUT
的内容,然后一切都会重新启动。我也收到错误 502 代理错误。我曾尝试对 wkhtmltopdf 文件执行 chown
但我没有成功。对此的任何帮助将不胜感激。如果您需要更多信息,请告诉我。
编辑:Dockerfile:
FROM python:3.9-alpine
RUN adduser -D customuser
workdir /home/Project
copY requirements.txt requirements.txt
RUN python -m venv venv
RUN venv/bin/pip install --upgrade pip
RUN apk add make automake gcc g++ subversion python3-dev jpeg-dev zlib-dev libffi-dev musl-dev openssl-dev wkhtmltopdf xvfb
RUN venv/bin/pip install -r requirements.txt
RUN venv/bin/pip install gunicorn
copY ProjectFile ProjectFile
copY boot.sh app.py .env run.py create_database.py config.py ./
copY templates templates
copY static static
RUN chmod +x boot.sh
ENV FLASK_APP app.py
USER root
RUN chown -R customuser ./
RUN chown customuser /usr/bin/wkhtmltopdf
USER customuser
EXPOSE 9001
ENTRYPOINT ["./boot.sh"]
编辑:我几乎尝试了所有方法,但似乎没有任何效果。这实际上是我开始工作以完成我的项目所需的唯一事情。我尝试对 wkhtmltopdf 文件执行 chmod +x,我尝试安装字体库。但没什么。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)