Python Flask关闭事件处理程序

我使用Flask作为REST端点,该端点将应用程序请求添加到队列中。然后,该队列被第二个线程使用。

server.py

def get_application():

global app

app.debug = True

app.queue = client.Agent()

app.queue.start()

return app

@app.route("/api/v1/test/", methods=["POST"])

def test():

if request.method == "POST":

try:

#add the request parameters to queue

app.queue.add_to_queue(req)

except Exception:

return "All the parameters must be provided" , 400

return "", 200

return "Resource not found",404

client.py

class Agent(threading.Thread):

def __init__(self):

threading.Thread.__init__(self)

self.active = True

self.queue = Queue.Queue(0)

def run(self):

while self.active:

req = self.queue.get()

#do something

def add_to_queue(self,request):

self.queue.put(request)

flask中是否有关闭事件处理程序,以便每当烧瓶应用程序关闭时(例如重新启动apache服务时),我就可以干净地关闭使用者线程?

回答:

如果你要查找的是没有app.stop(),但是使用模块atexit可以执行类似的操作:

https://docs.python.org/2/library/atexit.html

考虑一下:

import atexit

#defining function to run on shutdown

def close_running_threads():

for thread in the_threads:

thread.join()

print "Threads complete, ready to finish"

#Register the function to be called on exit

atexit.register(close_running_threads)

#start your process

app.run()

另外,atexit如果你使用Ctrl-C强制关闭服务器,则不会调用。

为此,还有另一个模块- signal

以上是 Python Flask关闭事件处理程序 的全部内容, 来源链接: utcz.com/qa/435299.html

回到顶部