请耐心听我把这些话说出来我正在Python Django框架上运行Weasyprint,我有15页的HTML要渲染成PDF。当一个用户点击按钮进行渲染时,渲染会占用我CPU的70%到80%。我的问题是,有没有什么东西可以用来排队用户的渲染请求?让他们在队列中等待,而不是同时处理渲染请求?
2q5ifsrm1#
您可以选中Celery,其思想是使用异步任务队列/作业队列,该队列基于使用RabbitMQ或Redis之类的代理的分布式消息传递http://www.celeryproject.org/理想情况下,后台任务应该在与应用程序服务器不同的服务器上运行,以便它们可以独立扩展,并且不会相互影响。
Celery
RabbitMQ
Redis
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
2条答案
按热度按时间2q5ifsrm1#
您可以选中
Celery
,其思想是使用异步任务队列/作业队列,该队列基于使用RabbitMQ
或Redis
之类的代理的分布式消息传递http://www.celeryproject.org/
理想情况下,后台任务应该在与应用程序服务器不同的服务器上运行,以便它们可以独立扩展,并且不会相互影响。
vwkv1x7d2#
将html转换为文档
从weasyprint导入HTML