我有一个 Web 应用程序,它依赖于一些工作人员来更新其数据库。这些工作人员将通过互联网获取一些数据,更新相应的条目,然后删除未更新的条目。
当我使用线程时,这很好,因为我可以完全控制执行完成的时间。我必须把它移到 resque,因为线程很棒,但是改变可伸缩性是有问题的,所以现在,每个旧线程现在都是一个工作线程。
它工作得很好,但现在我遇到了这个问题:我看不到工人何时完成,因此我无法调用清理来删除未更新的条目。
我的旧代码如下所示:
Entry.update_all(updated: false)
Docs.update_all(updated: false)
Stuff.update_all(updated: false)
# ...
# My code that uses find_or_create_by_my_custom_id
# Entry.find_or_create_by_tag(20)
# ...
Entry.delete_all(updated: false)
Docs.delete_all(updated: false)
Stuff.delete_all(updated: false)
目前使用resque,我在我的已启动工作人员(调用主要工作人员开始整个事情)上进行了此设置:
Resque.enqueue(UpdateEntriesJob, params)
Resque.enqueue(UpdateDocsJob, params)
Resque.enqueue(UpdateStuffJob, params)
我怎样才能控制这些任务何时完成?