我的堆栈目前uWSGI
,flask
和nginx
。我需要在请求之间存储数据(基本上我从另一个服务接收有关服务器事件的推送通知,并且我想将这些事件存储在服务器内存中,因此客户端可以每n毫秒查询一次服务器,以接收最新更新(。
由于许多原因,这通常行不通。一个好的部署需要您在生产中uwsgi
有多个流程(甚至可能有几台计算机来扩展它(。但我的情况非常具体:我正在为一个硬件构建一个 Web 应用程序(您可以将您的家庭路由器配置页面视为一个很好的例子(。这意味着无需扩展。我也没有数据库(至少不是传统的数据库(,通常可能同时有 1-2 个客户端。
如果我在uwsgi
中指定--processes 1 --threads 4
,这是否足以确保数据作为单个实例保存在内存中?还是我也需要使用--threads 1
?
我还知道某些 Web 服务器会不时随机清除内存并重新启动托管应用程序。nginx/uwsgi
这样做吗,我在哪里可以阅读有关规则的信息?
如果有更好的方法来解决这个问题,我也欢迎关于如何设计所有这些的建议。请注意,我不考虑为此使用任何持久存储 - 这不值得付出努力,由于硬件限制甚至可能是不可能的。
澄清一下:当我谈论一个数据实例时,我想到的是我的app.py
只执行一次,并在服务器存在期间将定义的实例保留在那里。
如果您不需要数据在服务器重新启动后保留,为什么不直接在应用程序中构建一个可以执行push
和pop
操作的缓存对象呢?
一个简单的对象数组就足够了,一个烧瓶路由将新数据推送到数组,另一个可以将数据从数组中弹出。