任务使用的是它自己的 Sidekiq 工作进程的环境,而不是新的终端或 Rails Web 进程。对于 HTTP 客户端会读取这些变量的前台工作进程:

http_proxy=http://proxy.example.net:8080 \
https_proxy=http://proxy.example.net:8080 \
bundle exec sidekiq

对于 Sidekiq 文档所述的 systemd 托管 Linux 部署方式,请把取值放进实际工作进程单元(unit)的 drop-in 文件:

[Service]
Environment="http_proxy=http://proxy.example.net:8080"
Environment="https_proxy=http://proxy.example.net:8080"

重新加载单元定义,并通过部署的常规重启流程替换工作进程。在已有工作进程中重新加载 Rails 代码不会替换它继承的环境。

当允许使用公共中转服务、且工作进程的客户端没有已配置或已保留的代理凭据时,公共服务检查可以在这些取值中使用来自 HTTP 代理列表的端点。存在多个按队列划分的单元时,要确定是哪一个执行了失败的任务。另一个工作进程的成功不能证明这一个的配置。

把该单元和 HTTP 客户端一并记录。显式配置过的客户端可以不受交给工作进程的变量影响而走另一条路由;这种情况下请配置它支持的接口。

相关文章