问题标签 [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.

0 投票
1 回答
103 浏览

mysql - User.all 在本地需要 5-10 分钟。请求超时以迭代每个

我在数据库中有 233_997 条记录供用户使用。遍历这个需要 10 多分钟,我需要遍历每一个才能将工作发送到 sidekiq。服务器在为每个用户创建作业之前超时。我该怎么办?

如何在不使服务器超时的情况下使此请求通过?这是 User.find_each 部分非常慢......但也许这对于 200k 记录是正常的。

0 投票
2 回答
4581 浏览

ruby - Sidekiq 工作人员的不同日志级别 - Ruby 方法?

我有一个带有 Rails 应用程序、Sidekiq 和发条模块的运行环境,用于调度目的。

我有许多不同的工作人员,充满了 logger.debug 和 logger.info 指令,我偶尔需要激活其中一些工作人员的调试日志以了解发生了什么。我喜欢 Sidekiq 记录器,我想使用它,因为它只需要工人中的“logger.debug”指令来完成它的工作。

我目前的设置错过了为一些工作人员激活调试级别的可能性,而将其他工作人员留在标准信息中。

现在在我的每个工人中,我都有这个初始化方法:

但是如果改变一个工人的级别,这个级别将被下一个指定的级别覆盖 - 例如,如果两个工人一起处理,第二个工人将“获胜”。

以优雅的方式实现这一目标的最佳方法是什么?

来自 Java 世界,我只想创建一个自定义记录器并将其放入每个工作人员中,复制 Sidekiq 记录器使用的输出格式,在每个工作人员中添加一个记录器方法,例如

并在我需要时在初始化方法中更改级别

这是 Ruby 中最好的方法吗?

0 投票
4 回答
8792 浏览

ruby-on-rails - 使用sidekiq 仅执行许多重复作业中的一项?

我有一个后台作业,在 MongoDB 上执行 map/reduce 作业。当用户向文档发送更多数据时,它会启动在文档上运行的后台作业。如果用户发送多个请求,它将为同一个文档启动多个后台作业,但只有一个真正需要运行。有没有办法可以防止多个重复实例?我正在考虑为每个文档创建一个队列,并在提交新作业之前确保它是空的。或者也许我可以以某种方式设置一个与我的文档 ID 相同的作业 ID,并在提交之前检查是否不存在?

另外,我刚刚发现了一个 sidekiq-unique-jobs gem。但是文档不存在。这是我想要的吗?

0 投票
3 回答
5089 浏览

ruby-on-rails - 使用 sidekiq 处理两个单独的 redis 实例?

下午好,

我有两个独立但相关的应用程序。他们都应该有自己的后台队列(阅读:单独的 Sidekiq 和 Redis 进程)。但是,我希望偶尔能够将作业app2app1.

app1从简单的队列/推送角度来看,如果没有现有的 Sidekiq/Redis 堆栈,这样做很容易:

但是,鉴于我已经调用了 aSidekiq.configure_clientSidekiq.configure_serverfrom 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)

显然有点滑稽,但这是我理想的用例。

谢谢!

0 投票
3 回答
6586 浏览

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。

0 投票
1 回答
2660 浏览

ruby-on-rails - Rails:可以根据 IP 地址(或范围?)限制路由

我知道这通常发生在控制器中,但我想知道是否可以config/routes.rb根据特定 IP(或 IP 范围)限制路由?有点像白名单。

例如,我想将此路由限制为仅在我们的子网上的 IP:

0 投票
1 回答
130 浏览

ruby-on-rails - 在 gem 中定义 worker 的位置

我正在写一个宝石。我希望调用 gem 的 api 来触发对一些 Sidekiq 工作人员的调用。我应该在我的 gem 中哪里写这些工作程序,以便 Sidekiq 找到它们,即使它们不在“应用程序/工作程序”中?

0 投票
0 回答
80 浏览

ruby-on-rails - Sidekiq 未在数据库中找到元素

我的应用程序中有一个 Sidekiq 工作者,它的工作原理基本上是这样的:

问题是这个events.any?在不应该返回的false时候返回。范围没有问题,因为当同步执行工作程序时(SetResultsWorker.new.perform),一切正常。有任何想法吗?

编辑:更多信息。该工作程序由守护程序定期执行。第一次执行没问题,但随后它停止工作。

0 投票
2 回答
4117 浏览

sidekiq - 一旦在终端中启动,如何分离sidekiq进程

我想在我的生产服务器上运行 sidekiq,我正在使用这个命令来启动这个过程

如何在不停止进程的情况下脱离进程,以便关闭与服务器的连接。

0 投票
2 回答
362 浏览

resque - 固定 Sidekiq 或 Resque 队列的通知

当 Sidekiq 或 Resque 队列没有移动时,是否有一种简单的方法来接收通知?

我们遇到了我们的工人随机死亡并且队列最终静止的问题。在我们致力于解决垂死的工人问题时,我们希望抢占对停滞工作的支持电话。