繁体   English   中英

是否可以在 Azure Function Linux 消耗计划中保存临时文件?

[英]Is possible to save a temporaly file in a Azure Function Linux Consuption Plan in Python?

首先对不起我的英语。 I have an Azure Function Linux Consuption Plan using Python and I need to generate an html, transform to pdf using wkhtmltopdf and send it by email.

 #generate temporally pdf
config = pdfkit.configuration(wkhtmltopdf="binary/wkhtmltopdf")
pdfkit.from_string(pdf_content, 'report.pdf',configuration=config, options={})

#read pdf and transform to Bytes
with open('report.pdf', 'rb') as f:
    data = f.read()

#encode bytes
encoded = base64.b64encode(data).decode()

#Send Email
EmailSendData.sendEmail(html_content,encoded,spanish_month)

代码在我的本地开发中运行正常,但是当我部署 function 并执行代码时,我收到一条错误消息:

Result: Failure Exception: OSError: wkhtmltopdf reported an error: Loading pages (1/6) [> ] 0% [======> ] 10% [==============================> ] 50% [============================================================] 100% QPainter::begin(): Returned false Error: Unable to write to destination

我认为报告该错误是因为出于任何原因写权限不可用。 你能帮我解决这个问题吗?

提前致谢。

tempfile.gettempdir()方法返回一个临时文件夹,在 Linux 上是/tmp 您的应用程序可以使用此目录来存储函数在执行期间生成和使用的临时文件

所以使用/tmp/report.pdf作为文件目录来保存临时文件。

with open('/tmp/report.pdf', 'rb') as f:
    data = f.read()

更多细节,你可以参考这篇文章

最终正确代码:

config = pdfkit.configuration(wkhtmltopdf="binary/wkhtmltopdf")

local_path = os.path.join(tempfile.gettempdir(), 'report.pdf')
logger.info(tempfile.gettempdir())

pdfkit.from_string(pdf_content, local_path,configuration=config, options={})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM