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:
- Asünkroonsus: Ülesanded saadetakse järjekorda ja täidetakse taustatöötlusprotsesside poolt, mitte blokeerides põhivoogu.
- Jagamine: Celery saab töötada mitme töötajaga erinevatel masinatel, jaotades koormust.
- Usaldusväärsus: Tagab ülesannete kohaletoimetamise ja täitmise isegi rikete korral.
- Jälgimine: Pakub tööriistu ülesannete ja töötajate oleku jälgimiseks.
- 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.