首页  >   经验  >   uwsgi多进程缓存问题解决办法探讨

uwsgi多进程缓存问题解决办法探讨

codexia 2019-04-18 13:46:27 261 会员文章,禁止转载
uwsgi   多进程   缓存  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介在开发过程中发现过一种现象,当uwsgi开启了多进程之后,会出现一个数据更新后,然后反复刷新页面或接口结果会反复变化,而变化的内容则是更新之前和更新之后两种,甚至有多种。
感谢 阿里云 对本站(本站由阿里云高性能服务器搭建)的赞助支持,本站推荐 →高性能云服务器2折起优惠由此进←↓
高性能云服务器2折起
秒后广告自动消失...会员无广告。点击可关闭广告。

    在开发过程中发现过一种现象,当uwsgi开启了多进程之后,会出现一个数据更新后,然后反复刷新页面或接口结果会反复变化,而变化的内容则是更新之前和更新之后两种,甚至有多种。

    也就是说,一个进程操作之后,改变了数据,所以此进程返回的结果的数据更新了,而其他进程因为没有更新数据,所以返回的是旧数据。当重启了uwsgi后,所有返回结果就一致了。

    为什么呢?疑问点来了:
1.uwsgi开启的多进程和代码有关系吗?
2.一个进程更新了数据,其他进程为什么不更新呢?
3.为什么结果会反复变化呢?
4.为什么重启uwsgi后,所有进程的结果又一致了呢?


    下面我们依次来探讨这些问题。

1.uwsgi开启的多进程和代码有关系吗?

    单进程、多进程的工作模式是不一样的。虽然表面上看上去多进程无非是多了几个进程,实则多进程会多出来好多事。好比,一个人吃饭会有条不紊慢慢的吃,优雅而悠闲。如果是多个人吃呢?文明点就是表面和气,却以一个不容易觉察的方式来抢食。不文明的呢,则是直接明抢。当然,为了保持秩序,自然是有规则来规定行为。

    所以,代码就是我们的吃饭这个事情,而单进程和多进程就像是一个人和多个人的区别。人一多,事就多,得管。管就要有规则,那就要有必要的措施。一旦规则被破坏,或者规则有漏洞,还是要出现问题的。所以,多进程和代码是有关系的。

2.一个进程更新了数据,其他进程为什么不更新呢?

    在操作系统里,一个进程就是一间房。进程间是隔离的,每个进程有进程自己的东西,所以每一个进程一般是独立的。所以,一个进程更新了数据,不代表其他进程也要更新。具体的还要看进程内部是如何实现的。也就是说,虽然进程是独立的,但是看你的代码有没有做到独立性。

    我们这里说的进程更新了数据,有可能是公共地方的数据。一个进程操作了这个数据,所以这个数据变了,那么其他进程去读取,一般是要最新的数据的。如果发现其他进

开通会员,查看全部
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. uwsgi多进程缓存问题解决办法探讨 查找全网同类文章
  2. uWSGI定时器的使用说明 查找全网同类文章
  3. uWSGI定时器报ImportError: No module named uwsgi解决办法 查找全网同类文章
  4. python实现内存缓存的原理和实现分析 查找全网同类文章
  5. 宇宙最强IDE-VS2017对python支持情况简评 查找全网同类文章
  6. python3.6 lxml标准库lxml的安装及etree的使用注意 查找全网同类文章
  7. python找不到模块No module named和模块的函数的解决办法 查找全网同类文章
  8. python2.7运行错误:无法加载共享库libpython2.7.so.1.0 查找全网同类文章
  9. Centos上安装了Python却还是提示找不到Python.h文件的解决办法 查找全网同类文章
  10. VS2017如何同时支持Python3.6和2.7版本的环境 查找全网同类文章
分享到:
分享文章[uwsgi多进程缓存问题解决办法探讨]到QQ空间

相关阅读

猜您感兴趣