Skip to content

Commit 69a028a

Browse files
committed
fix: SchedulerConfiguration
1 parent 2859d23 commit 69a028a

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

scheduler/settings.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,16 @@ def conf_settings():
3535
_QUEUES[queue_name] = QueueConfiguration(**queue_config)
3636

3737
user_settings = getattr(settings, "SCHEDULER_CONFIG", {})
38-
if isinstance(user_settings, dict):
39-
if "FAKEREDIS" in user_settings:
40-
logger.warning("Configuration using FAKEREDIS is deprecated. Use BROKER='fakeredis' instead")
41-
user_settings["BROKER"] = Broker.FAKEREDIS if user_settings["FAKEREDIS"] else Broker.REDIS
42-
user_settings.pop("FAKEREDIS")
43-
for k in user_settings:
44-
if k not in SCHEDULER_CONFIG.__annotations__:
45-
raise ImproperlyConfigured(f"Unknown setting {k} in SCHEDULER_CONFIG")
46-
setattr(SCHEDULER_CONFIG, k, user_settings[k])
38+
if isinstance(user_settings, SchedulerConfiguration):
39+
return
40+
if "FAKEREDIS" in user_settings:
41+
logger.warning("Configuration using FAKEREDIS is deprecated. Use BROKER='fakeredis' instead")
42+
user_settings["BROKER"] = Broker.FAKEREDIS if user_settings["FAKEREDIS"] else Broker.REDIS
43+
user_settings.pop("FAKEREDIS")
44+
for k in user_settings:
45+
if k not in SCHEDULER_CONFIG.__annotations__:
46+
raise ImproperlyConfigured(f"Unknown setting {k} in SCHEDULER_CONFIG")
47+
setattr(SCHEDULER_CONFIG, k, getattr(user_settings, k, None))
4748

4849

4950
conf_settings()

scheduler/settings_types.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from dataclasses import dataclass
22
from enum import Enum
3-
from typing import Callable, Dict, Optional, List, Tuple, Any, Self, Type
3+
from typing import Callable, Dict, Optional, List, Tuple, Any, Self, Type, Iterator
44

55
from scheduler.timeouts import BaseDeathPenalty, UnixSignalDeathPenalty
66

@@ -36,6 +36,13 @@ class SchedulerConfiguration:
3636
SCHEDULER_FALLBACK_PERIOD_SECS: int = 120 # Period (secs) to wait before requiring to reacquire locks
3737
DEATH_PENALTY_CLASS: Type["BaseDeathPenalty"] = UnixSignalDeathPenalty
3838

39+
def __contains__(self, item: str) -> bool:
40+
return item in self.__annotations__
41+
42+
def __iter__(self) -> Iterator[str]:
43+
for field in self.__annotations__:
44+
yield field
45+
3946

4047
@dataclass(slots=True, frozen=True, kw_only=True)
4148
class QueueConfiguration:

0 commit comments

Comments
 (0)