【发布时间】:2013-02-05 03:56:41
【问题描述】:
我正在尝试在我的应用程序中使用Backburner(Beanstalkd 的 Ruby 客户端)来创建,比如说,50 名工人都在看同一个管道来寻找新的工作。问题是,这 50 名工作人员中的每一个在执行工作时,都会进行一些繁重的文件操作等,并且他们每个人都需要对 唯一命名的编号目录执行一些操作。例如,worker 7 需要使用名为 dir7 的目录。
最初我认为我可以创建一个具有 50 个线程的 ThreadsOnFork 工作线程,并且我可以从工作线程的 perform() 方法中访问与每个线程关联的数字,但我无法做到这一点还没有。
如何使用 Backburner 处理这种情况?或者,如果 Backburner 无法使用其他 Ruby beanstalkd 客户端?我希望我的问题足够清楚。谢谢。
【问题讨论】:
-
如果工作人员只需要一个独特的位置来处理文件,为什么不在启动工作进程时根据(例如)GUID 创建一个新目录,然后删除它工人退出。
-
@AlisterBulman 我以其他方式解决了这个问题。我在下面添加了我的解决方案作为答案。
标签: ruby-on-rails ruby sinatra padrino beanstalkd