memcached server down, pylibmc 来handle error
来源:互联网 发布:java接口的方法 编辑:程序博客网 时间:2024/05/22 12:05
使用pylibmc 来连接memcached server , 如果在使用的过程中server down , 运维可能重启memcached server , 重启之后我们的程序可以自动的重新连接server.
下面是我写的一个class 来handle 这种情况:
class MemcachedClientPro(object):
def __init__(self, host=None, port=None):
self.host, self.port = host, port
self.version = pylibmc.__version__
hosts = None
if not isinstance(host, types.ListType):
hosts = [host]
else:
hosts = host
servers = []
for host in hosts:
server = '%s:%s' % (host if host else '127.0.0.1',
port if port else '11211')
servers.append(server)
behaviors = {}
if self.version >= '1.3':
# pylibmc 1.3.0 version can handle failover
behaviors = {
'tcp_nodelay': True, 'ketama': True, 'remove_failed': 1,
'retry_timeout': 1, 'dead_timeout': 60
}
else:
behaviors = {
'tcp_nodelay': True, 'ketama': True
}
self.mc = pylibmc.Client(servers, binary=True, behaviors=behaviors)
def _reConn(self):
host, port = self.host, self.port
hosts = None
if not isinstance(host, types.ListType):
hosts = [host]
else:
hosts = host
servers = []
for host in hosts:
server = '%s:%s' % (host if host else '127.0.0.1',
port if port else '11211')
servers.append(server)
behaviors = {}
if self.version >= '1.3':
# pylibmc 1.3.0 version can handle failover
behaviors = {
'tcp_nodelay': True, 'ketama': True, 'remove_failed': 1,
'retry_timeout': 1, 'dead_timeout': 60
}
else:
behaviors = {
'tcp_nodelay': True, 'ketama': True
}
self.mc = pylibmc.Client(servers, binary=True, behaviors=behaviors)
def MemSet(self, k, v, t=0):
try:
self.mc.set(k, v, t)
except pylibmc.Error:
self._reConn()
pass
def MemGet(self, k):
try:
return self.mc.get(k)
except pylibmc.Error:
self._reConn()
return None
def MemDel(self, k):
try:
self.mc.delete(k)
except pylibmc.Error:
self._reConn()
pass
def MemMultiSet(self, mapping, t=0):
try:
return self.mc.set_multi(mapping, t)
except pylibmc.Error:
self._reConn()
return mapping.keys()
def MemMultiGet(self, keys):
try:
return self.mc.get_multi(keys)
except pylibmc.Error:
self._reConn()
return {}
def MemFlushAll(self):
try:
self.mc.flush_all()
except pylibmc.Error:
self._reConn()
pass
- memcached server down, pylibmc 来handle error
- 安装 pylibmc(Memcached的python客户端)
- python 安装python-memcached and pylibmc两个模块
- Error Handle
- Error Creating Window Handle
- Handle Error in VBA
- SQL Server 2014 Installation Error - Wait on the Database Engine Recovery Handle Failed
- ycmd server SHUT DOWN
- 关于The connection to adb is down,and a server error has occured
- Error -27791: Server "" has shut down the connection prematurely的一个解决办法
- [转]Error -27791: Server "" has shut down the connection prematurely的一个解决办法
- error:The handle is invalid.
- corc::socket+coro::handle server-echo server
- The connection to adb is down, and a severe error has occured.adb server is out of date. killing...
- Android开发模拟器报错问题解决“The Connection to adb is down,and a server error has occured”
- The connection to adb is down, and a severe error has occured.(解决adb server didn't ACK问题)
- pylibmc 安装过程
- python pylibmc应用
- 交叉编译opencv
- linux下Apache服务器使用入门----httpd.conf
- 五星填数_蓝桥杯
- CSS固定宽度布局
- v$mystat
- memcached server down, pylibmc 来handle error
- Android使用注解避免大量的findViewById()
- SQL命令和常用语句大全
- css属性继承和优先级
- Unity 图标字体
- About css sprites
- Angularjs分页指令
- 实现淘宝商品详情页面的viewPager滑动到最后一张图片跳转的功能
- MyBatis 学习总结(六)——一对多联表查询