【问题标题】:Best way to monitor for completion of a Sidekiq job?监控 Sidekiq 工作完成情况的最佳方法是什么?
【发布时间】:2013-04-28 13:05:35
【问题描述】:

我正在使用 Sidekiq 工作人员在用户首次登录后完成对 Facebook 的一些请求。通常,该任务大约需要 20 秒左右。

我想在同步完成后立即使用 ajax 请求将一些信息加载到页面上,但我不确定使用 Javascript 检查作业是否完成的最佳方法。

一种可能性是配置 Sidekiq 工作程序以在完成其余作业后设置一个 cookie。然后我可以使用 setTimeout 函数在调用加载函数之前继续检查 cookie。但我不确定这是否是最好的方法。我可以改用 Redis 吗?

【问题讨论】:

  • 在 sidekiq worker 中你不能设置 cookie,因为要将 cookie 传递给客户端,你需要向他们发送 HTTP 响应,而 worker 不是服务器。

标签: ruby-on-rails ruby sidekiq


【解决方案1】:

保罗,最初你必须看看这个PubSub on Rails tutorial

这将是您在后端发生/完成异步事情时通知用户的更好解决方案。

提示:如果您使用的是 heroku,您将拥有许多抽象这种复杂性的库。

【讨论】:

    【解决方案2】:

    保罗,我会把你的顾虑分开。我假设 sidekiq 工作人员使用一些 rails activerecord 模型向 facebook 发送一些信息。当 facebook 请求成功完成时,我会将该模型上的标志设置为 true。

    然后您可以在 js 中设置一个 setTimeout 来轮询数据库中的更改......或者您可以使用 Web 套接字来获得更快、更自动的响应。我过去使用过一个名为Pusher 的库。它很容易与 Rails 集成,并提供非常简洁的 UI。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-10
      • 1970-01-01
      • 2018-05-19
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多