تعارف
آئیے ایک سادہ کلید/ویلیو اسٹور کی مثال دیکھیں، جیسے کہ میم کیچ۔ اسے آسانی سے ڈیزائن کیا گیا ہے: ڈیٹا کو ہیش میپ ڈھانچے میں میموری میں محفوظ کیا جاتا ہے۔ اس تک رسائی TCP ساکٹ کے ذریعے ہوتی ہے۔ ازگر میں، ایک ہیش میپ ایک باقاعدہ ڈکٹ ہے۔ ہم رسائی کے لیے 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
