如何检测我的代码是否在Sidekiq服务器或Puma中运行?

19
我正在使用 Puma 作为 Web 服务器,以及 Sidekiq 作为队列运行器。
对于多个事项(数据库连接,Redis 连接,其他外部服务),我使用 ConnectionPool gem 来管理对连接的安全访问。
现在,根据我是在 Sidekiq 或 Puma 的上下文中运行,我需要这些池的大小不同(分别与 Sidekiq 线程或 Puma 线程数量一样大,它们是不同的)。
如何在初始化程序中知道根据执行上下文来确定连接池的大小是最好的方法?
谢谢!
2个回答

55
你使用 Sidekiq.server?,当不是在 Sidekiq 进程内运行时返回 nil

除了 Sidekiq Enterprise 外,在 Sidekiq Enterprise 上我现在会收到一个包含“constant”的字符串。这在升级到企业版之前是不可能的。发生在 Trinidad 上… - user934801
1
你应该打开一个问题,因为那是不正确的。 - Mike Perham
@user934801 你可能在某个地方需要 require sidekiq/cli - Michael Franzl

0

我不知道你具体的情况(puma/sidekiq),但通常你可以在$PROGRAM_NAME变量中找到这些信息。类似的还有$0__FILE__


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接