from functools import lru_cache from django.conf import settings from django.utils.module_loading import import_string from .base import SMSProvider @lru_cache(maxsize=1) def get_sms_provider(): provider_class=import_string(settings.SMS_PROVIDER_CLASS) if not issubclass(provider_class,SMSProvider): raise TypeError("SMS_PROVIDER_CLASS باید از SMSProvider ارث‌بری کند.") return provider_class() def reset_sms_provider(): get_sms_provider.cache_clear()