Closed jtzgyw closed 1 year ago
找到原因了, django 使用uwsgi启动时,会有4个进程, 当apollo信息变更时,只有一个进程里的内apollo内存配置变更。 所以, 两个解决方案: 一个是django 单进程运行。 一个是apollo 配置信息由内存保存改为本地保存。
uwsgi 运行时与python脚本执行时表现不一样,建议配置下这两个参数: enable-threads = true lazy-apps = true
这两个参数影响apollo中守护线程的运行.
求demo
问题:
在uwsgi+django项目中接入apollo后发现,使用get_value获取到的数据是项目启动时cache中的数据,不能之后更新的apollo数据。
调试:
1、 在 uncached_http_get 和get_value中分别打印了cache中的值, 在apollo后台修改数据,这时,uncached_http_get 会打印出最近的cache数据, 再调用get_value,发现,cache中值是旧的数据。
2、 直接使用python manage runserver 启动项目,重复1的操作,发现,可以获取到最新的cache数据。
结论:
uwsgi启动项目使 get_vaule中的self 和 uncached_http_get 中的self并非一个对象。
不知道这个算不算bug,还是我uwsgi启的方式不对。如果有人碰到和我一样的问题并解决的朋友,请回复我一下,谢谢!