AI एजेंट · पाठ

असिंक्रोनस वर्कफ़्लो और बैकग्राउंड जॉब

लंबे समय तक चलने वाले एजेंटों को कतारों (Celery, RQ, Temporal) की आवश्यकता होती है—जॉब आईडी लौटाएँ और स्थिति के लिए पूछते रहें।

पाठ 2, कुल 4 में से15 चरण

असिंक्रोनस वर्कफ़्लो और बैकग्राउंड जॉब, CoddyKit पर AI एजेंट का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह AI एजेंट सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। AI एजेंट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

इस पाठ के कुछ हिस्सों का अभी तक अनुवाद नहीं हुआ है और वे अंग्रेज़ी में दिखाए गए हैं।

जब Request Cycle बहुत धीमा हो

कुछ agent कार्यों में 30 सेकंड, 5 मिनट या कई घंटे लगते हैं। आप HTTP connection खुला नहीं रख सकते। उन्हें async background jobs में भेज दीजिए।

पैटर्न

  1. Client task को POST करता है -> server job बनाकर job_id लौटाता है
  2. Worker queue से job उठाता है
  3. Client status के लिए GET /jobs/{id} को बार-बार पूछता है
  4. काम पूरा होने पर server परिणाम लौटाता है

Submit Endpoint

from uuid import uuid4

@app.post('/jobs')
def submit(req: AgentRequest):
    job_id = str(uuid4())
    redis.hset(f'job:{job_id}', mapping={'status': 'queued', 'user_id': req.user_id})
    queue.enqueue('run_agent_job', job_id, req.query)
    return {'job_id': job_id, 'status': 'queued'}

Status Endpoint

@app.get('/jobs/{job_id}')
def status(job_id: str):
    data = redis.hgetall(f'job:{job_id}')
    if not data:
        raise HTTPException(404)
    return {
        'status': data['status'],
        'result': data.get('result'),
        'error': data.get('error')
    }

Worker

एक अलग process queue से कार्य लेता है:

def run_agent_job(job_id, query):
    redis.hset(f'job:{job_id}', 'status', 'running')
    try:
        result = run_agent(query)
        redis.hset(f'job:{job_id}', mapping={'status': 'done', 'result': result})
    except Exception as e:
        redis.hset(f'job:{job_id}', mapping={'status': 'failed', 'error': str(e)})

Queue के विकल्प

  • RQ (Redis Queue) — न्यूनतम Python समाधान
  • Celery — पारंपरिक Python विकल्प, अनेक सुविधाओं के साथ
  • Temporal — टिकाऊ workflows, retries और observability
  • Dramatiq — Celery का विकल्प
  • Cloud-native — Cloud Tasks, SQS, Pub/Sub

टिकाऊ Workflows के लिए Temporal

Agent workflows में State बनी रहती है। Temporal का durable execution model इनके लिए बहुत उपयुक्त है:

import temporalio

@temporalio.workflow.defn
class AgentWorkflow:
    @temporalio.workflow.run
    async def run(self, query: str) -> str:
        plan = await workflow.execute_activity(plan_step, query, schedule_to_close_timeout=timedelta(minutes=2))
        results = await workflow.execute_activity(execute_step, plan, schedule_to_close_timeout=timedelta(minutes=10))
        return await workflow.execute_activity(synthesise_step, results)

आंशिक अपडेट का Streaming

लंबे समय तक चलने वाली jobs को progress updates से लाभ मिलता है। Server-Sent Events या WebSockets का उपयोग कीजिए:

@app.get('/jobs/{job_id}/stream')
def stream_progress(job_id):
    def gen():
        while True:
            update = redis.brpop(f'updates:{job_id}', timeout=30)
            if not update:
                yield 'data: {"status": "timeout"}\n\n'
                break
            yield f'data: {update[1].decode()}\n\n'
            if 'done' in update[1].decode():
                break
    return StreamingResponse(gen(), media_type='text/event-stream')

Job TTLs

Job records को हमेशा के लिए न रखें:

redis.expire(f'job:{job_id}', 86400)   # 1 day

Retries

अस्थायी failures अपने-आप retry होते हैं; स्थायी failures मानव समीक्षा के लिए DLQ में भेजे जाते हैं:

import time

def retry(retries=3, retry_backoff=True):
    def decorator(func):
        def wrapper(*args, **kwargs):
            for attempt in range(1, retries + 1):
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    print(f'attempt {attempt} failed: {e}')
                    if attempt == retries:
                        raise
            return None
        return wrapper
    return decorator

attempts = {'n': 0}

@retry(retries=3, retry_backoff=True)
def run_agent_job(job_id):
    attempts['n'] += 1
    if attempts['n'] < 3:
        raise RuntimeError('transient error')
    return f'job {job_id} done'

print(run_agent_job('job-1'))

Concurrency सीमाएँ

GPU/API की लागत नियंत्रित करने के लिए concurrent workers की संख्या limit कीजिए:

rq worker --burst --max-jobs 1000 --queue agent

# Or per-queue concurrency in Temporal worker config.

प्रति-User Quotas

प्रत्येक User के लिए चल रही jobs का हिसाब रखें:

key = f'inflight:{user_id}'
if redis.scard(key) >= 5:
    raise HTTPException(429, 'Too many in-flight jobs')
redis.sadd(key, job_id)

Observability

हर job को शुरू से अंत तक trace कीजिए। Spans में job_id और user_id के tags लगाइए। Failed jobs से अपने-आप ticket या alert बनना चाहिए।

Status Polling पैटर्न

लंबे समय तक चलने वाले agents के लिए submit/status-polling पैटर्न का उपयोग क्यों करें?

पुनरावलोकन

Job को POST कीजिए, id लौटाइए, worker उसे queue से process करता है और client polling करता है। सरल कार्यों के लिए RQ/Celery; stateful workflows के लिए Temporal। TTLs, retries, quotas और traces का उपयोग कीजिए।

शुरुआत निःशुल्क

एआई शिक्षक के साथ AI एजेंट सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
60
पाठ
239

अक्सर पूछे जाने वाले प्रश्न

क्या “असिंक्रोनस वर्कफ़्लो और बैकग्राउंड जॉब” पाठ निःशुल्क है?

हाँ—“असिंक्रोनस वर्कफ़्लो और बैकग्राउंड जॉब” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और AI एजेंट पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। AI एजेंट पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“असिंक्रोनस वर्कफ़्लो और बैकग्राउंड जॉब” में मैं क्या सीखूँगा?

लंबे समय तक चलने वाले एजेंटों को कतारों (Celery, RQ, Temporal) की आवश्यकता होती है—जॉब आईडी लौटाएँ और स्थिति के लिए पूछते रहें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ AI एजेंट का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या AI एजेंट शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर AI एजेंट शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“असिंक्रोनस वर्कफ़्लो और बैकग्राउंड जॉब” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस AI एजेंट पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर AI एजेंट पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. एपीआई के पीछे एजेंट उपलब्ध कराना
  2. असिंक्रोनस वर्कफ़्लो और बैकग्राउंड जॉब
  3. दर सीमित करना और कोटा प्रबंधन
  4. एजेंटों के लिए ब्लू-ग्रीन और कैनरी परिनियोजन
← AI एजेंट पर वापस जाएँ