በpython ውስጥ ከ zmq ጋር የመስራት መሰረታዊ ነገሮች፣ ቀላል የቁልፍ/የዋጋ ማከማቻ መፍጠር

መግቢያ

እንደ ሜምካሼ ያለ ቀላል የቁልፍ/ዋጋ ማከማቻ ምሳሌን እንመልከት። በቀላሉ ተዘጋጅቷል - ውሂቡ በማህደረ ትውስታ ውስጥ, በሃሽማፕ መዋቅር ውስጥ ተከማችቷል. በ tcp ሶኬት በኩል ይደርሳሉ. በፓይዘን ውስጥ፣ hashmap መደበኛ ዲክታ ነው። ለመዳረስ zeromq እንጠቀማለን።

በደንብ ማድረግ

ይህንን ጥቅል በዲቢያን/ኡቡንቱ ለመጫን በቀላሉ ኮንሶሉን ያስገቡ
sudo apt-get install libzmq-dev
sudo pip install zmq

ኮድ

ከአገልጋያችን ጋር ለመስራት ክፍል እንፃፍ፡-
ጥቅም ላይ የዋለው የ zmq ሶኬት አይነት REQ (REQuest, request) ነው, ጥያቄ እንልካለን እና ምላሽ እንጠብቃለን.
በአውታረ መረቡ ላይ ማንኛውንም አይነት ውሂብ ለማከማቸት እና ለማስተላለፍ, መደበኛውን የኮመጠጠ ሞጁል እንጠቀማለን. ሥራው “ፕሮቶኮል” የሦስት እሴቶች ስብስብ ነው፡ (ትእዛዝ፣ ቁልፍ፣ ውሂብ)

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 ፕሮቶኮልን በመጠቀም የቁልፍ እሴት ማከማቻ ልማት” በሪፖርትዎ ውስጥ በደህና መፃፍ ይችላሉ።

ምንጭ: hab.com

አስተያየት ያክሉ