-
Notifications
You must be signed in to change notification settings - Fork 95
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
如何实现监听配置变化了? #14
Comments
是啊,现在只能重启获取新的配置值,无法动态获取?怎么弄?求解 |
client = ApolloClient('test-app', config_server_url='http://ip:port', timeout=120)
client.start() 允许 start() 之后就可以自动动态获取了 |
如何获取动态配置呢? |
自动获取的,配置中心修改后,你再次调用 client.get_value('kename');就会获取到新的数据。 |
那不就是等于再手动执行一次吗?那这个监听有什么意义? |
会自动更新到你本地缓存。一个变量你赋值后,肯定不会变得,你用的地方需要使用 clien.get_value('key')这样的方式来使用 |
本地缓存在哪?意思是说我还得再写一个监听缓存?当缓存变化时,获取缓存的值?我只是想测试一下用print()打印出来而已 |
本地缓存在内存里面。如果只是为了测试,你可以在python console上来测试,在修改配置前后分别调用 client.get_value('key') |
我只是想知道到底是我理解错误了还是怎样?它这个“同步配置”的功能体现在哪?比如我在apollo更新了配置,难道我还得跑在服务器上再去调用一下,那怎么称得上是自动呢? |
程序运行的时候可以实时获取最新的配置信息,不就是自动同步配置信息了。可能理解上有差异。 |
我的理解是,这个客户端起了一个监听,当apollo的配置变化时,按照apollo的机制,客户端会去拉配置到本地服务器,然后更新配置信息,现在这个更新动作我是直接print()打印出来以验证它是否有实时更新配置,我是这么理解的。但现在的情况是,我在apollo更新了配置后,没有print出新的内容,我需要重启这个客户端,它就能打印出新的配置内容,现在的情况就是我需要手动重启,或者像您所说,我是否要自己再多写一个监控什么状态变化,然后重启这个客户端来获取新配置信息打印出来,那这样的话,我还不如直接调用接口还方便呢?这个客户端的优势体现在哪? |
这个客户端只会实时更新自己的内存数据,你要print,那你就得改监听那一部分的代码。而且是有logger记录是否更新。 |
优势就是,你觉得从内存读取数据耗时少,还是通过http直接请求耗时少呢。 |
我还是明天把源码看看先吧,感觉跟预期不一致,也可能是README中写的自动跟我理解中的自动有差异 |
@zhukangfeng 可能是演示的demo代码不合理,@luojieio 想看到的是当在apollo中发布新的配置后,能在客户端实时反映出配置的变更,不管是发布还是回滚,都能在客户端实时反映变动,而不是还得重新启动客户端 |
请问下你有解决办法了吗?我也碰到跟你一样的问题,以为在配置中心修改配置后客户端服务里的配置就自动更新了,但实际上他不会自动拉取最新配置,必须重启服务才能获取到最新配置,这就很尴尬,因为跟修改本地配置再重启服务没啥区别了,那配置中心的意义在哪里... |
你们需要的是,变动配置后,apollo服务端会主动推送一个请求来更新配置? |
其实客户端是支持热更新的,但如果把配置保存在一个变量里,变量值不会每次自动更新,所以导致无法获取最新的配置。
|
https://github.com/chunlaiqingke/apyllo 我来做维护,新增了监听 |
No description provided.
The text was updated successfully, but these errors were encountered: