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