flask\werkzeug: 拦截工作进程终止

0 投票
1 回答
565 浏览
提问于 2025-04-18 00:51

有没有办法在工作线程关闭之前执行一些代码呢?我对flask和werkzeug的执行模型不是很有信心,情况是这样的:

在创建flask应用的时候,我启动了一个守护线程来处理一些外部的事情(基本上是在等待一个队列);我把这个线程设置为守护线程是因为我不想让它在需要的时候阻止运行flask应用的工作线程关闭。

我的问题是:我需要在这个线程被工作线程杀掉之前执行一些清理代码,我的解决方案是在线程关闭事件发生时(如果有的话)执行这些操作。

1 个回答

0

在Python中,你可以使用 uwsgi.atexit 这个钩子。这个 callback 函数会在程序退出之前执行。

import uwsgi, os
from flask import Flask
app = Flask('demo')

@app.route('/')
def index():
    return "Hello World"

def callback():
    print "Worker %i exinting" % os.getpid()
uwsgi.atexit = callback

撰写回答