当后台作业启动时,它被发送到工作人员处理队列的后面;一个任务清除,另一个开始。我想我有这个权利,除了在某些情况下我不明白它的实际意义。当然,如果你是一家使用延迟工作每周发送15,000次新闻简报的公司,那就很合理。但是,当你有一个甚至100个用户的应用程序,其中一些任务足够长以便需要后台工作(例如发送/获取可能需要一分钟的电子邮件),那么每个用户将不得不排队等待另一个用户被清除(在案件中有一名工人)。在与很多用户打交道时实际使用延迟后台作业
这是我不确定我是否正确的部分。我正在谈论相同的工作,但单独为每个用户。这算作每个用户的工作吗?如果我有100个用户,我是否需要为每个人的流程保留100名员工,以免被阻止?
我试过使用delayed_job来模拟,实际上当我用不同的帐户登录时,我必须等到另一个用户的电子邮件被发送,直到我的电子邮件被发送。尽管插件工作迅速而简单,但我认为这不是正确的方法。
我也尝试过使用Ajax,但由于它是一个HTTP请求,它在加载模式下绑定浏览器,直到它从服务器获得响应(即使使用async: true
)。不知道我是否过快地排除了这一问题,但我正在寻找更优雅的服务器解决方案。
有没有办法实现这样的后台工作? (我听说过不同的,主要是商业解决方案承诺等待时间很少,但我有兴趣完全消除用户之间的队列)。如果没有,是否有方法可以在不等待响应的情况下发出ajax请求?我意识到我的问题是完全不同的,但两者似乎都是解决这个问题的恰当方法。
感谢您的来源。 Resque似乎比我现在需要的更重一些,特别是安装redis等开销的b/c。我一直在使用delayed_job,就像我说过的并且非常喜欢它,所以在dj中使用多个队列可能会做到这一点。 – Gal 2011-05-03 04:25:43