Tag: sidekiq

尝试发送电子邮件时sidekiq_mailer错误

我在我的应用程序中添加了gems sidekiq ( sidekiq_mailer )和sidekiq_mailer (0.0.6)。 当我尝试发送电子邮件时,我收到: NoMethodError (undefined method `key?’ for #<JSON::Ext::Generator::State:0x007f1b…… 有谁知道为什么会这样?

Sidekiq列出所有工作

有没有办法获取当前队列中正在运行的所有作业的列表? 基本上,我想知道给定class级的工作是否已经存在,我不想插入我的其他工作。 我见过其他选择,但我想这样做。 我在这里可以看到如何获取队列中的作业列表。 queue = Sidekiq::Queue.new(“mailer”) queue.each do |job| job.klass # => ‘MyWorker’ end 根据我的理解,这将不包括处理/运行工作。 有什么方法可以得到它们?

如何在运行时创建带变量名的sidekiq队列?

我正在尝试创建具有可变队列名称的队列。 queue_name = “guide_” + guide[‘id’].to_s Sidekiq::Client.push({ ‘class’ => GuidePdfWorker, ‘queue’ => queue_name, ‘args’ => [key], ‘backtrace’ => true }) 我知道我应该将它们添加到config / sidekiq.yml,但我不能,因为我不知道queue_name的值。 当我登录Sidekiq::Client.registered_queues()我可以看到我的队列,但它们从未被处理过。

如何在特定队列中推送工作并使用sidekiq限制数字工作者?

我知道我们可以这样做: sidekiq_options queue: “Foo” 但在这种情况下,它只是一个队列中的Worker:“Foo”。 我需要在特定队列中分配一个Job(而不是Worker)。 使用Resque很容易: Resque.enqueue_to(queue_name, my_job) 此外,对于并发问题,我需要将每个队列上的Worker数量限制为1。 我怎样才能做到这一点?

Sidekiq服务器没有加载配置文件

我正在尝试使用我的sinatra应用程序设置sidekiq,并且我无法启动sidekiq worker以使用配置文件在守护进程模式下运行。 我的项目有以下结构: project – config — sidekiq.yml #Sidekiq Config File – app — app.rb #Sinatra Application File – Rakefile – Gemfile – etc. 最终目标是创建一些rake任务来处理所有sidekiq任务。 现在,我只是想通过命令行让事情正常工作,然后我会通过rake让它工作。 sidekiq.yml # Sidekiq Configuration — development: logile: ./log/sidekiq_development.log verbose: true pidfile: ./tmp/pids/sidekiq.pid concurrency: 1 queues: – [household_import, 7] 当我在项目目录中运行此命令时: 捆绑exec sidekiq -C’./config/sidekiq.yml’-e’development’-d 我得到以下内容: You really should set a logfile […]

在Sidekiq作业结束之前释放ActiveRecord连接

这个问题涉及性能和优化问题,以及实现Sidekiq工作的方式。 假设我们有以下工作流程 def执行 # Step 1 do_things_with_activerecord_db_and_get_some_parameters() # Step 2 step2_perform_an_http_request_with_these_parameters_on_unreliable_server() 结束 在下面的情况中,在步骤1中从池中获取ActiveRecord连接,并且只有在SideKiq的ActiveRecord中间件完成(或失败)作业后,SideKiq才会释放该连接。 由于我们执行请求的步骤2中的外部http服务器不可靠,因此http请求可能需要很长时间甚至超时,因此ActiveRecord连接在所有时间都没有锁定,对吧? 所以我的问题是:打电话是否恰当,有用和安全: ActiveRecord的:: Base.clear_active_connections! 在步骤1和步骤2之间,以便作业自己释放资源并使其可用于其他类似的作业? 或者我错过了关于连接池的一些事情? 这种方法也可以应用于redis连接吗? 谢谢提前!

sidekiq内存使用重置

我有Rails应用程序,它使用Sidekiq进行后台处理。 要部署此应用程序,我使用capistrano,ubuntu服务器和apache乘客。 要启动并重新启动Sidekiq,我使用capistrano-sidekiq gem。 我的问题是 – 当Sidekiq运行时,Sidekiq使用的内存量(RAM)正在增长。 当Sidekiq完成所有进程(工作人员)时,它会保持大量RAM并且不会重置它。 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND ubuntu 2035 67.6 45.4 3630724 1838232 ? Sl 10:03 133:59 sidekiq 3.5.0 my_app [0 of 25 busy] 如何让Sidekiq在工人完成工作后重置已用内存?

如何将current_user传递给Sidekiq的Worker

我试图将current_user或User.find(1)传递给工作模块,但在sidekiq的仪表板中获取错误(localhost:3000 / sidekiq / retries): NoMethodError:未定义的方法`支持’为“#”:String 注意:我的关系很好,即: u = User.find(1) u.supports #=> [] supports_controller.rb: def create @user = current_user ProjectsWorker.perform_async(@user) … end 应用程序/工人/ projects_worker.rb: class ProjectsWorker include Sidekiq::Worker def perform(user) u = user @support = u.supports.build(support_params) end end 重新启动我的sidekiq服务器没有任何区别。 这是在我的开发机器上。

sidekiq不处理工作,工作陷入队列

我有一个简单的应用程序,与twitter流api,sidekiq,独角兽和sinatra一起使用。 一切顺利,而不是……工作根本没有得到处理。 他们陷入了排队(我知道来自sidekiq网页用户界面)。 这是我的代码: Procfile: sidekiq: bundle exec sidekiq -C config/sidekiq.yml -e development -r ./lib/tweet_streamer.rb unicorn: bundle exec unicorn -c config/unicorn.rb redis: redis-stable/src/redis-server 配置/ unicorn.rb: listen 5000, :tcp_nopush => true timeout 30 preload_app true GC.respond_to?(:copy_on_write_friendly=) and GC.copy_on_write_friendly = true before_fork do |server, worker| end after_fork do |server, worker| end tweet_streamer.rb: require_relative “../config/tweetstream” require_relative “workers” class […]

如何获得最佳性能rails请求并行sidekiq worker

我的rails应用程序有一个sidekiq工作者。 工作人员将向api外部发出2500个请求,响应为xml。 如何为这名工人获得最佳表现?