เดเดฎเตเดเด
เดฎเตเดเดเดพเดทเต เดชเตเดฒเตเดฏเตเดณเตเดณ เดเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เดเต/เดฎเตเดฒเตเดฏ เดธเดเดญเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต เดเดฐเต เดเดฆเดพเดนเดฐเดฃเด เดจเตเดเตเดเดพเด. เดเดคเต เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดฐเตเดชเดเตฝเดชเตเดชเดจ เดเตเดฏเตโเดคเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต - เดกเดพเดฑเตเดฑ เดฎเตเดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ, เดเดฐเต เดนเดพเดทเตโเดฎเดพเดชเตเดชเต เดเดเดจเดฏเดฟเตฝ เดธเดเดญเดฐเดฟเดเตเดเดฟเดฐเดฟเดเตเดเตเดจเตเดจเต. เดเดฐเต เดเดฟเดธเดฟเดชเดฟ เดธเตเดเตเดเดฑเตเดฑเต เดตเดดเดฟเดฏเดพเดฃเต เด
เดต เดเดเตเดธเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต. เดชเตเดคเตเดคเดฃเดฟเตฝ, เดนเดพเดทเตเดฎเดพเดชเตเดชเต เดเดฐเต เดธเตเดฅเดฟเดฐเด เดเดเตเดฏเดพเดจเดฎเดพเดฃเต. เดชเตเดฐเดตเตเดถเดจเดคเตเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ 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'
เดเดชเดฏเตเดเดฟเดเตเดเตเด
เดเดพเดทเต = SuperCacher()
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