【问题标题】:Resque - Getting response after worker has finished jobResque - 在工作人员完成工作后获得响应
【发布时间】:2015-06-14 05:59:28
【问题描述】:

我正在使用 php-resque 来获取细节,但我想我正在寻找一个概念性的答案,因此 php/ruby 的差异应该不是问题。

假设我向 Resque 添加了一个作业,要求一个工作进程从 MySQL 数据库中检索一些数据。发出请求的服务器无法直接访问数据库,因此它使用 Resque 发出此请求。如何将数据库响应传递回调用它的脚本?

从我读到的内容来看,工人似乎必须将这些数据存储在 Redis 中,然后我的脚本只需要从那里访问它。我在想,在我将工作排入队列后,我的脚本只是等到工作人员完成,通过根据它的 id 跟踪它。这个逻辑有意义吗?

【问题讨论】:

    标签: redis resque


    【解决方案1】:

    立即想到的解决方案是设置 web-hooks 并在 resque 完成工作后使用它们。这不会将响应发送给原始调用者,但这可能不是您真正想要做的,因为它会导致blocking

    【讨论】:

    • 因此问题在于调用脚本需要根据工作人员的响应执行其他功能。我的印象是 webhook 会调用脚本的全新会话,对吗?
    • 是的,这将是一个新会话,但 resque 可能需要几秒钟甚至几分钟,具体取决于您的环境和繁忙程度。如果这不是问题,您可以考虑使用async/await
    • 谢谢。我在想,尽管我最好的选择是让工作人员将响应保存在 redis 中,然后执行以下操作:` while(job not done) --> if(job done) --> query redis for response `
    猜你喜欢
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 2012-04-24
    相关资源
    最近更新 更多