【问题标题】:Sidekiq return value of a delayed methodSidekiq 延迟方法的返回值
【发布时间】:2013-11-29 08:14:59
【问题描述】:

我使用 Sidekiq 运行控制器中延迟的方法(同时我使用 Redis 更新进度条)。该方法调用服务器,检索数据,进行一些操作和计算;然后可能需要一段时间。

比如我有这个方法:

data_and_status = MyModelName.delay.retrieve_data(params[:tags], "preview", current_user, params[:from], params[:to])

这个方法应该返回被操纵的数据,但是以这种方式data_and_status 是一个哈希(我猜那是Sidekiq-job-id)。 返回的数据非常大,不幸的是用 Redis 做一些缓存是不可能的。

如何检索延迟作业(方法)的return value

【问题讨论】:

    标签: ruby-on-rails-3 backgroundworker sidekiq


    【解决方案1】:

    您说返回的数据(来自您的异步作业)非常大,通过 Redis 中继它是不可能的。好吧,你的 sidekiq 作业在不同的进程中运行,甚至可能在不同的服务器上,所以你必须找到一些进程间的方式来传输数据——如果不是你的消息队列(Redis),那么就是数据库。

    例如:

    【讨论】:

    • 感谢您的回复!那么您建议使用数据库在某处存储一个指示工作“状态”的标志?完成后从 db 或 /tmp 中的文件检索结果数据?
    • 如果您只想检查作业的状态,您可以使用 sidekiq 插件进行跟踪:参见github.com/mperham/sidekiq/wiki/…
    猜你喜欢
    • 1970-01-01
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多