【问题标题】:Using Sidekiq to run more complex jobs使用 Sidekiq 运行更复杂的作业
【发布时间】:2017-03-26 21:49:57
【问题描述】:

edit:其实很简单,我忘了传入sitetoken

我已经在 Heroku 上设置了 Sidekiq 和 Redis,并且我能够让它用于像这样的非常简单的工作:

order_worker.rb

class OrderWorker
    include Sidekiq::Worker
    sidekiq_options retry: false

    def perform(num_orders)
      x=3*5
    end
end

但根据 Sidekiq 网络用户界面,更复杂的作业不断失败。我是否需要以某种方式包含 ShopifyAPI 和 Faker?我不太清楚正在运行什么。整个应用程序,包括 gems 和所有都是在工作人员测功机中创建的吗?

order_worker.rb

class OrderWorker
    include Sidekiq::Worker
    sidekiq_options retry: false

    def perform(num_orders)
        include ShopifyAPI
        include Faker

        # Initialize session
        session = ShopifyAPI::Session.new(site, token)
        ShopifyAPI::Base.activate_session(session)  

        #Create orders
        num_orders.times do
            new_order = ShopifyAPI::Order.new(
              :line_items => [
                ShopifyAPI::LineItem.new(
                  :quantity => 1,
                  :variant_id => 25701798472
                )
              ]
            )
            new_order.billing_address = ShopifyAPI::BillingAddress.new(:name => Faker::Name.name, :zip => zips[rnd], :country => 'United States', :province => states[rnd], :address1 => Faker::Address.street_address, :city => Faker::Address.city)
            new_order.email = r.rand(36**2).to_s(36) + '@yahoo.com'
            new_order.created_at = Faker::Time.backward(390, :evening)
            new_order.total_price = Faker::Number.decimal(3, 2)
            new_order.save
            @errs = @errs + new_order.errors.full_messages
            sleep 0.03
        end

    end


end

【问题讨论】:

  • 可能是perform方法中include那几行,建议你把所有登录都封装到一个类中,然后在perform方法中运行你的类

标签: ruby-on-rails ruby heroku redis sidekiq


【解决方案1】:

注意OrderWorker#perform 是一个实例方法,这意味着它在OrderWorker 的实例范围内运行,而不是在OrderWorker 本身的类中。实例没有include 方法。它属于类。结果是当任务运行时你会得到NoMethodErrors。

附:看来您不必include 任何东西。删除 perform 中的那些 includes 将使您的工作人员工作。

【讨论】:

    猜你喜欢
    • 2021-03-22
    • 2015-04-27
    • 2017-01-08
    • 2013-07-22
    • 1970-01-01
    • 2012-10-29
    • 2015-12-07
    • 2014-11-11
    • 2019-07-09
    相关资源
    最近更新 更多