เชชเชฐเชฟเชเชฏ
เชเชพเชฒเซ เชเช เชธเชฐเชณ เชเซ/เชตเซเชฒเซเชฏเซ เชธเซเชเซเชฐเซเชเชจเซเช เชเชฆเชพเชนเชฐเชฃ เชเซเชเช, เชเซเชฎ เชเซ เชฎเซเชฎเชเซเชถ. เชคเซ เชธเชฐเชณ เชฐเซเชคเซ เชกเชฟเชเชพเชเชจ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ - เชกเซเชเชพ เชนเซเชถเชฎเซเชช เชธเซเชเซเชฐเชเซเชเชฐเชฎเชพเช เชฎเซเชฎเชฐเซเชฎเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชฅเชพเชฏ เชเซ. เชคเซเชเชจเซ tcp เชธเซเชเซเช เชฆเซเชตเชพเชฐเชพ เชเชเซเชธเซเชธ เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชชเชพเชฏเชฅเซเชจเชฎเชพเช, เชนเซเชถเชฎเซเชช เช เชจเชฟเชฏเชฎเชฟเชค เชกเชฟเชเซเช เชเซ. เชเชเซเชธเซเชธ เชฎเชพเชเซ เชเชชเชฃเซ 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 = เชธเซเชชเชฐเชเซเชเชฐ()
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