Back to all reviewers

API polling optimization

home-assistant/core
Based on 3 comments
Python

Optimize API polling patterns to avoid excessive calls and improve performance. Use appropriate update intervals based on data freshness requirements rather than aggressive polling schedules.

API Python

Reviewer Prompt

Optimize API polling patterns to avoid excessive calls and improve performance. Use appropriate update intervals based on data freshness requirements rather than aggressive polling schedules.

Key principles:

  • Avoid unnecessarily frequent polling intervals (e.g., 5-second intervals for device status)
  • Implement coordinators to centralize API data management and prevent overlapping calls
  • Consider on-demand updates instead of scheduled polling when appropriate
  • Group related API calls to minimize total requests

Example of problematic polling:

super().__init__(
    hass,
    _LOGGER,
    name=DOMAIN,
    update_interval=timedelta(seconds=5),  # Too frequent!
)

Better approach using coordinator with reasonable intervals:

class DeviceDataCoordinator(DataUpdateCoordinator):
    def __init__(self, hass: HomeAssistant, api: DeviceAPI):
        super().__init__(
            hass,
            _LOGGER,
            name="device_coordinator",
            update_interval=timedelta(minutes=15),  # More reasonable
        )
        self.api = api

    async def _async_update_data(self):
        # Group multiple API calls together
        return await self.api.get_all_device_data()

This approach reduces API rate limit issues, improves performance, and provides better user experience while future-proofing for additional platforms.

3
Comments Analyzed
Python
Primary Language
API
Category

Source Discussions