0Pricing
AI Agents · Ders

Eşzamansız İş Akışları ve Arka Plan İşleri

Uzun süre çalışan aracılar kuyruklara (Celery, RQ, Temporal) ihtiyaç duyar; bir iş kimliği döndürün ve durumu yoklayın.

Eşzamansız İş Akışları ve Arka Plan İşleri, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Bu dersin bazı bölümleri henüz çevrilmemiş olup İngilizce olarak gösterilmektedir.

İstek Döngüsü Çok Yavaş Olduğunda

Bazı aracı görevleri 30 saniye, 5 dakika veya saatler sürer. HTTP bağlantısını açık tutamazsınız. Bunları eşzamansız arka plan işlerine taşıyın.

Kalıp

  1. İstemci görevi POST ile gönderir -> sunucu işi oluşturur ve job_id döndürür
  2. Çalışan işi bir kuyruktan alır
  3. İstemci durum için GET /jobs/{id} yoklaması yapar
  4. İş tamamlandığında sunucu sonucu döndürür

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')
    }

Çalışan

Ayrı bir süreç kuyruğu tüketir:

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)})

Kuyruk Seçenekleri

  • RQ (Redis Queue) — minimalist Python
  • Celery — klasik Python seçeneği, birçok özellik
  • Temporal — kalıcı iş akışları, yeniden denemeler, gözlemlenebilirlik
  • Dramatiq — Celery alternatifi
  • Bulut yerel — Cloud Tasks, SQS, Pub/Sub

Kalıcı İş Akışları için Temporal

Aracı iş akışları durum bilgisi taşır. Temporal'ın kalıcı yürütme modeli bu yapı için oldukça uygundur:

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)

Kısmi Güncellemeleri Akışla İletme

Uzun süren işler ilerleme güncellemelerinden yararlanır. Server-Sent Events veya WebSockets kullanın:

@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')

İş Yaşam Süreleri

İş kayıtlarını sonsuza kadar saklamayın:

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

Yeniden Denemeler

Geçici hatalar otomatik olarak yeniden denenir; kalıcı hatalar insan incelemesi için bir DLQ'ya gönderilir:

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'))

Eşzamanlılık Sınırları

GPU/API maliyetlerini denetlemek için eşzamanlı çalışanları sınırlayın:

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

# Or per-queue concurrency in Temporal worker config.

Kullanıcı Başına Kotalar

Kullanıcı başına devam eden işleri izleyin:

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

Gözlemlenebilirlik

Her işi uçtan uca izleyin. Aralıkları job_id ve user_id ile etiketleyin. Başarısız işler otomatik olarak bir destek kaydı veya uyarı oluşturmalıdır.

Durum Yoklama Kalıbı

Uzun süren aracılar için gönderim/durum yoklama kalıbı neden kullanılır?

Özet

İşi POST ile gönderin, kimliği döndürün, çalışan kuyruktan işlesin, istemci yoklama yapsın. Basit işler için RQ/Celery; durum bilgisi taşıyan iş akışları için Temporal kullanın. Yaşam süreleri, yeniden denemeler, kotalar ve izler ekleyin.

Sıkça Sorulan Sorular

“Eşzamansız İş Akışları ve Arka Plan İşleri” dersi ücretsiz mi?

Evet — “Eşzamansız İş Akışları ve Arka Plan İşleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Eşzamansız İş Akışları ve Arka Plan İşleri” dersinde ne öğreneceğim?

Uzun süre çalışan aracılar kuyruklara (Celery, RQ, Temporal) ihtiyaç duyar; bir iş kimliği döndürün ve durumu yoklayın. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Eşzamansız İş Akışları ve Arka Plan İşleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Aracıları API Arkasında Sunma
  2. Eşzamansız İş Akışları ve Arka Plan İşleri
  3. Hız Sınırlama ve Kota Yönetimi
  4. Aracılar için Mavi-Yeşil ve Kanarya Dağıtımları
← AI Agents Sayfasına Dön