使用 bottle/Uwsgi/nginx 在第一个请求之前执行工作

Perform work before first request with bottle/Uwsgi/nginx

我有一个 bottle 网络服务器 运行 UWSGI 和 Nginx。通常,如果我使用

手动启动脚本
python app.py

我能做到

if __name__ == '__main__':
    spawn_workers()
    init_workspace()
    run(app, host='0.0.0.0', port=8080)

问题是,当使用 UWSGI 时,它没有 运行 if __name__ == '__main__' 部分,因为它只获取 app = application = bottle.Bottle() 部分。这意味着我永远没有机会在网络服务器启动之前生成后台工作程序。

解决这个问题的正确方法是什么?我看到 flask 有一个 app.before_first_request 功能,但我找不到与 bottle 的那个功能相对应的任何东西。

只在app.py中进行初始化还不够吗?例如,

# app.py
spawn_workers()
init_workspace()

app = Bottle()