Sobes.tech
Middle

Mis on Celery projekti olemus?

sobes.tech AI

Vastus AI-lt

Celery on asünkroonne tööjärjestus Pythonile. See võimaldab täita pikaajalisi või ressursimahukaid operatsioone rakenduse põhivoost väljaspool, parandades seeläbi selle reageerimisvõimet ja skaleeritavust.

Projekti põhieesmärk on järgmine:

  1. Asünkroonsus: Ülesanded saadetakse järjekorda ja täidetakse taustatöötlusprotsesside poolt, mitte blokeerides põhivoogu.
  2. Jagamine: Celery saab töötada mitme töötajaga erinevatel masinatel, jaotades koormust.
  3. Usaldusväärsus: Tagab ülesannete kohaletoimetamise ja täitmise isegi rikete korral.
  4. Jälgimine: Pakub tööriistu ülesannete ja töötajate oleku jälgimiseks.
  5. Planeerimine: Võimaldab täita ülesandeid ajastatult (näiteks kasutades beat-i).

Celery põhikomponendid:

  • Sõnumite vahendaja (Message Broker): Võtab vastu ülesandeid rakendusest ja edastab need töötajatele. Populaarsed vahendajad: Redis, RabbitMQ.
  • Töötajad (Workers): Protsessid, mis võtavad ülesandeid vahendajalt ja täidavad need.
  • Celery rakendus (Celery Application): Konfigureerib Celery, määratleb ülesandeid ja ühendub vahendajaga.

Näide lihtsa ülesande loomise ja kasutamise kohta:

// tasks.py
from celery import Celery

# Celery rakenduse initsialiseerimine
app = Celery('my_app', broker='redis://localhost:6379/0')

@app.task
def add(x, y):
    // Lihtne ülesanne - kahe numbri liitmine
    return x + y
// main.py
from tasks import add

// Ülesande saatmine järjekorda
result = add.delay(4, 5)

print(f"Ülesanne saadetud. Identifikaator: {result.id}")
// Täitmise tulemust saab hiljem saada, kuid see on blokeeriv operatsioon
print(f"Tulemus: {result.get()}")

Seega aitab Celery toime tulla ülesannetega, mis võivad aeglustada veebirakendust või teist teenust, täites need taustal, parandades seeläbi jõudlust ja kasutajakogemust.