问题标签 [sidekiq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - User.all 在本地需要 5-10 分钟。请求超时以迭代每个
我在数据库中有 233_997 条记录供用户使用。遍历这个需要 10 多分钟,我需要遍历每一个才能将工作发送到 sidekiq。服务器在为每个用户创建作业之前超时。我该怎么办?
如何在不使服务器超时的情况下使此请求通过?这是 User.find_each 部分非常慢......但也许这对于 200k 记录是正常的。
ruby - Sidekiq 工作人员的不同日志级别 - Ruby 方法?
我有一个带有 Rails 应用程序、Sidekiq 和发条模块的运行环境,用于调度目的。
我有许多不同的工作人员,充满了 logger.debug 和 logger.info 指令,我偶尔需要激活其中一些工作人员的调试日志以了解发生了什么。我喜欢 Sidekiq 记录器,我想使用它,因为它只需要工人中的“logger.debug”指令来完成它的工作。
我目前的设置错过了为一些工作人员激活调试级别的可能性,而将其他工作人员留在标准信息中。
现在在我的每个工人中,我都有这个初始化方法:
但是如果改变一个工人的级别,这个级别将被下一个指定的级别覆盖 - 例如,如果两个工人一起处理,第二个工人将“获胜”。
以优雅的方式实现这一目标的最佳方法是什么?
来自 Java 世界,我只想创建一个自定义记录器并将其放入每个工作人员中,复制 Sidekiq 记录器使用的输出格式,在每个工作人员中添加一个记录器方法,例如
并在我需要时在初始化方法中更改级别
这是 Ruby 中最好的方法吗?
ruby-on-rails - 使用sidekiq 仅执行许多重复作业中的一项?
我有一个后台作业,在 MongoDB 上执行 map/reduce 作业。当用户向文档发送更多数据时,它会启动在文档上运行的后台作业。如果用户发送多个请求,它将为同一个文档启动多个后台作业,但只有一个真正需要运行。有没有办法可以防止多个重复实例?我正在考虑为每个文档创建一个队列,并在提交新作业之前确保它是空的。或者也许我可以以某种方式设置一个与我的文档 ID 相同的作业 ID,并在提交之前检查是否不存在?
另外,我刚刚发现了一个 sidekiq-unique-jobs gem。但是文档不存在。这是我想要的吗?
ruby-on-rails - 使用 sidekiq 处理两个单独的 redis 实例?
下午好,
我有两个独立但相关的应用程序。他们都应该有自己的后台队列(阅读:单独的 Sidekiq 和 Redis 进程)。但是,我希望偶尔能够将作业app2
从app1
.
app1
从简单的队列/推送角度来看,如果没有现有的 Sidekiq/Redis 堆栈,这样做很容易:
但是,鉴于我已经调用了 aSidekiq.configure_client
和Sidekiq.configure_server
from app1
,因此在这之间可能需要发生一些事情。
显然,我可以直接从 Sidekiq 内部获取序列化和规范化代码并手动推送到app2
的 redis 队列,但这似乎是一个脆弱的解决方案。我希望能够使用该Client.push
功能。
我想我理想的解决方案是这样的:
SidekiqTWO.configure_client { remote connection..... }
SidekiqTWO::Client.push(job....)
甚至:
$redis_remote = remote_connection.....
Sidekiq::Client.push(job, $redis_remote)
显然有点滑稽,但这是我理想的用例。
谢谢!
ruby-on-rails - 在生产环境中配置 Redis + Sidekiq
我试图在乘客/铁路生产环境中设置Redis + Sidekiq并且遇到了一些混乱。
服务器上运行着许多小型应用程序。我确信这些应用程序中不止一个会利用 Sidekiq 提供的延迟处理。
我的第一个想法是使用Sidekiq 中的命名空间选项namespace
为每个 Rails 应用程序创建一个。
但后来我注意到了一个databases 16
设置,redis.conf
我想知道它到底做了什么。除了配置中的注释之外,我似乎找不到关于它的文档:
所以,想知道 16 个“数据库”的默认/示例是否意味着我可以将 DB0 用于一个应用程序,将 DB1 用于另一个应用程序?!?我不认为这个假设是正确的,但我找不到更多信息,除了:
Redis Cluster 不像单机版 Redis 那样支持多数据库,只有数据库 0,不允许 SELECT。
希望有人可以建议我如何在同一台服务器上运行的各种 Rails 应用程序之间共享 Sidekiq 和 Redis。
ruby-on-rails - Rails:可以根据 IP 地址(或范围?)限制路由
我知道这通常发生在控制器中,但我想知道是否可以config/routes.rb
根据特定 IP(或 IP 范围)限制路由?有点像白名单。
例如,我想将此路由限制为仅在我们的子网上的 IP:
ruby-on-rails - 在 gem 中定义 worker 的位置
我正在写一个宝石。我希望调用 gem 的 api 来触发对一些 Sidekiq 工作人员的调用。我应该在我的 gem 中哪里写这些工作程序,以便 Sidekiq 找到它们,即使它们不在“应用程序/工作程序”中?
ruby-on-rails - Sidekiq 未在数据库中找到元素
我的应用程序中有一个 Sidekiq 工作者,它的工作原理基本上是这样的:
问题是这个events.any?在不应该返回的false
时候返回。范围没有问题,因为当同步执行工作程序时(SetResultsWorker.new.perform
),一切正常。有任何想法吗?
编辑:更多信息。该工作程序由守护程序定期执行。第一次执行没问题,但随后它停止工作。
sidekiq - 一旦在终端中启动,如何分离sidekiq进程
我想在我的生产服务器上运行 sidekiq,我正在使用这个命令来启动这个过程
如何在不停止进程的情况下脱离进程,以便关闭与服务器的连接。
resque - 固定 Sidekiq 或 Resque 队列的通知
当 Sidekiq 或 Resque 队列没有移动时,是否有一种简单的方法来接收通知?
我们遇到了我们的工人随机死亡并且队列最终静止的问题。在我们致力于解决垂死的工人问题时,我们希望抢占对停滞工作的支持电话。