Basics of working with zmq in python, partum simplex clavis/value store

introduction

Inspiciamus exemplum repositionis simplicis clavis/pretii, ut memcache. Simpliciter ordinatur - notitia in memoria reponitur, in structura hashmap. Accessed per nervum tcp. In Pythone hashmap regulare dictum est. Pro accessu utemur zeromq.

tionibus

Ad sarcinam hanc installare in debian/ubuntu, in consolatorium intra
sudo apt-get install libzmq-dev
sudo pip install zmq

Code

Classem scribemus ad operandum cum servo nostro:
Genus nervi zmq adhibitum est REQ (REQest, petitio), petitionem mittimus et responsionem exspectamus.
Condere ac transmittere quodlibet genus notitiarum super retiaculis, mensura muria moduli utimur. Opus "protocollum" est tuplum trium valorum: (mandatum, clavis, notitia)

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'
usum

cache = SuperCacher()
cache.set('key', 'value')
cache.get ('clavem')

Sicut Duis congue, exsequendam exsequendam amplio facultatem addendo ad electronicam/portum specificandi cum exempli gratia genus creandi.

Nunc ipsum scribemus.
Hoc tempore nervus REP (Responsio, responsio) adhibetur - exspectamus petitionem mittens responsionem. Parse petitioni respondemus vel "ok" in scribendo, vel cum data / Nihil in casu legendi.

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()

Ut simul omnia probemus, servo cum mandato incipimus
python daemon.py

In altera tab, python in modo interactive deduc.

>>> from lib import SuperCacher
>>> cache=SuperCacher()
>>> cache.set('key', 'value')
True
>>> cache.get('key')
'value'

O miraculum, opera! Nunc tuto scribere potes in repositione "protocollo zmq protocollo" evolutionis clavis-pretii repositionis utentis"

Source: www.habr.com

Add a comment