Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为prometheus客户端创建循环healthcheck并获取枚举值_Python_Python 3.x_Flask_Prometheus - Fatal编程技术网

Python 如何为prometheus客户端创建循环healthcheck并获取枚举值

Python 如何为prometheus客户端创建循环healthcheck并获取枚举值,python,python-3.x,flask,prometheus,Python,Python 3.x,Flask,Prometheus,下面这个例子: 我们正在使用Python尝试并创建一个healthcheck应用程序,该应用程序可以抓取网页并测试成功登录。然后,我们希望使用Prometheus_客户端包将healthcheck的状态发送给Prometheus 我们有app.py,它基本上是FlaskAPI端点,普罗米修斯将在这里获取度量。我们还提出了生成一个子流程来运行无限测试循环的想法 来自烧瓶导入烧瓶,响应 从中间件导入设置\u度量 导入prometheus_客户端 导入子流程 CONTENT\u TYPE\u LATE

下面这个例子:

我们正在使用Python尝试并创建一个healthcheck应用程序,该应用程序可以抓取网页并测试成功登录。然后,我们希望使用Prometheus_客户端包将healthcheck的状态发送给Prometheus

我们有
app.py
,它基本上是FlaskAPI端点,普罗米修斯将在这里获取度量。我们还提出了生成一个子流程来运行无限测试循环的想法

来自烧瓶导入烧瓶,响应
从中间件导入设置\u度量
导入prometheus_客户端
导入子流程
CONTENT\u TYPE\u LATEST=str('text/plain;version=0.0.4;charset=utf-8')
app=烧瓶(名称)
设置度量(应用程序)
Popen(['python',“/usr/src/tasks/selenium\u login.py”])
@app.route(“/metrics”)
def metrics():
返回响应(
prometheus_客户端。生成_最新版本(),
mimetype=内容\类型\最新版本)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
#启动服务器以公开度量。
app.run(host='0.0.0.0',debug=True)#本地主机
我们有
middleware.py
,它计算并报告度量

来自flask导入请求
从普罗米修斯客户导入计数器,直方图
导入时间
导入系统
HEALTHCHECK_STATE=Enum(
“我的任务状态”,
'枚举说明:healthcheck状态',
状态=[‘开始’、‘运行’、‘停止’])
def将_state_设置为_running():
HEALTHCHECK\u STATE.STATE('running')
def将_state_设置为_stopped():
HEALTHCHECK\u STATE.STATE('stopped')
def设置_指标(应用程序):
应用程序请求后(后状态)
我们有
selenium\u login.py
,它运行测试登录脚本并传递或输出异常

#/usr/bin/env python
从selenium导入webdriver
从selenium.webdriver.common.keys导入密钥
导入时间
导入base64
从中间件导入将\u state\u设置为\u running,将\u state\u设置为\u stopped
def login():
时间。睡眠(20)
尝试:
driver=webdriver.Chrome()
driver.get('webpage.com')
#做登录的事情
driver.quit()
将_state_设置为_running()
除:
将_state_设置为_stopped()
如果名称=“\uuuuu main\uuuuuuuu”:
尽管如此:
登录()
我们试图解决的问题是将状态从
selenium\u login.py
文件传递到
middleware.py
,以便在无限登录循环运行时更新度量值,要么通过,要么失败。到目前为止,达到指标终点只会让我们:

my_task_state{my_task_state="starting"} 1.0
my_task_state{my_task_state="running"} 0.0
my_task_state{my_task_state="stopped"} 0.0

我们希望跑步是“1.0”。有人能帮我们解释一下逻辑吗?

您不需要将登录作为单独的脚本运行。尝试在单独的威胁上运行测试,但仍在同一脚本中:

def infinite_loop():
尽管如此:
登录()
时间。睡眠(20)
线程=线程(目标=无限循环,
args=(),
kwargs={})
thread.daemon=True
thread.start()
这样,您就可以访问主脚本上定义的所有元素