部署到 App Engine Flex Python 时 Google 翻译 v3 挂起

问题描述 投票:0回答:1

我使用

google.cloud
translate_v3

构建了一个用于翻译文本的单个包装器
from google.cloud import translate_v3 as translate
from google.cloud.translate_v3 import types
from credentials import credentials
from typing import Optional


class Translator:
    def __init__(self):
        project_name = credentials.project_id
        self.client = translate.TranslationServiceClient()
        self.parent = f"projects/{project_name}/locations/global"

    def translate(self, text: str, source: str, target: str) -> Optional[str]:
        try:
            request = types.TranslateTextRequest()
            request.parent = self.parent
            request.source_language_code = source
            request.target_language_code = target
            request.contents = [text]
            request.mime_type = "text/plain"

            print("Translator: translate_text start")
            response = self.client.translate_text(request=request)
            print("Translator: got response")

            for translation in response.translations:
                print(f"Translated text: {translation.translated_text}")

            if len(response.translations) < 1:
                return text

            print("Translator: translate_text complete")
            return response.translations[0].translated_text

        except Exception as e:
            print(f"Exception during translation: {e}")
            return text

在我的本地计算机上构建时,这一直工作正常,但是将其部署到我的应用程序引擎 Flex 实例时却不行..

我已将

Cloud Translation API User
角色添加到我的 App Engine 服务帐户,但我完全没有收到任何反馈...它实际上似乎使 App Engine 崩溃。

打电话...

print(f"Translating text: {text} from {raw_source} to {raw_target}")
translation = self.translator.translate(text, raw_source, raw_target)

本地...

Translating text: testing locally from en to ja
Translator: translate_text start
Translator: got response
Translated text: ローカルでのテスト
Translator: translate_text complete

已部署...

Translating text: test deployed from en to ja
Translator: translate_text start

然后什么都没有..没有例外,没有警告,一切都死了。

我尝试在方法内移动

client
...

request = types.TranslateTextRequest()
request.parent = self.parent
request.source_language_code = source
request.target_language_code = target
request.contents = [text]
request.mime_type = "text/plain"
client = translate.TranslationServiceClient()

print("Translator: translate_text start")
response = client.translate_text(request=request)
print("Translator: got response")

我尝试删除

request.mime_type = "text/plain"

都没有成功

flask google-cloud-platform google-app-engine google-translate
1个回答
0
投票

当您在 Google App Engine 上部署应用程序时,与在本地运行应用程序相比,存在一些差异和注意事项。就您的情况而言,部署到 App Engine Flex 时翻译过程似乎未按预期工作。以下是一些故障排除步骤和注意事项,可帮助您调试问题:

在 Google Cloud Console 中检查日志:

访问您的 App Engine 项目的 Google Cloud Console。 导航到“日志记录”或“日志”以查看 App Engine 应用程序生成的日志。查找任何错误消息或异常,它们可能有助于了解翻译过程中出现的问题。 验证 App Engine 配置:

确保您的 App Engine 应用程序已正确配置为使用 Google Cloud Translation API。您可以在 app.yaml 文件中检查这一点,以确保正确定义必要的环境变量和设置。 验证服务帐户权限:

仔细检查 App Engine 服务帐户是否具有使用 Cloud Translation API 所需的权限。您提到您添加了“Cloud Translation API User”角色,但还要确保服务帐户与您的 App Engine 项目正确关联。 检查计费和配额问题:

确保您的 Google Cloud 结算帐号处于活动状态,并且未超出 Cloud Translation API 的任何配额限制。如果您已达到配额限制,则可能会导致 API 无法按预期工作。 网络问题:

验证您的 App Engine 应用程序是否具有正确的网络连接以访问 Cloud Translation API。 App Engine Flex 实例可能需要额外的网络配置或防火墙规则,因此如有必要,请检查您的 VPC 设置。 检查环境差异:

确保您的本地开发环境和部署的 App Engine 环境之间不存在特定于环境的差异。这些差异可能包括环境变量、配置文件或依赖项。 错误处理:

在代码中实现更强大的错误处理和日志记录。例如,在代码中的各个点捕获并记录异常,以确定问题发生的位置。 版本不匹配:

确保您在本地和部署的环境中使用正确版本的 google-cloud-translate 库。过时或不兼容的库版本可能会导致意外行为。 App Engine Flex 配置:

检查您的 App Engine Flex 配置,包括 app.yaml 文件以及您可能用于配置的任何环境变量。确保正确指定所需的依赖项和设置。 通过执行这些故障排除步骤并仔细检查日志和配置,您应该能够确定问题的根本原因并让您的翻译服务在 App Engine Flex 上正常运行。

© www.soinside.com 2019 - 2024. All rights reserved.