Rails 个职位和 Sidekiq
Rails jobs and Sidekiq
我刚刚在我的应用程序上安装了 redis 和 sidekiq,
我有一项工作是在需要时更新用户 table 的字段,
以及每周向所有用户发送一封电子邮件的作业。
现在,如果我使用 bundle exec sidekiq
启动 sidekiq,更新用户字段的作业将触发并完成,但电子邮件作业仍保留在排队部分中。
但是,如果我使用从 Sidekiq github 页面获得的 bundle exec sidekiq -q workers -q mailers
启动它,只有邮件作业完成,而其他作业留在排队部分。
是否有命令能够 运行 两者?我昨天才开始学习 sidekiq 和 redis 很抱歉,如果这是一个愚蠢的问题,
我在 application.rb 中将 activejob.que_adaptar
设置为 sidekiq
。
这就是我为用户作业设置 sidekiq worker 的方式:
class DeactivateUser
include Sidekiq::Worker
def perform
User.active.update_all(active: false)
end
end
谢谢。
使用您的队列列表和 运行 sidekiq -C config/sidekiq.yml
创建 config/sidekiq.yml
。
#config/sidekiq.yml
---
:concurrency: 5
:queues:
- default
- mailers
- orders
按照 Oskar 的配置,遵循相同的方法让单个 sidekiq 进程处理多个队列。此外,您还必须在工作文件中提及队列名称。这样 sidekiq 进程将从该队列的 redis 中获取作业。例如:( sidekiq_options queue: :mailers
)
class WORKER_NAME
include Sidekiq::Worker
sidekiq_options queue: :<queue_name>
def perform
... # your work
end
end
如果你想启动进程只监听一个队列邮件程序并有 10 个并发,请这样启动。
bundle exec sidekiq -c 10 -C config/myapp_sidekiq.yml -q mailers -q queue1 -q queue2
这将监听总共 3 个名为 mailers
、queue1
、queue2
的队列。这就是您必须启动 sidekiq 的方式。更多文档请refer to this.
我刚刚在我的应用程序上安装了 redis 和 sidekiq,
我有一项工作是在需要时更新用户 table 的字段,
以及每周向所有用户发送一封电子邮件的作业。
现在,如果我使用 bundle exec sidekiq
启动 sidekiq,更新用户字段的作业将触发并完成,但电子邮件作业仍保留在排队部分中。
但是,如果我使用从 Sidekiq github 页面获得的 bundle exec sidekiq -q workers -q mailers
启动它,只有邮件作业完成,而其他作业留在排队部分。
是否有命令能够 运行 两者?我昨天才开始学习 sidekiq 和 redis 很抱歉,如果这是一个愚蠢的问题,
我在 application.rb 中将 activejob.que_adaptar
设置为 sidekiq
。
这就是我为用户作业设置 sidekiq worker 的方式:
class DeactivateUser
include Sidekiq::Worker
def perform
User.active.update_all(active: false)
end
end
谢谢。
使用您的队列列表和 运行 sidekiq -C config/sidekiq.yml
创建 config/sidekiq.yml
。
#config/sidekiq.yml
---
:concurrency: 5
:queues:
- default
- mailers
- orders
按照 Oskar 的配置,遵循相同的方法让单个 sidekiq 进程处理多个队列。此外,您还必须在工作文件中提及队列名称。这样 sidekiq 进程将从该队列的 redis 中获取作业。例如:( sidekiq_options queue: :mailers
)
class WORKER_NAME
include Sidekiq::Worker
sidekiq_options queue: :<queue_name>
def perform
... # your work
end
end
如果你想启动进程只监听一个队列邮件程序并有 10 个并发,请这样启动。
bundle exec sidekiq -c 10 -C config/myapp_sidekiq.yml -q mailers -q queue1 -q queue2
这将监听总共 3 个名为 mailers
、queue1
、queue2
的队列。这就是您必须启动 sidekiq 的方式。更多文档请refer to this.