menuTicketing

Ticketing Python لائبریری

GitHub

ریپوزیٹری

bash

مثال

بنیادی مثال

asyncio پر مبنی API ہے۔ ایک سرور سے جڑ کر کلید حاصل کرتا ہے اور فوراً واپس کر دیتا ہے۔

python
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 استعمال کرنے پر بلاک سے نکلتے وقت خودکار طور پر واپسی ہو جاتی ہے۔

python
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 میں ملاحظہ کریں۔