update celery schedule and readme

This commit is contained in:
qananasikq
2026-04-08 23:46:13 +03:00
parent 9f703696d8
commit 437aedad45
5 changed files with 18 additions and 7 deletions

View File

@@ -61,3 +61,4 @@ CELERY_TASK_SOFT_TIME_LIMIT=600
CELERY_TASK_TIME_LIMIT=900 CELERY_TASK_TIME_LIMIT=900
CELERY_WORKER_CONCURRENCY=1 CELERY_WORKER_CONCURRENCY=1
CELERY_BEAT_SYNC_INTERVAL_MINUTES=60 CELERY_BEAT_SYNC_INTERVAL_MINUTES=60
CELERY_BEAT_SYNC_LIMIT=26

View File

@@ -23,6 +23,8 @@ docker compose up -d
Поднимутся 5 контейнеров: postgres, redis, api, worker, beat. API на `http://localhost:8000`. Поднимутся 5 контейнеров: postgres, redis, api, worker, beat. API на `http://localhost:8000`.
По умолчанию `beat` запускает сбор листинга **раз в 1 час** и обрабатывает **до 26 машин за запуск** (`CELERY_BEAT_SYNC_INTERVAL_MINUTES=60`, `CELERY_BEAT_SYNC_LIMIT=26`).
Swagger-документация: `http://localhost:8000/docs` Swagger-документация: `http://localhost:8000/docs`
## API ## API

View File

@@ -37,7 +37,10 @@ def start_sync_vehicle(
persistence: PersistenceService = Depends(get_persistence), persistence: PersistenceService = Depends(get_persistence),
): ):
"""Запустить задачу скрапинга одного автомобиля через Celery.""" """Запустить задачу скрапинга одного автомобиля через Celery."""
result = sync_vehicle_task.delay(body.vehicle_url, lane=body.lane) result = sync_vehicle_task.apply_async(
kwargs={"vehicle_url": body.vehicle_url, "lane": body.lane},
queue="scraping",
)
# Регистрируем задачу в БД. # Регистрируем задачу в БД.
persistence.create_scrape_task( persistence.create_scrape_task(
@@ -59,12 +62,15 @@ def start_sync_listing(
persistence: PersistenceService = Depends(get_persistence), persistence: PersistenceService = Depends(get_persistence),
): ):
"""Запустить задачу полного цикла листинга через Celery.""" """Запустить задачу полного цикла листинга через Celery."""
result = sync_listing_task.delay( result = sync_listing_task.apply_async(
make=body.make, kwargs={
model=body.model, "make": body.make,
lane=body.lane, "model": body.model,
limit=body.limit, "lane": body.lane,
only_new=body.only_new, "limit": body.limit,
"only_new": body.only_new,
},
queue="scraping",
) )
persistence.create_scrape_task( persistence.create_scrape_task(

View File

@@ -91,6 +91,7 @@ class CeleryConfig:
task_time_limit: int = int(os.getenv("CELERY_TASK_TIME_LIMIT", "900")) task_time_limit: int = int(os.getenv("CELERY_TASK_TIME_LIMIT", "900"))
worker_concurrency: int = int(os.getenv("CELERY_WORKER_CONCURRENCY", "1")) worker_concurrency: int = int(os.getenv("CELERY_WORKER_CONCURRENCY", "1"))
beat_sync_interval_minutes: int = int(os.getenv("CELERY_BEAT_SYNC_INTERVAL_MINUTES", "60")) beat_sync_interval_minutes: int = int(os.getenv("CELERY_BEAT_SYNC_INTERVAL_MINUTES", "60"))
beat_sync_limit: int = int(os.getenv("CELERY_BEAT_SYNC_LIMIT", "26"))
@dataclass(slots=True) @dataclass(slots=True)

View File

@@ -45,6 +45,7 @@ celery_app.conf.update(
"task": "iaai_scraper.worker.tasks.sync_listing_task", "task": "iaai_scraper.worker.tasks.sync_listing_task",
"schedule": settings.celery.beat_sync_interval_minutes * 60.0, "schedule": settings.celery.beat_sync_interval_minutes * 60.0,
"args": (), "args": (),
"kwargs": {"limit": settings.celery.beat_sync_limit},
"options": {"queue": "scraping"}, "options": {"queue": "scraping"},
}, },
}, },