Python Flask:在尝试比较图像时,OpenCV库出错,产生HTTP代码502 Bad Gateway。

0

【以下的问题经过翻译处理】 你好,

我在使用 Python OpenCV 库时遇到问题,在 AWS Lightsail 容器实例上运行。

一些基本信息:

  • 运行在 python:3.7 Docker 镜像上。
  • Python Flash应用
  • AWS Lightsail 容器实例
  • 使用以下第三方库:链接
  • 对 OpenCV 使用 opencv-contrib-python-headless==4.5.4.60。
  • 错误图片:链接

当尝试比较两个图像时,我收到 502 Bad Gateway 的 HTTP 状态代码,这很奇怪。 似乎在我的本地 Windows 机器上完美运行,但在这个 Linux 映像上不行。

from cv2 import cv2 import logging logger = logging.getLogger()
def compare_two_images(image_to_compare_file, image_to_compare_against_file): 
# Image imports 
# Features 
logger.warning("image_to_compare_file " + image_to_compare_file)
logger.warning("image_to_compare_against_file " + image_to_compare_against_file)

筛选 = cv2.SIFT_create()
logger.warning("SIFT 创建" + str(sift 为 None))

# 查询图像
img1 = cv2.imread(image_to_compare_file, cv2.IMREAD_GRAYSCALE)
logger.warning("IMG1 read created" + str(img1 is None))

# 使用 SIFT 查找关键点和描述符
kp1, desc1 = sift.detectAndCompute(img1, None)
logger.warning("检测并计算" + str(kp1 为 None) + " " + str(desc1 为 None))
    
img2 = cv2.imread(image_to_compare_against_file, cv2.IMREAD_GRAYSCALE)
logger.warning("IMG2 读取已创建" + str(img2 为 None))

kp2,desc2 = sift.detectAndCompute(img2,无)
logger.warning("检测并计算" + str(kp2 == None) + " " + str(desc2 is None))

# 使用默认参数的 BFMatcher
bf = cv2.BFMatcher()
匹配 = bf.knnMatch(desc1, desc2, k=2)

# 应用比率测试
好= []
对于 m, n 匹配:
    如果 m.distance < 0.55 * n.distance:
        good.append([m])`

kp1, desc1 = sift.detectAndCompute(img1, None) 上崩溃

并产生 502 Bad Gateway。 然后,在我的 Python Flask 应用程序中的其他一些endpoint上,多次产生503 服务暂时不可用。 在那之后,我可以看到图像被删除了。

1 Antwort
0

【以下的回答经过翻译处理】 确定错误5XX是源自负载均衡器还是实例非常相关:

https://lightsail.aws.amazon.com/ls/docs/en_us/articles/understanding-instance-health-metrics-in-amazon-lightsail#understanding-load-balancer-metrics

为了了解更多的信息,我建议尝试以下操作:

1.确保相关的“flask”环境标识已设置为输出调试级别日志:

应该能够看到错误的回溯,如下所示:

https://flask.palletsprojects.com/en/2.0.x/debugging

还可以像这里所解释的那样查看Lightsail中记录的日志:

https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-viewing-container-service-container-logs

2.作为测试,使用更多的RAM来运行的应用程序,以查看是否存在内存不足错误导致应用程序崩溃。

https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-viewing-container-services-metrics

3.调查容器报告的健康状态。容器服务可能有特定的健康要求进行监控(例如响应时间)。如果该指标确定服务不健康,我期望它将为您重新启动服务。您可以在此处找到更多有关健康监控选项的信息:

https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-container-services-deployments

profile picture
EXPERTE
beantwortet vor 8 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen