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

问题描述 投票:0回答:1

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

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

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

我也知道一些Web服务器会不定期地随机清除内存,然后重新启动托管的应用程序。 nginx/uwsgi可以做到吗,我在哪里可以了解规则?

如果有更好的方法可以解决所有问题,我也将就如何设计所有这些问题提供建议。请注意,我不为此考虑使用任何持久性存储-这不值得付出努力,并且由于硬件限制,甚至可能无法实现。

仅作澄清:当我在谈论一个数据实例时,我想到的是app.py恰好执行一次,并在服务器生存期间一直在其中定义实例。

nginx flask uwsgi
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.