为 python3 实施 flask-healthz
implement flask-healthz for python3
我正在尝试为我的 python 应用程序实施 flask-healthz (https://pypi.org/project/flask-healthz/) 以获得 return 活性和红色探测。但不知何故,它对我不起作用。下面是我的代码片段:
from flask import Flask
from flask_healthz import healthz
from flask_healthz import HealthError
def printok():
print("Everything is fine")
app = Flask(__name__)
app.register_blueprint(healthz, url_prefix="/healthz")
def liveness():
try:
printok()
except Exception:
raise HealthError("Can't connect to the file")
def readiness():
try:
printok()
except Exception:
raise HealthError("Can't connect to the file")
HEALTHZ = {
"live": "yourapp.checks.liveness",
"ready": "yourapp.checks.readiness",
}
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
代码的输出如下所示:
(app-root) curl http://localhost:5000/
127.0.0.1 - - [02/Jun/2021 01:02:56] "GET / HTTP/1.1" 200 -
Hello World!
(app-root) curl http://localhost/yourapp/healthz/live
curl: (7) Failed to connect to localhost port 80: Connection refused
(app-root) curl http://localhost:5000/yourapp/healthz/live
127.0.0.1 - - [02/Jun/2021 01:03:23] "GET /yourapp/healthz/live HTTP/1.1" 404 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
(app-root) curl http://localhost:5000/yourapp/healthz/ready
127.0.0.1 - - [02/Jun/2021 01:03:37] "GET /yourapp/healthz/ready HTTP/1.1" 404 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
(app-root) curl http://localhost:5000/healthz/readiness
127.0.0.1 - - [02/Jun/2021 01:04:02] "GET /healthz/readiness HTTP/1.1" 404 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The readiness check endpoint is not setup</p>
(app-root) curl http://localhost:5000/healthz/liveness
127.0.0.1 - - [02/Jun/2021 01:04:10] "GET /healthz/liveness HTTP/1.1" 404 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The liveness check endpoint is not setup</p>
(app-root)
我是不是做错了什么。我尝试 运行 在 Openshift 中做同样的事情,但运气不好。
如果有一些工作示例,我会很感激。
假设这是文档中的复制粘贴,您可以更改以下内容以使其正常工作。
持平app.py
:
from flask import Flask
from flask_healthz import healthz
from flask_healthz import HealthError
app = Flask(__name__)
app.register_blueprint(healthz, url_prefix="/healthz")
def printok():
print("Everything is fine")
def liveness():
try:
printok()
except Exception:
raise HealthError("Can't connect to the file")
def readiness():
try:
printok()
except Exception:
raise HealthError("Can't connect to the file")
app.config.update(
HEALTHZ = {
"live": "app.liveness",
"ready": "app.readiness",
}
)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
然后
curl localhost:5000/healthz/live
OK
curl localhost:5000/healthz/ready
OK
我正在尝试为我的 python 应用程序实施 flask-healthz (https://pypi.org/project/flask-healthz/) 以获得 return 活性和红色探测。但不知何故,它对我不起作用。下面是我的代码片段:
from flask import Flask
from flask_healthz import healthz
from flask_healthz import HealthError
def printok():
print("Everything is fine")
app = Flask(__name__)
app.register_blueprint(healthz, url_prefix="/healthz")
def liveness():
try:
printok()
except Exception:
raise HealthError("Can't connect to the file")
def readiness():
try:
printok()
except Exception:
raise HealthError("Can't connect to the file")
HEALTHZ = {
"live": "yourapp.checks.liveness",
"ready": "yourapp.checks.readiness",
}
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
代码的输出如下所示:
(app-root) curl http://localhost:5000/
127.0.0.1 - - [02/Jun/2021 01:02:56] "GET / HTTP/1.1" 200 -
Hello World!
(app-root) curl http://localhost/yourapp/healthz/live
curl: (7) Failed to connect to localhost port 80: Connection refused
(app-root) curl http://localhost:5000/yourapp/healthz/live
127.0.0.1 - - [02/Jun/2021 01:03:23] "GET /yourapp/healthz/live HTTP/1.1" 404 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
(app-root) curl http://localhost:5000/yourapp/healthz/ready
127.0.0.1 - - [02/Jun/2021 01:03:37] "GET /yourapp/healthz/ready HTTP/1.1" 404 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p>
(app-root) curl http://localhost:5000/healthz/readiness
127.0.0.1 - - [02/Jun/2021 01:04:02] "GET /healthz/readiness HTTP/1.1" 404 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The readiness check endpoint is not setup</p>
(app-root) curl http://localhost:5000/healthz/liveness
127.0.0.1 - - [02/Jun/2021 01:04:10] "GET /healthz/liveness HTTP/1.1" 404 -
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The liveness check endpoint is not setup</p>
(app-root)
我是不是做错了什么。我尝试 运行 在 Openshift 中做同样的事情,但运气不好。
如果有一些工作示例,我会很感激。
假设这是文档中的复制粘贴,您可以更改以下内容以使其正常工作。
持平app.py
:
from flask import Flask
from flask_healthz import healthz
from flask_healthz import HealthError
app = Flask(__name__)
app.register_blueprint(healthz, url_prefix="/healthz")
def printok():
print("Everything is fine")
def liveness():
try:
printok()
except Exception:
raise HealthError("Can't connect to the file")
def readiness():
try:
printok()
except Exception:
raise HealthError("Can't connect to the file")
app.config.update(
HEALTHZ = {
"live": "app.liveness",
"ready": "app.readiness",
}
)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000)
然后
curl localhost:5000/healthz/live
OK
curl localhost:5000/healthz/ready
OK