āĻā§āĻŽāĻŋāĻāĻž
āĻāĻ¸ā§āĻ¨ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§/āĻŽāĻžāĻ¨ āĻ¸āĻā§āĻāĻ¯āĻŧā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§āĻāĻŋ, āĻ¯ā§āĻŽāĻ¨ āĻŽā§āĻŽāĻā§āĻ¯āĻžāĻļāĨ¤ āĻāĻāĻŋ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ - āĻĄā§āĻāĻž āĻŽā§āĻŽāĻ°āĻŋāĻ¤ā§, āĻšā§āĻ¯āĻžāĻļāĻŽā§āĻ¯āĻžāĻĒ āĻāĻžāĻ āĻžāĻŽā§āĻ¤ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻā§āĻ˛āĻŋ āĻāĻŋāĻ¸āĻŋāĻĒāĻŋ āĻ¸āĻā§āĻā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒāĻžāĻāĻĨāĻ¨ā§, āĻšā§āĻ¯āĻžāĻļāĻŽā§āĻ¯āĻžāĻĒ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻĄāĻŋāĻā§āĻāĨ¤ āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž zeromq āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦāĨ¤
āĻ¸āĻŽāĻ¨ā§āĻŦāĻ¯āĻŧ
āĻĄā§āĻŦāĻŋāĻ¯āĻŧāĻžāĻ¨/āĻāĻŦā§āĻ¨ā§āĻā§āĻ¤ā§ āĻāĻ āĻĒā§āĻ¯āĻžāĻā§āĻāĻāĻŋ āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§, āĻļā§āĻ§ā§ āĻāĻ¨āĻ¸ā§āĻ˛ā§ āĻĒā§āĻ°āĻŦā§āĻļ āĻāĻ°ā§āĻ¨
sudo apt-get install libzmq-dev
sudo pip install zmq
āĻā§āĻĄ
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ āĻ˛āĻŋāĻā§āĻ¨:
āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ zmq āĻ¸āĻā§āĻā§āĻ° āĻ§āĻ°āĻ¨ āĻšāĻ˛ REQ (āĻ
āĻ¨ā§āĻ°ā§āĻ§, āĻ
āĻ¨ā§āĻ°ā§āĻ§), āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ
āĻ¨ā§āĻ°ā§āĻ§ āĻĒāĻžāĻ āĻžāĻ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻŋāĨ¤
āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§ āĻ¯ā§āĻā§āĻ¨ā§ āĻ§āĻ°āĻ¨ā§āĻ° āĻĄā§āĻāĻž āĻ¸āĻā§āĻāĻ¯āĻŧ āĻ āĻĒā§āĻ°ā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĒāĻŋāĻāĻ˛ āĻŽāĻĄāĻŋāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋāĨ¤ āĻāĻžāĻ "āĻĒā§āĻ°āĻā§āĻāĻ˛" āĻ¤āĻŋāĻ¨āĻāĻŋ āĻŽāĻžāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻāĻŋāĻĒāĻ˛: (āĻāĻŽāĻžāĻ¨ā§āĻĄ, āĻā§, āĻĄā§āĻāĻž)
import zmq
import pickle
class SuperCacher:
def __init__(self):
context = zmq.Context()
self.socket = context.socket(zmq.REQ)
self.socket.connect('tcp://127.0.0.1:43000')
def get(self, key):
self.socket.send(pickle.dumps(('get', key, None)))
return pickle.loads(self.socket.recv())
def set(self, key, data):
self.socket.send(pickle.dumps(('set', key, data)))
return self.socket.recv() == b'ok'
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ°
āĻā§āĻ¯āĻžāĻļā§ = āĻ¸ā§āĻĒāĻžāĻ° āĻā§āĻ¯āĻžāĻāĻžāĻ°()
cache.set('āĻā§', 'āĻŽāĻžāĻ¨')
cache.get('āĻā§')
āĻšā§āĻŽāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž/āĻĒā§āĻ°ā§āĻ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻ¯ā§āĻ āĻāĻ°ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻāĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¨āĻŋāĻā§āĻ āĻ˛āĻŋāĻāĻŋāĨ¤
āĻāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻā§āĻ REP(REPly, āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ - āĻāĻŽāĻ°āĻž āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ
āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻāĻŋ, āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻžāĻ āĻžāĻā§āĻāĻŋāĨ¤ āĻāĻŽāĻ°āĻž āĻ
āĻ¨ā§āĻ°ā§āĻ§āĻāĻŋ āĻĒāĻžāĻ°ā§āĻ¸ āĻāĻ°āĻŋ āĻāĻŦāĻ āĻ˛ā§āĻāĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ 'āĻ āĻŋāĻ āĻāĻā§' āĻĻāĻŋāĻ¯āĻŧā§, āĻŦāĻž āĻĄā§āĻāĻžāĻ° āĻ¸āĻžāĻĨā§ / āĻĒāĻĄāĻŧāĻžāĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻā§āĻ¨āĻāĻŋāĻ āĻ¨āĻ¯āĻŧāĨ¤
import pickle
import json
import zmq
def run_daemon():
memory = {}
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind('tcp://127.0.0.1:43000')
while True:
try:
command, key, data = pickle.loads(socket.recv())
if command == 'set':
memory[key] = data
socket.send(b'ok')
elif command == 'get':
result = memory.get(key, None)
socket.send(pickle.dumps(result))
except Exception as e:
print(e)
if __name__ == '__main__':
run_daemon()
āĻ¸āĻŦāĻāĻŋāĻā§ āĻāĻāĻ¸āĻžāĻĨā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻļā§āĻ°ā§ āĻāĻ°āĻŋ
python daemon.py
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻā§āĻ¯āĻžāĻŦā§, āĻāĻ¨ā§āĻāĻžāĻ°ā§āĻā§āĻāĻŋāĻ āĻŽā§āĻĄā§ āĻĒāĻžāĻāĻĨāĻ¨ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨āĨ¤
>>> from lib import SuperCacher
>>> cache=SuperCacher()
>>> cache.set('key', 'value')
True
>>> cache.get('key')
'value'
āĻāĻš āĻ
āĻ˛ā§āĻāĻŋāĻ, āĻāĻāĻž āĻāĻžāĻ āĻāĻ°ā§! āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻā§āĻŦāĻ¨āĻŦā§āĻ¤ā§āĻ¤āĻžāĻ¨ā§āĻ¤ā§ āĻ˛āĻŋāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ "zmq āĻĒā§āĻ°ā§āĻā§āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§-āĻā§āĻ¯āĻžāĻ˛ā§ āĻ¸ā§āĻā§āĻ°ā§āĻā§āĻ° āĻŦāĻŋāĻāĻžāĻļ"
āĻāĻ¤ā§āĻ¸: www.habr.com