You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为{targets}并行管道的R子进程设置--max-connections参数?

{targets}子进程连接数配置问题

R 4.4.0及以上版本新增--max-connections启动选项,可让R会话突破默认的128个连接限制。该选项目前仅支持命令行启动R时使用,RStudio暂未开放此设置。我希望在命令行运行{targets}管道时,让子进程也能使用超过128的连接数。

我创建了一个{targets}最小示例项目,其中_targets.R的目标定义如下:

list(
  tar_target(
    name = conns, 
    command = parallelly::availableConnections()
  )
)

测试步骤

场景1:RStudio控制台运行

parallelly::availableConnections()
# 返回128
targets::tar_destroy() # 清除历史结果
targets::tar_make()
targets::tar_read(conns)
# 结果仍为128

场景2:命令行启动高连接数R进程后运行{targets}

# 命令行启动支持512连接的R进程
R --max-connections=512

在该R会话中执行:

parallelly::availableConnections()
# 返回512(符合预期)
targets::tar_destroy()
targets::tar_make()
targets::tar_read(conns)
# 返回128(不符合预期)

原因:{targets}会启动新的子进程执行管道,该子进程继承的是默认128连接数,而非父进程的512。

场景3:当前进程内运行{targets}(单线程)

targets::tar_destroy()
targets::tar_make(callr_function = NULL)
targets::tar_read(conns)
# 返回512(符合预期)

但此方式为单线程执行,无法满足并行处理需求。

场景4:启用{targets}并行模式

先在_targets.R中启用并行控制器:

# controller = crew::crew_controller_local(workers = 2, seconds_idle = 60)

然后执行:

targets::tar_destroy()
targets::tar_make(callr_function = NULL)
targets::tar_read(conns)
# 返回128

可见并行子进程继承的仍是默认128连接数。


问题

  • 能否让{targets}的子进程继承父进程的连接数设置?
  • 能否直接为{targets}的子进程指定最大连接数?

内容的提问来源于stack exchange,提问作者Matthew Kuperus Heun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 22:13:20