gpt4 book ai didi

ruby-on-rails - 使用 Sidekiq 运行更复杂的作业

转载 作者:可可西里 更新时间:2023-11-01 11:30:45 24 4
gpt4 key购买 nike

编辑:其实很简单,我忘了传入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 和所有这些都是在 worker dyno 中创建的吗?

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

最佳答案

请注意 OrderWorker#perform 是一个实例方法,这意味着它在 OrderWorker 的实例范围内运行,而不是在类中运行OrderWorker 本身。这些实例没有方法 include。它属于类。结果是您将在任务运行时收到 NoMethodError

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

关于ruby-on-rails - 使用 Sidekiq 运行更复杂的作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com