【发布时间】:2019-01-07 05:42:44
【问题描述】:
我在 docker 中使用 Falcon 1.4.1 和 Gunicorn 19.9.0。
无法确定初始化应用程序的最佳方式 - 在我的 REST API 启动时运行一些代码,而不是每个工作人员运行一次。我有 3 名或更多工作人员正在为我的应用程序运行。
我已经尝试使用 gunicorn on_starting webhook,但它仍然为每个工作人员运行一次。在我的 gunicorn_conf.py 文件中:
def on_starting(server):
print('Here I am')
我还尝试了 gunicorn preload_app 设置,我现在很乐意在生产环境中使用它,它允许应用程序初始化在启动工作程序之前运行一次。
我希望能够使用 gunicorn reload 设置,以便文件更改重新启动与 preload_app 设置直接冲突的应用程序。
可能只是想要太多:) 有人对解决方案有任何想法吗?我看到一些尝试通过多处理获取锁定文件,但结果你得到了一个锁定文件/工作者。
【问题讨论】:
-
如果你对
preload_app的问题只是在开发过程中,你能不能不只使用一个工人,而只在生产中切换到多个工人? -
试过了,但我已经设置了它,以便 API 调用 API 并锁定,因为当前进程在仅使用一名工作人员调用 API 时被阻止。可能有更好的处理方式,但我正在尝试创建一个为 API 提供支持的库,它可以单独使用,并尽量保持 DRY。
标签: python-3.x gunicorn falconframework