python میں zmq کے ساتھ کام کرنے کی بنیادی باتیں، ایک سادہ کلید/ویلیو اسٹور بنانا

تعارف

آئیے ایک سادہ کلید/ویلیو سٹوریج کی مثال دیکھیں، جیسے کہ memcache۔ اسے آسانی سے ڈیزائن کیا گیا ہے - ڈیٹا کو میموری میں، ہیش میپ ڈھانچے میں محفوظ کیا جاتا ہے۔ ان تک رسائی ٹی سی پی ساکٹ کے ذریعے کی جاتی ہے۔ Python میں، hashmap ایک باقاعدہ ڈکٹ ہے۔ رسائی کے لیے ہم zeromq استعمال کریں گے۔

ایڈجسٹمنٹ

اس پیکیج کو debian/ubuntu میں انسٹال کرنے کے لیے، صرف کنسول میں داخل ہوں۔
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'
استعمال کریں

کیشے = سپر کیچر ()
cache.set('key', 'value')
cache.get('key')

ہوم ورک کے طور پر، کلاس کی مثال بناتے وقت ایڈریس/پورٹ کی وضاحت کرنے کی صلاحیت شامل کرکے عمل درآمد کو بہتر بنائیں۔

اب سرور خود لکھتے ہیں۔
اس بار ساکٹ REP(REPly, response) استعمال کیا گیا ہے - ہم درخواست کا انتظار کر رہے ہیں، جواب بھیج رہے ہیں۔ ہم درخواست کو پارس کرتے ہیں اور لکھنے کے معاملے میں یا تو 'ٹھیک' کے ساتھ جواب دیتے ہیں، یا پڑھنے کے معاملے میں ڈیٹا / کوئی نہیں کے ساتھ۔

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

اگلے ٹیب میں، python کو انٹرایکٹو موڈ میں لانچ کریں۔

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

اوہ معجزہ، یہ کام کرتا ہے! اب آپ محفوظ طریقے سے اپنے ریزیومے میں "zmq پروٹوکول کا استعمال کرتے ہوئے کلیدی قدر اسٹوریج کی ترقی" لکھ سکتے ہیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں