Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.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/8/python-3.x/18.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代码的Docker)组织healthcheck?_Python_Python 3.x_Docker_Rest_Flask - Fatal编程技术网

如何为我的员工(使用python代码的Docker)组织healthcheck?

如何为我的员工(使用python代码的Docker)组织healthcheck?,python,python-3.x,docker,rest,flask,Python,Python 3.x,Docker,Rest,Flask,在我的项目中,我有一个RESTAPI(Flask服务器)和workers(在Docker容器中工作的python脚本——简单的无限循环,向服务器发出请求并获得工作)。Flask服务器将任务发送给工作人员 但当然,有些事情可能会出错,Docker集装箱可能会坠落。那一刻我想让服务器知道这件事。您能提供一种简单的方法吗?使用Redis这是一种重量非常轻、速度非常快的内存数据结构服务器,可以很容易地完成这类工作。它可以为网络中的列表、散列、集合、有序集合、整数、原子整数、字符串等提供服务,客户机包括b

在我的项目中,我有一个RESTAPI(Flask服务器)和workers(在Docker容器中工作的python脚本——简单的无限循环,向服务器发出请求并获得工作)。Flask服务器将任务发送给工作人员


但当然,有些事情可能会出错,Docker集装箱可能会坠落。那一刻我想让服务器知道这件事。您能提供一种简单的方法吗?

使用Redis这是一种重量非常轻、速度非常快的内存数据结构服务器,可以很容易地完成这类工作。它可以为网络中的列表、散列、集合、有序集合、整数、原子整数、字符串等提供服务,客户机包括bashPythonPHP、C/C++和其他一切

我会使用一个简单的密钥并在密钥上设置一个EXPIRE,比如10秒。然后,网络中的每台服务器和每台客户机只需至少每隔10秒设置一个以其主机名(或函数)命名的密钥,这将重置其超时。如果有人查询密钥,但密钥已经10秒没有设置,他们就会知道客户机/服务器或主机/进程已经死亡

文件是


另一种更简单的通信方式是通过文件系统。每个工人必须每N秒“触摸”(创建)一个名为
/tmp/WORKERXXX.alive的文件。希望检查工作进程是否处于活动状态的进程将每隔N+1秒检查文件是否存在并删除它们。如果文件不存在,则工作进程将重新启动

在工作人员的代码中,触摸文件不一定是侵入性的。它可以简单地在启动时创建一个额外的线程,该线程运行一个无限循环,休眠N秒,然后触摸其保持活动的文件