""" تسک‌های 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()