asyncio پر مبنی API ہے۔ ایک سرور سے جڑ کر کلید حاصل کرتا ہے اور فوراً واپس کر دیتا ہے۔
broker = TicketBroker.connect("127.0.0.1:5225")
try:
await broker.wait_ready(5)
ticket = await broker.acquire("key", wait=5, lease=30)
await ticket.release()
print("pass")
finally:
broker.close()متعدد asyncio ٹاسکس اکاؤنٹ کے حساب سے لاک کے ذریعے باہمی اخراج کرتے ہوئے جمع/نکاسی دہرائیں تو بھی بیلنس ہمیشہ ابتدائی قدر پر واپس آتا ہے، اس کی تصدیق کرنے والی مثال ہے۔ async with ticket استعمال کرنے پر بلاک سے نکلتے وقت خودکار طور پر واپسی ہو جاتی ہے۔
async def transaction(broker: TicketBroker, account: int, delta: int) -> None:
key = f"account-{account}"
try:
ticket = await broker.acquire(key, WAIT, LEASE)
except Exception as e:
log.error("account %s acquire failed: %s", account, e)
return
async with ticket:
before = BALANCES[account]
await asyncio.sleep(0)
after = before + delta
BALANCES[account] = after
action, sign = ("withdraw", "-") if delta < 0 else ("deposit", "+")
log.info("account %s %s %s$%s -> $%s", account, action, sign, AMOUNT, after)مکمل مثال test_example.py، test_bank.py، test_bench.py میں ملاحظہ کریں۔