0

我正在使用 Google自然语言内容分类 API
我正在通过目录中的服务帐户.json文件进行身份验证,该目录中的路径暴露在GOOGLE_APPLICATION_CREDENTIALS环境变量中。

当我将分类脚本作为 1 个实例运行时没有问题。
但是,当我并行运行我的分类脚本时(4、6、8、10 个 Docker 容器在 1 台机器上运行),我偶尔会收到以下错误:
[Errno 24] Too many open files: '/PATH/TO/MY-JSON_KEY.json'

我已阅读建议增加的相关问题ulimit

这似乎更像是回避潜在问题的一种方式。

似乎 Google 库 API 调用可能正在打开帐户凭据文件但没有关闭它?

更新
这是我设法检索到的更长的错误消息:

google.auth.exceptions.TransportError: HTTPSConnectionPool(host='oauth2.googleapis.com', port=443): 最大重试次数超过 url: /token (由 NewConnectionError(': 无法建立新连接: [Errno 24 ] 打开的文件太多'))

4

2 回答 2

1

我想我最近遇到了同样的问题,问题似乎是自然语言 API 客户端被多次调用,它会查找“/PATH/TO/MY-JSON_KEY.json”然后打开它直到它达到限制,我想同时将工作负载划分到多个容器中可能不会达到限制,但是如果工作负载增加,即使有多个容器也可能再次达到限制,所以我建议你检查有多少次调用以下行。

client = language_v1.LanguageServiceClient()

在确保只调用一次之后,我没有遇到任何问题,有关更多信息,这是我的帖子,希望它可以帮助配合。

于 2020-04-13T17:31:03.603 回答
1

我试过了del client,后来打了电话gc.collect()。它对我有用:)

于 2019-12-07T18:10:55.157 回答