37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
"""
|
|
Custom Celery Beat scheduler to fix Python 3.12 zoneinfo compatibility issue.
|
|
This patches the _default_now method to work with zoneinfo.ZoneInfo instead of pytz.
|
|
"""
|
|
from django_celery_beat.schedulers import DatabaseScheduler, ModelEntry
|
|
|
|
|
|
class PatchedModelEntry(ModelEntry):
|
|
"""
|
|
Custom model entry that fixes the zoneinfo.ZoneInfo compatibility issue.
|
|
"""
|
|
|
|
def _default_now(self):
|
|
"""
|
|
Return the current time in the configured timezone.
|
|
This fixes the AttributeError: 'zoneinfo.ZoneInfo' object has no attribute 'localize'
|
|
"""
|
|
from django.utils import timezone
|
|
return timezone.now()
|
|
|
|
|
|
class PatchedDatabaseScheduler(DatabaseScheduler):
|
|
"""
|
|
Custom scheduler that fixes the zoneinfo.ZoneInfo compatibility issue
|
|
in django-celery-beat 2.1.0 with Python 3.12.
|
|
"""
|
|
|
|
Entry = PatchedModelEntry
|
|
|
|
def _default_now(self):
|
|
"""
|
|
Return the current time in the configured timezone.
|
|
This fixes the AttributeError: 'zoneinfo.ZoneInfo' object has no attribute 'localize'
|
|
"""
|
|
from django.utils import timezone
|
|
return timezone.now()
|