最近有个项目需要连etcd,所以就在代码中实例化了一个etcd的连接对象来调用,然后在实际使用过程中是会有这样一个情况。我这里是直接用的etcd库,启动django的时候还没有创建这个对象,也就是说并没有连接etcd,当代码走到需要连etcd的时候才会创建这个连接对象。这个时候连接etcd的连接是长连接轮询,通过抓包我看到每30setcd会发包给django服务。这样其实并没有问题,但是我寻思着如何才能实现当django启动的时候就建立好对etcd的连接。可以这样在django中所用到的app的__init__.py文件中
#!/usr/bin/env python #_*_ coding:utf-8 _*_ from backend.etcdclient import client print client.machines
这样就会在启动django的时候保持这个连接了,但是会有引申出一个现象。就是启动django是用的gunicorn加多个workers。这样每个worker都会各自维护自己的etcd连接了,这个倒也不是什么问题,到时候看看能不能优化下。
Cloudhu 个人随笔|built by django|
沪ICP备16019452号-1