Files
2026-05-11 03:27:21 +03:30

35 lines
999 B
Python

"""
تسک‌های Celery برای واکشی داده‌های هواشناسی.
"""
from config.celery import app
from location_data.models import SoilLocation
from .services import update_weather_for_location, update_weather_for_all_locations
@app.task(bind=True)
def fetch_weather_task(self, location_id: int):
"""
واکشی پیش‌بینی هواشناسی ۷ روزه برای یک location مشخص.
"""
try:
location = SoilLocation.objects.get(pk=location_id)
except SoilLocation.DoesNotExist:
return {
"status": "error",
"error": f"SoilLocation with id={location_id} not found.",
}
return update_weather_for_location(location)
@app.task(bind=True)
def fetch_weather_all_locations_task(self):
"""
واکشی پیش‌بینی هواشناسی برای تمام location‌ها.
مناسب برای Celery Beat (مثلاً هر ۶ ساعت).
"""
return update_weather_for_all_locations()