Git 拉取并发限制

fetch_concurrency 键告诉 Antora 从远程 git 仓库检索内容时允许多少并发拉取操作。这涵盖了 fetchclone 操作(因为 clone 首先执行 fetch)。当并发操作数量达到此限制时,Antora 将等待活动操作完成,然后再将另一个操作添加到队列中。

查看 Git 读取并发限制 以了解如何控制 Antora 一次从多少个仓库读取。

默认拉取并发

默认情况下,Antora 将拉取并发限制为 1,这意味着一次只会从一个仓库拉取。如果您希望 Antora 能够同时从所有仓库拉取,可以将此值更改为 0

同时拉取大量仓库可能会对网络造成沉重负担。此外,一些 git 托管服务对并发请求设置配额,尤其是匿名请求(称为速率限制)。这可能导致 git 客户端受到限制(甚至被禁止)而无法访问 git 服务器。在最坏的情况下,服务器可能会中断网络连接,导致 Antora 失败。为缓解这种情况,Antora 允许您调整拉取并发限制。

fetch_concurrency 键

可选的 fetch_concurrency 键设置在 playbook 中的 git 类别 下。此键接受正整数值或 0 以表示无限制。

示例 1. antora-playbook.yml
git:
  fetch_concurrency: 5

fetch_concurrency 键的目的是允许您控制(即限制)内容聚合器一次进行多少个网络连接,从而规避 git 主机强制执行的速率限制问题。如果 git 服务器极端地重置暂停的连接,例如 GitHub 的情况,建议将此值设置为 1

您可能会发现通过限制并发操作的数量,可以减少拉取操作完成所需的时间。这可能是因为 git 服务器不会限制请求。然而,串行拉取仓库也可能增加拉取所有仓库所需的时间。您需要尝试不同的值,找到最适合您站点的设置。

对于交互式终端,限制拉取并发还会限制终端中同时出现的进度条数量。

与仓库扫描的关系

一旦仓库被拉取,或者不需要拉取,Antora 将该仓库放入池中进行扫描。默认情况下,Antora 不会限制同时扫描的仓库数量。您可以使用 Git 读取并发限制 键来控制此行为。只有在所有拉取(或克隆)操作完成后,Antora 才开始从仓库中读取内容。限制仅适用于拉取步骤。

如果 Antora 尚未克隆仓库,或者设置了 runtime.fetch 键,则会从远程仓库拉取内容。