我正在运行一个Web服务,在Ubuntu服务器上使用OpenOffice将ODT文档转换为PDF。
可悲的是,当同时发出多于1个请求时,OpenOffice会偶尔窒息(转换PDF需要大约500-1000毫秒)。这是一个真正的威胁,因为我的网络服务是多线程的,而且工作大多是分批发布的。
我正在寻找的是一种将转换任务从我的webservice转移到一个中间进程的方法,该进程将所有请求排队并将它们逐个简化为OpenOffice。
但是,有时我希望能够发出立即处理的高优先级转换(在当前的处理之后,如果忙),并让webservice等待(阻止)。这似乎是一个棘手的补充,使大多数简单的调度技术过时了。
答案 0 :(得分:1)
您之后的一些或其他消息/工作队列系统。 我使用的最简单的工作排队系统之一,也支持优先级排序,是beanstalkd。
您的服务器上将运行一个进程,当它从Beanstalkd收到工作请求时将运行您的转换过程,并且您将让您的Web应用程序将工作请求推送到beanstalkd并提供相关信息。
DigitalOcean的人们在这里写了一篇非常好的介绍: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-beanstalkd-work-queue-on-a-vps