PHP - 为beanstalkd中的每个新作业生成工作者

时间:2016-02-10 19:35:52

标签: php jobs beanstalkd

我正在为服务器管理构建此Web应用程序。当用户创建服务器时,会将其放到要处理的beanstalkd队列中,这通常需要1到2分钟才能完成。

但是我希望在发送作业时处理作业。例如,假设有两个用户同时构建服务器,显然这两个作业将被放入队列进行处理。第一个用户必须等待1-2分钟才能处理作业,但第二个用户必须等待1-2分钟才能构建第一个用户的服务器,然后再用1-2分钟他们要建的服务器。这基本上会产生一种积压,用户必须等待n + 1分钟才能构建服务器。

我想避免这种情况发生,所以我想知道是否有可能在beanstalkd中生成一个新的worker或类似的东西来处理新作业的那一天?

1 个答案:

答案 0 :(得分:0)

对于需要一段时间但需要同时运行的任务,通常会有一些工作人员准备好了。每个都将连接到beanstalkd服务器,并等待作业可用。如果他们断开连接,他们只会重新连接(虽然我会在尝试之间暂停几秒钟)。

为了运行多个副本,经常使用诸如“supervisord”之类的工具。这可以控制启动/重新启动工作程序。