django Python纹

j0pj023g  于 2023-02-14  发布在  Go
关注(0)|答案(2)|浏览(75)

请耐心听我把这些话说出来
我正在Python Django框架上运行Weasyprint,我有15页的HTML要渲染成PDF。
当一个用户点击按钮进行渲染时,渲染会占用我CPU的70%到80%。我的问题是,有没有什么东西可以用来排队用户的渲染请求?让他们在队列中等待,而不是同时处理渲染请求?

2q5ifsrm

2q5ifsrm1#

您可以选中Celery,其思想是使用异步任务队列/作业队列,该队列基于使用RabbitMQRedis之类的代理的分布式消息传递
http://www.celeryproject.org/
理想情况下,后台任务应该在与应用程序服务器不同的服务器上运行,以便它们可以独立扩展,并且不会相互影响。

vwkv1x7d

vwkv1x7d2#

将html转换为文档

从weasyprint导入HTML

def render_to_doc(template_src, context_dict={}):
    template  = get_template(template_src)
    HTML  =  template.render(context_dict)
    timestamp  = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    file_name  = f'promissorynote_{timestamp}.doc'
    # saving pdf in media rootfile
    pdf_path  = os.path.join(settings.MEDIA_ROOT, 'doc', file_name)
    HTML(string=html).write_pdf(pdf_path)
    return  file_name

相关问题