Фляга \werkzeug: перехват рабочего прекращения

Есть ли способ выполнить некоторый код непосредственно перед выключением рабочего? Я не слишком уверен в модели исполнения колбы \werkzeug, ситуация такова:

Во время создания приложения фляги я запускаю поток deamon, чтобы сделать некоторые внешние вещи (по существу, ожидая в очереди); Я настроил эту тему как демон, потому что я не хочу, чтобы она предотвращала завершение работы работника, работающего с флягой, когда это необходимо. есть моя проблема: мне нужно выполнить некоторый код очистки непосредственно перед тем, как поток был убит рабочим, и мое решение состоит в том, чтобы выполнить эти операции на событии завершения (если оно есть) рабочего

1 ответ

Решение

С python вы можете использовать хук uwsgi.atexit. Функция обратного вызова будет выполнена перед выходом.

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
Другие вопросы по тегам