uWSGI 和 Flask:在请求之间将对象保留在内存中



我的堆栈目前uWSGIflasknginx。我需要在请求之间存储数据(基本上我从另一个服务接收有关服务器事件的推送通知,并且我想将这些事件存储在服务器内存中,因此客户端可以每n毫秒查询一次服务器,以接收最新更新(。

由于许多原因,这通常行不通。一个好的部署需要您在生产中uwsgi有多个流程(甚至可能有几台计算机来扩展它(。但我的情况非常具体:我正在为一个硬件构建一个 Web 应用程序(您可以将您的家庭路由器配置页面视为一个很好的例子(。这意味着无需扩展。我也没有数据库(至少不是传统的数据库(,通常可能同时有 1-2 个客户端。

如果我在uwsgi中指定--processes 1 --threads 4,这是否足以确保数据作为单个实例保存在内存中?还是我也需要使用--threads 1

我还知道某些 Web 服务器会不时随机清除内存并重新启动托管应用程序。nginx/uwsgi这样做吗,我在哪里可以阅读有关规则的信息?

如果有更好的方法来解决这个问题,我也欢迎关于如何设计所有这些的建议。请注意,我不考虑为此使用任何持久存储 - 这不值得付出努力,由于硬件限制甚至可能是不可能的。

澄清一下:当我谈论一个数据实例时,我想到的是我的app.py只执行一次,并在服务器存在期间将定义的实例保留在那里。

如果您不需要数据在服务器重新启动后保留,为什么不直接在应用程序中构建一个可以执行pushpop操作的缓存对象呢?

一个简单的对象数组就足够了,一个烧瓶路由将新数据推送到数组,另一个可以将数据从数组中弹出。

最新更新