OpenCV(imread) 操作卡在 elastic beanstalk 中
OpenCV(imread) operation stuck in elastic beanstalk
我正在尝试读取一个 png 文件并在终端中使用 opencv 的 imread 函数在终端中输出图像的 numpy 矩阵,就像这样
import cv2
from flask import Flask
import os
@application.route('/readImage',methods=['POST'])
def handleHTTPPostRequest():
imagePath = f'{os.getcwd()}/input.png'
print('image path is', imagePath)
print(cv2.__version__)
im = cv2.imread(imagePath,cv2.IMREAD_COLOR)
print(im)
return 'success'
无论我执行多少次,这都会在我的本地计算机上提供预期的输出 (Ubuntu 18.04)。我通过必要的设置将其移动到 elastic beanstalk(CentOS)。在我第一次调用 post 时,请求运行良好(提供正确的日志和成功)。
但是当我第二次调用 post 时,它只输出前两个日志(图像路径和 cv2 版本)并且停留在那里一段时间。一段时间后,它显示此错误
End of script output before headers: application.py
我在 cv2.imread 之前又添加了一行,以确保该文件存在
print('does the file exists',os.path.isfile(imagePath) )
这每次都返回真值。我已经多次重新启动服务器,看起来它只在第一次工作并且 cv2.imread() 在第一个 post call.What 之后卡住了,我错过了吗
当您从请求处理程序 print
时,Flask 会尝试做一些明智的事情,但 print
确实不是您想要做的,因为它有抛出 HTTP [=18] 的风险=] 簿记关闭。
从处理程序中获取诊断信息的一种完全支持的方法是使用 logging
模块。这将需要一些配置。参见 http://flask.pocoo.org/docs/1.0/logging/
对于遇到此问题的任何人,我找到了 solution。将此添加到您的 ebextensions 配置文件
container_commands:
AddGlobalWSGIGroupAccess:
command: "if ! grep -q 'WSGIApplicationGroup %{GLOBAL}' ../wsgi.conf ; then echo 'WSGIApplicationGroup %{GLOBAL}' >> ../wsgi.conf; fi;"
Saikiran 的最终解决方案对我有用。当我尝试从 opencv-python 库调用方法时遇到了这个问题。我在本地 运行 Ubuntu 18.04 并且在那里工作正常。但是,与 Saikiran 的原始 post 一样,当部署到 Elastic Beanstalk 时,第一个请求有效,然后第二个请求无效。对于我的 EB 环境,我使用的是基于 Python3.6 的亚马逊 Linux 服务器。
我正在尝试读取一个 png 文件并在终端中使用 opencv 的 imread 函数在终端中输出图像的 numpy 矩阵,就像这样
import cv2
from flask import Flask
import os
@application.route('/readImage',methods=['POST'])
def handleHTTPPostRequest():
imagePath = f'{os.getcwd()}/input.png'
print('image path is', imagePath)
print(cv2.__version__)
im = cv2.imread(imagePath,cv2.IMREAD_COLOR)
print(im)
return 'success'
无论我执行多少次,这都会在我的本地计算机上提供预期的输出 (Ubuntu 18.04)。我通过必要的设置将其移动到 elastic beanstalk(CentOS)。在我第一次调用 post 时,请求运行良好(提供正确的日志和成功)。 但是当我第二次调用 post 时,它只输出前两个日志(图像路径和 cv2 版本)并且停留在那里一段时间。一段时间后,它显示此错误
End of script output before headers: application.py
我在 cv2.imread 之前又添加了一行,以确保该文件存在
print('does the file exists',os.path.isfile(imagePath) )
这每次都返回真值。我已经多次重新启动服务器,看起来它只在第一次工作并且 cv2.imread() 在第一个 post call.What 之后卡住了,我错过了吗
当您从请求处理程序 print
时,Flask 会尝试做一些明智的事情,但 print
确实不是您想要做的,因为它有抛出 HTTP [=18] 的风险=] 簿记关闭。
从处理程序中获取诊断信息的一种完全支持的方法是使用 logging
模块。这将需要一些配置。参见 http://flask.pocoo.org/docs/1.0/logging/
对于遇到此问题的任何人,我找到了 solution。将此添加到您的 ebextensions 配置文件
container_commands:
AddGlobalWSGIGroupAccess:
command: "if ! grep -q 'WSGIApplicationGroup %{GLOBAL}' ../wsgi.conf ; then echo 'WSGIApplicationGroup %{GLOBAL}' >> ../wsgi.conf; fi;"
Saikiran 的最终解决方案对我有用。当我尝试从 opencv-python 库调用方法时遇到了这个问题。我在本地 运行 Ubuntu 18.04 并且在那里工作正常。但是,与 Saikiran 的原始 post 一样,当部署到 Elastic Beanstalk 时,第一个请求有效,然后第二个请求无效。对于我的 EB 环境,我使用的是基于 Python3.6 的亚马逊 Linux 服务器。