【问题标题】:Google Cloud Vision not responding when using gunicorn+Flask使用 gunicorn+Flask 时 Google Cloud Vision 没有响应
【发布时间】:2020-02-04 14:05:25
【问题描述】:

我是 Google Vision API 的新手,但我使用 gunicorn 和烧瓶已经有一段时间了。我安装了所有必需的库。我通过 gunicorn bash 文件在环境中有我的 api 密钥。每当我尝试使用 gcp API 时,它都会冻结而没有响应。 有人可以帮忙吗? 这是我的 gunicorn_start.bash

NAME="test"                                 
NUM_WORKERS=16                                     
PYTHONUNBUFFERED=True
FLASK_DIR=/home/user/fold/API/

echo "Starting $NAME"

cd $FLASK_DIR
conda activate tf


export development=False

export GOOGLE_APPLICATION_CREDENTIALS='/home/user/test-6f4e7.json'
exec /home/user/anaconda3/envs/tf/bin/gunicorn --bind 0.0.0.0:9349 --timeout 500 --worker-class eventlet --workers $NUM_WORKERS app:app

编辑 它在 API 调用期间冻结。 API调用代码:

client = vision.ImageAnnotatorClient()

with io.open(path, 'rb') as image_file:
    content = image_file.read()
image = vision.types.Image(content=content)


response = client.document_text_detection(image=image)

没有日志,因为它只是冻结,没有别的

【问题讨论】:

  • 在 API 调用期间是否在 o 之前、之后冻结?此外,如果您能提供发出请求的代码以及任何可能有助于确定问题所在的日志消息,那将非常有帮助。
  • @TIaquetzal 请通过编辑。谢谢

标签: python flask google-cloud-platform gunicorn google-cloud-vision


【解决方案1】:

代码看起来不错,似乎不是权限错误。由于没有日志,问题很难解决;但是,我对可能发生的事情有两种理论。我会将它们留在下面,并提供一些有关如何解决它们的信息。

API 调用未到达 Google 的服务器

这可能是由于网络错误而发生的。要放弃这一点,请尝试使用 curl 从开发环境(或应用程序运行的地方)发出请求。

您可以按照CLI quickstart for Vision API 准备环境,并提出请求。如果它有效,那么您可以将网络作为可能的原因丢弃。如果请求失败或冻结,那么您可能需要检查环境的网络配置。

此外,您还可以访问API Dashboard in the Cloud Console 并查看 Vision API 的指标。在这些图表中,您可以查看您的请求是否到达服务器,以及一些有用的信息,例如:API 方法错误、凭证错误、请求延迟等。

您发送的图片/文档有问题

注意:将应用程序的日志记录级别更改为 DEBUG(如果尚未处于此级别)。

如果您确定请求已到达服务器,则可能是您尝试发送的文件存在问题。如果文件太大,连接可能看起来好像在上传时被冻结,并且可能需要一些时间来处理。尝试使用较小的文件来查看结果。

另外,我注意到您目前正在使用同步方法来执行识别。如果文件太大,您可以尝试异步注释方法。基本上,您首先将文件上传到 Cloud Storage,然后创建一个请求,指示:文件所在的存储 URI 以及您希望将结果写入的目标存储 URI。

您将从该服务收到的是操作 ID。使用此 ID,您可以检查识别请求的状态并让您的代码等待该过程完成。您可以使用this example 作为参考来实现它。

希望通过这些信息,您可以确定您面临的问题并解决它。

【讨论】:

    【解决方案2】:

    我遇到了完全相同的问题,结果证明是 gunicorn 的错。当我切换到 Django 开发服务器时,问题就消失了。我尝试使用较旧的 gunicorn 版本(回到 2018 年),但问题仍然存在。我可能应该将此报告给 gunicorn。 :D

    同时要切换到uwsgi。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多