You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何同步运行Que::Job并获取其run方法的返回值?

能不能立即同步运行Que任务并获取run方法返回值?

默认情况下,Que::Job的.run方法不会直接执行run实例方法并返回其结果,它的作用是将任务入队并返回任务实例,这就是你看到返回值是FooJob类实例的原因。

如果想要同步执行任务并获取run方法的返回值,可以通过以下两种方式实现:

  • 直接实例化任务并调用run方法
    跳过Que的入队逻辑,直接创建任务实例并执行run方法,就能拿到返回值:

    class FooJob < Que::Job
      def run
        puts "FooJob is called"
        123
      end
    end
    
    job_instance = FooJob.new
    supposedly_return_value = job_instance.run # => 123
    
  • 添加自定义类方法封装同步执行逻辑
    如果希望保持类似.run的调用风格,可以给任务类添加一个自定义类方法:

    class FooJob < Que::Job
      def run
        puts "FooJob is called"
        123
      end
    
      def self.sync_run
        new.run
      end
    end
    
    supposedly_return_value = FooJob.sync_run # => 123
    

这两种方式都能实现同步执行任务并获取run方法返回值的需求,适合你提到的那些需要立即拿到结果的极少数场景。

内容的提问来源于stack exchange,提问作者Nikita Fedyashev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:52:02