2

用户控制器.rb

class UsersController
  def create
    MyJob.perform_later
    User.create(...)
  end
end

我的工作.rb

class MyJob < ActiveJob::Base
  queue_as :default

  def perform()
    puts "START"
    sleep 3
    puts "END"
  end
end

配置/初始化程序/sucker_punch.rb

require 'sucker_punch/async_syntax'
Rails.application.configure do
  config.active_job.queue_adapter = :sucker_punch
end

当我MyJob.perform_later在 Rails 控制台中运行时,一切正常,记录器显示此消息Enqueued MyJob (Job ID: 6c857af8-a8ed-4bd0-918b-4296c4315727) to SuckerPunch(default)

但是,当我向我的user_controller发送 http 请求时,我在 3 秒之前没有收到任何响应(这让我认为作业不是异步执行的),并且记录器显示这个Enqueued MyJob (Job ID: e3d698eb-00d8-4849-9496-f01c53fc7217) to Inline(default)

它似乎在控制器中使用内联(默认?)适配器,它不是异步的。

ps:我puma用作http服务器,并且使用不带ActiveJob的sucker_punch可以正常工作

4

0 回答 0