Exemple #1
0
 def setUp(self):
     self.mc = Client(["127.0.0.1:21211", "127.0.0.1:21212"])
     self.mc_alt = Client(["127.0.0.1:21211", "127.0.0.1:21212"])
     self.compressed_mc = Client(["127.0.0.1:21211", "127.0.0.1:21212"],
                                 comp_threshold=1024)
     self.noreply_mc = Client(["127.0.0.1:21211", "127.0.0.1:21212"],
                              noreply=True)
Exemple #2
0
 def setUp(self):
     self.mc = Client(["127.0.0.1:%d" % (21211 + i) for i in range(10)])
     self.compressed_mc = Client(
         ["127.0.0.1:%d" % (21211 + i) for i in range(10)],
         comp_threshold=1024)
     self.noreply_mc = Client(
         ["127.0.0.1:%d" % (21211 + i) for i in range(10)], noreply=True)
 def setUp(self):
     host = "127.0.0.1"
     port = 21211
     self.prefix = '/prefix'
     self.server_addr = '%s:%d' % (host, port)
     self.prefixed_mc = Client([self.server_addr],
                               comp_threshold=1024,
                               prefix=self.prefix)
     self.mc = Client([self.server_addr], comp_threshold=1024)
Exemple #4
0
 def __init__(self, servers):
     """Initialize memcached.
     @param servers: an array of servers. Servers can be passed in two forms:
         1. Strings of the form host:port (implies a default weight of 1).
         2. Tuples of the form (host:port, weight) (weight as integer)
     """
     if LIBMC:
         self._client = Client(servers, comp_threshold=10240, noreply=True)
     else:
         self._client = Client(servers)
     self.timeout = 0
 def setUp(self):
     host = "127.0.0.1"
     port = 21211
     self.server_addr = '%s:%d' % (host, port)
     self.mc = Client([self.server_addr], comp_threshold=1024)
     if cmemcached is not None:
         self.old_mc = cmemcached.Client([self.server_addr],
                                         comp_threshold=1024)
Exemple #6
0
def main():
    mc = Client(['127.0.0.1:%d' % (21211 + i) for i in range(10)])
    dct = {'test_key_%d' % i: 'i' * 1000 for i in range(10)}
    while True:
        print '%.2f: set_multi: %r' % (time.time(), mc.set_multi(dct))
        print '%.2f: get_multi: %r' % (time.time(), mc.get_multi(dct.keys())
                                       == dct)
        time.sleep(0.5)
        print
Exemple #7
0
def mc_sleeper():
    s = 2
    print 'sleep in C++ for %ds, you can sing infinitely now, singer.' % s
    mc = Client(["127.0.0.1:21211"])
    release_gil = True  # toggle here
    stack.append('mc_sleep_begin')
    mc._sleep(s, release_gil)
    stack.append('mc_sleep_end')
    print 'exit sleep'
Exemple #8
0
    def test_realtime_host_w_failover(self):
        servers = ["127.0.0.1:21211", "127.0.0.1:21212"]
        mc = Client(servers)
        failover_mc = Client(servers, failover=True)
        hosts_visited = set()
        for i in range(1000):
            key = "test:realtime:route:%d" % i
            h1 = mc.get_host_by_key(key)
            h2 = mc.get_realtime_host_by_key(key)
            assert h1 is not None
            assert h1 == h2

            h3 = failover_mc.get_host_by_key(key)
            h4 = failover_mc.get_realtime_host_by_key(key)
            assert h3 == h1
            assert h4 == h1
            hosts_visited.add(h1)
        assert len(hosts_visited) == len(servers)
Exemple #9
0
 def test_md5_router_mass(self):
     with open(os.path.join(RES_DIR, 'server_port.csv')) as fhandler:
         server_list = [':'.join(addr.strip().split(','))
                        for addr in fhandler.readlines()]
     mc = Client(server_list, hash_fn=libmc.MC_HASH_MD5)
     with open(os.path.join(RES_DIR, 'key_pool_idx.csv')) as fhandler:
         for line in fhandler:
             key, idx_ = line.strip().split(',')
             idx = int(idx_)
             assert mc.get_host_by_key(key) == server_list[idx]
Exemple #10
0
    def test_md5_router(self):
        server_list = [
            'localhost', 'myhost:11211', '127.0.0.1:11212', 'myhost:11213'
        ]
        mc = Client(server_list)

        md5_mc = Client(server_list, hash_fn=libmc.MC_HASH_MD5)
        rs = {
            'test:10000': 'localhost:11211',
            'test:20000': '127.0.0.1:11212',
            'test:30000': '127.0.0.1:11212',
            'test:40000': '127.0.0.1:11212',
            'test:50000': '127.0.0.1:11212',
            'test:60000': 'myhost:11213',
            'test:70000': '127.0.0.1:11212',
            'test:80000': '127.0.0.1:11212',
            'test:90000': '127.0.0.1:11212',
        }
        for k in rs:
            self.assertEqual(mc.get_host_by_key(k), rs[k])
            self.assertEqual(md5_mc.get_host_by_key(k), rs[k])

        for addr in server_list:
            ps = addr.split(':')

            if len(ps) == 1:
                hostname = ps[0]
                port = 11211
            else:
                hostname = ps[0]
                port = int(ps[1])

            if port == 11211:
                key = '%s-10' % hostname
            else:
                key = '%s:%s-10' % (hostname, port)

            self.assertEqual(mc.get_host_by_key(key),
                             '%s:%s' % (hostname, port))
            self.assertEqual(md5_mc.get_host_by_key(key),
                             '%s:%s' % (hostname, port))
Exemple #11
0
    def test_none_host(self):
        existed_server = "127.0.0.1:21211"
        not_existed_server = "127.0.0.1:1"
        servers = [existed_server, not_existed_server]
        mc = Client(servers)
        failover_mc = Client(servers, failover=True)

        hosts_visited = set()
        for i in range(1000):
            key = "test:realtime:route:%d" % i
            h1 = mc.get_host_by_key(key)
            h2 = mc.get_realtime_host_by_key(key)
            if h1 == existed_server:
                assert h1 == h2
            elif h1 == not_existed_server:
                assert h2 is None

            h3 = failover_mc.get_host_by_key(key)
            h4 = failover_mc.get_realtime_host_by_key(key)
            assert h3 == h1
            assert h4 == existed_server
            hosts_visited.add(h1)
        assert len(hosts_visited) == len(servers)
 def test_ketama(self):
     mc = Client(
         ['localhost', 'myhost:11211', '127.0.0.1:11212', 'myhost:11213'])
     rs = {
         'test:10000': 'localhost:11211',
         'test:20000': '127.0.0.1:11212',
         'test:30000': '127.0.0.1:11212',
         'test:40000': '127.0.0.1:11212',
         'test:50000': '127.0.0.1:11212',
         'test:60000': 'myhost:11213',
         'test:70000': '127.0.0.1:11212',
         'test:80000': '127.0.0.1:11212',
         'test:90000': '127.0.0.1:11212',
     }
     for k in rs:
         self.assertEqual(mc.get_host_by_key(k), rs[k])
Exemple #13
0
 def test_crc_32_router(self):
     crc_32_mc = Client(
         ['localhost', 'myhost:11211', '127.0.0.1:11212', 'myhost:11213'],
         hash_fn=libmc.MC_HASH_CRC_32)
     rs = {
         'test:10000': '127.0.0.1:11212',
         'test:20000': '127.0.0.1:11212',
         'test:30000': '127.0.0.1:11212',
         'test:40000': 'myhost:11213',
         'test:50000': 'myhost:11211',
         'test:60000': 'localhost:11211',
         'test:70000': 'myhost:11213',
         'test:80000': 'myhost:11211',
         'test:90000': 'localhost:11211'
     }
     for k in rs:
         self.assertEqual(crc_32_mc.get_host_by_key(k), rs[k])
 def test_ketama_with_alias(self):
     mc = Client([
         '192.168.1.211:11211 tango.mc.douban.com',
         '192.168.1.212:11212 uniform.mc.douban.com',
         '192.168.1.211:11212 victor.mc.douban.com',
         '192.168.1.212:11211 whiskey.mc.douban.com',
     ])
     rs = {
         'test:10000': 'whiskey.mc.douban.com',
         'test:20000': 'victor.mc.douban.com',
         'test:30000': 'victor.mc.douban.com',
         'test:40000': 'victor.mc.douban.com',
         'test:50000': 'victor.mc.douban.com',
         'test:60000': 'uniform.mc.douban.com',
         'test:70000': 'tango.mc.douban.com',
         'test:80000': 'victor.mc.douban.com',
         'test:90000': 'victor.mc.douban.com',
     }
     for k in rs:
         self.assertEqual(mc.get_host_by_key(k), rs[k])
Exemple #15
0
# coding=utf-8
from libmc import (Client, MC_HASH_MD5, MC_POLL_TIMEOUT, MC_CONNECT_TIMEOUT,
                   MC_RETRY_TIMEOUT)

mc = Client(
    ['localhost', 'localhost:11212', 'localhost:11213 mc_213'],
    # 分割小于10M的的值
    do_split=True,
    # 所有类型的值编码为字符串
    comp_threshold=0,
    # 更新缓存操作不需要服务端响应,提高操作速度
    noreply=False,
    # 缓存键前缀
    prefix=None,
    # 哈希函数标示
    hash_fn=MC_HASH_MD5,
    # 服务器不可用时,是否做故障转移
    failover=False)

mc.config(MC_POLL_TIMEOUT, 100)
mc.config(MC_CONNECT_TIMEOUT, 300)
mc.config(MC_RETRY_TIMEOUT, 5)
Exemple #16
0
def connectMemCache():
    ip = MONGO_IP + ":11211"
    mc = Client([ip])
    message("MemCache Connected", mssgType='ADMIN')
    return mc
Exemple #17
0
 def test_mc_server_err(self):
     mc = Client(["not_exist_host:11211"])
     mc.get('valid_key')
     assert mc.get_last_error() == MC_RETURN_MC_SERVER_ERR
Exemple #18
0
 def setUp(self):
     self.mc = Client(["127.0.0.1:21211"])
     assert self.mc.version()
     assert self.mc.get_last_error() == MC_RETURN_OK
Exemple #19
0
from libmc import (Client, MC_HASH_MD5, MC_POLL_TIMEOUT, MC_CONNECT_TIMEOUT,
                   MC_RETRY_TIMEOUT)

from app.mc.decorators import create_cache

mc = Client(['localhost'],
            do_split=True,
            comp_threshold=0,
            noreply=False,
            prefix=None,
            hash_fn=MC_HASH_MD5,
            failover=False)

mc.config(MC_CONNECT_TIMEOUT, 300)  # ms
mc.config(MC_POLL_TIMEOUT, 100)
mc.config(MC_RETRY_TIMEOUT, 5)

globals().update(create_cache(mc))
Exemple #20
0
 def __init__(self, server):
     self.server = server
     self.mc = Client([server], do_split=0)