有没有办法(在 uWSGI 或 Flask 中)注册一个函数,以便在生成后尽快在每个工作人员中运行?
我们有一个烧瓶应用程序,它可以从预加载一堆东西中受益。以下仅对preload
8 个工作进程调用一次。第一个请求很快,但预加载的对象以某种导致错误的方式共享。
app = Flask(__name__)
preload()
如果我使用before_first_request,则在每个工作进程中加载对象并且没有错误,但是第一个请求非常慢。
app = Flask(__name__)
@app.before_first_request
def bfr():
preload()
我还尝试设置一个烧瓶脚本。运行命令有效,但显然对象是在命令的进程中加载的,而不是在 uwsgi 工作人员中加载的。
app = Flask(__name__)
manager = Manager(app)
@manager.command
def preload():
...
我想如果我们使用before_first_request
,我们可以在重新启动 uwsgi 后手动触发请求。这是这里唯一的解决方案吗?
编辑:刚刚找到 uswgi hook-post-fork选项(和其他钩子选项)。我明天要试试。也许其中之一就是我需要的。