【发布时间】:2019-05-28 07:09:28
【问题描述】:
我正在使用谷歌Natural Language Content Classification API。
我正在通过一个目录中的服务帐户.json 文件进行身份验证,该目录中的路径暴露在GOOGLE_APPLICATION_CREDENTIALS 环境变量中。
当我将分类脚本作为 1 个实例运行时没有问题。
但是,当我并行运行我的分类脚本时(4、6、8、10 个 Docker 容器在 1 台机器上运行),我偶尔会收到以下错误:[Errno 24] Too many open files: '/PATH/TO/MY-JSON_KEY.json'
我看过related issues建议增加ulimit:
这似乎更像是一种回避潜在问题的方法。
似乎 Google 库 API 调用可能正在打开帐户凭据文件但没有关闭它?
更新
这是我设法检索到的更长的错误消息:
google.auth.exceptions.TransportError: HTTPSConnectionPool(host='oauth2.googleapis.com', port=443): url: /token 超过最大重试次数(由 NewConnectionError(': 无法建立新连接: [Errno 24] 打开的文件太多'))
【问题讨论】:
-
你有解决办法吗?
-
我有一个解决方法,但不是解决方案。我所做的是同时运行许多调用 API 的容器,这样我就可以更快地处理数据。
-
那么您的 1 个实例上的每个容器都有自己的 json 文件?
-
是的。作为
Dockerfile步骤的一部分,每个容器都将.json文件复制到其中。而且它们是相同的,我只是通过重复docker run...来开始它们中的许多