问题标签 [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.
ruby-on-rails - Sidekiq 部署到多个环境
(有关我的详细配置,请参见下文,这是 Henley Chiu 回答的结果)。
我一直在尝试围绕 Sidekiq 部署进行思考,但我并没有真正理解它。我在同一台服务器上有一个带有暂存环境和生产环境的应用程序。我看到的关于sidekiq 部署的所有内容基本上都说“只需将sidekiq/capistrano 添加到您的部署文件中”,所以我就这样做了。然后说明是“这是一个带有选项的 yml 文件”,但似乎没有任何解释。我需要命名空间吗?我在初始化文件中看到了这一点,但这似乎指向服务器之外。
我之前部署过,每个阶段似乎都在适当的环境下启动 sidekiq,但它们都从同一个队列中处理。我的生产电子邮件正试图由舞台 sidekiq 处理,但失败了。我暂时停止了我的舞台,但最终我需要再次使用它。我希望我不是太密集,我真的试图理解这一点,只是很难找到一个明确的“这就是它的完成方式”。
对于它的价值,这里是 config/sidekiq.yml (在部署期间加载良好):
日志文件和 pid 似乎在正确的位置,但队列只是合并了。任何帮助都会很棒!
另外,如果重要的话:
详细配置(答案):
首先,我在端口 7777 (或者除了默认的 6379 之外的任何端口)设置了一个新的 redis 服务器。几乎遵循了我第一次使用的redis 快速入门指南。
然后我制作了初始化文件;这有客户端和服务器配置。两者都需要让 sidekiq 多阶段工作。
请注意,我使用外部 YAML 文件进行设置。我为此使用SettingsLogic使事情变得更容易,但是您可以通过包含文件来轻松地自己完成此操作。通过使用 yaml 文件,我们不必接触我们的环境/暂存或生产文件。
我正在使用乘客 - sidekiq wiki 的故障排除页面建议在使用独角兽或乘客时更改设置,因此我在此处添加了客户端设置的代码:
这是我的设置文件(显然值已更改):
我发现将命名空间添加到 config/sidekiq.yml 文件似乎不起作用——sidekiq 会在部署时使用正确的端口启动,但实际上不会处理任何内容。但由于 wiki 建议使用命名空间,我最终只是将其添加到 init 文件中。
我希望这对其他人有帮助,因为这对我来说真的很难理解,以前没有做过很多这种设置。
ruby-on-rails - 如何改进 ActiveRecord 查询
我有一个从查询返回结果的方法。然后调用该方法的代码循环遍历每个结果并启动一个 sidekiq 工作程序。我遇到的问题是循环实际上需要相当长的时间(几乎与运行所有工作人员所需的时间相同)。这是查询:
然后我执行以下操作:
我试图弄清楚如何使这个过程更有效率。结果是完成此过程大约需要 10 分钟,每次启动实际上需要 20 毫秒(如果查询返回 30,000 个结果)。有什么办法可以让这更快吗?
ruby-on-rails - Sidekiq can't connect to redis in rails
I have my redis server installed and running, but when I connect sidekiq using bundle exec sidekiq
it throws an error message
Timed out connecting to Redis on localhost:6379
Redis Server is running on port: 6379.
ruby-on-rails - 失败,错误 10068:“无效的运算符:$oid”
刚刚更新到最新版本的 mongoid (3.1.0) 和 sidekiq (2.7.2)
现在我得到了错误:failed with error 10068: "invalid operator: $oid"
通过查看代码,我看到一个这样的选择:@selector={"_id"=>{"$oid"=>"[some id]"}}
这里有什么问题?
ruby-on-rails-3.2 - sidekiq 忽略池大小设置
无论我尝试什么,我似乎都无法让 Sidekiq 遵守我的最大池大小设置。我试过了:
- 在我的数据库中设置池:
- 在我的 sidekiq 初始化程序中对其进行硬编码(无论是否断开连接!以及在配置服务器块的内部和外部):
- 使用 DATABASE_URL env var 设置它(是的,我确保使用https://github.com/glenngillen/rails-database-url设置了 DATABASE_URL ):
我不知道为什么这些都不起作用。有任何想法吗?
如果它是相关的:
- 导轨 3.2.12
- Sidekiq 2.6.4
ruby - 如何在 Sidekiq 中运行工人一段时间?
我正在编写一个 Rails 应用程序,其中有一段依赖于时区的代码。
如何让我的 Sidekiq 工作人员只在某个时区的白天工作,即每天工作一段时间。
即使它的队列不为空,工作人员也应该在某个时间点(一天结束)暂停并在第二天恢复。
ruby-on-rails - 围绕carrierwave_backgrounder 模型编写集成测试的最佳方法是什么?
我正在尝试围绕在后台上传文档的 Rails 模型编写集成测试。我正在使用carrierwave_backgrounder gem 以及sidekiq。代码本身已按预期启动并运行,但我无法弄清楚如何最好地围绕它编写集成测试。我已经尝试require 'sidekiq/testing/inline'
在我的spec_helper
文件中添加,但在保存模型后,上传的文档在下一步中仍然为零。我可以剔除它周围的东西,但似乎最好的做法是不要在集成规范中这样做。能够在文件仍在上传时以及之后测试行为会很好。关于如何最好地处理这个问题的任何建议?
ruby-on-rails - 如何为 Sidekiq 工作人员设置 default_url_options?
我有一个 Sidekiq 工作人员,旨在执行社交活动(例如:像 Facebook 上的页面)。其中一部分需要知道被喜欢对象的 URL。
Rails.application.routes.url_helpers
幸运的是,Rails 3 通过在需要访问 path/url 辅助方法的任何类或模块中包含任何类或模块,使访问特定于应用程序的路由变得容易。
我遇到的问题是我的默认 url/端口无法从我的 Sidekiq 工作程序中访问,尽管有各种尝试在我的development.rb
or中定义它们production.rb
。
当recipe_url
方法被访问时,ArgumentError
会引发 an 消息:
ArgumentError:缺少要链接的主机!请提供 :host 参数,设置 default_url_options[:host],或设置 :only_path 为 true
我知道我可以在特定于环境的配置文件中指定或指定,default_url_options
例如ActionController
:ActionMailer
然而,这些(理所当然地)似乎对我的 Sidekiq 工人阶级没有影响。我应该如何定义default_url_options
这些类?
ruby - 重命名 gem 添加的方法
我想将Sidekiq gem 添加delay
的方法重命名为. 这个扩展方法被添加到 Ruby 中的所有类中。如何使用 Ruby 元编程来做到这一点?sidekiq_delay
我想这样做,以便 Sidekiqdelay
不会覆盖延迟作业的delay
方法。
ruby-on-rails-3 - redis上ECONNREFUSED怎么办?
我已经为此工作了几天,但我无法弄清楚出了什么问题。
其他一切正常,但我在 redis 上得到“ECONNREFUSED”。我有以下实例正在运行:
这是生产日志中的错误:
一切都是使用橡胶宝石设置的。
我试图删除所有实例并从头开始两次。我也尝试制定自定义安全规则,但我不知道我是否做得对。
请帮我!