Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Cache синглтоном? Можно же было просто создавать его инстанс и передавать его MemcacheProtocol. В реальности это упрощает связи в программе. Да и потом, представьте, что вам потребуется заменить Cache на обычный dict. Сейчас это очень сложно, а с инстансом можно обойтись сабклассом: class DictCache(dict): ...Cache hard-coded в MemcacheProtocol. А хотелось бы видеть нечто подобное:
class MemcacheProtocol(LineOnlyReceiver):
cache = Cache
# либо
class MemcacheProtocol(LineOnlyReceiver):
def __init__(self, cache, ...):
pass
weakref есть WeakKeyDictionary. Когда потребовалось использовать свой конструктор для создания слабых связей, пришлось переписать полностью весь класс. А хотелось бы так:
class MyWeakDict(WeakKeyDictionary):
weakref_factory = MyWeakref
Клиентская библиотека используя ключ данных вычисляет хэш и использует его для выбора соответствующего сервера. Ситуация сбоя сервера трактуется как промах кэша, что позволяет повышать отказоустойчивость комплекса за счет наращивания количества memcached серверов и возможности производить их горячую замену.
MemCache protocol: connect to a memcached server to store/retrieve values.
Twisted в действии — memcache на python