Open
Description
Hi!
I’m running django-celery-beat 2.6.0 (the app is a Bookwyrm instance)
Following a server move for my app, I discovered that I have regular self.model.MultipleObjectsReturned
exceptions when trying to access my CrontabSchedule
>>> CrontabSchedule.objects.all()
<QuerySet [<CrontabSchedule: 0 4 * * * (m/h/dM/MY/d) UTC>, <CrontabSchedule: 0 4 * * * (m/h/dM/MY/d) UTC>]>
>>> CrontabSchedule.objects.first().periodictask_set.all()
<PeriodicTaskQuerySet [<PeriodicTask: celery.backend_cleanup: 0 4 * * * (m/h/dM/MY/d) UTC>, <PeriodicTask: celery.backend_cleanup: 0 4 * * * (m/h/dM/MY/d) UTC>]>
>>> CrontabSchedule.objects.last().periodictask_set.all()
<PeriodicTaskQuerySet [<PeriodicTask: celery.backend_cleanup: 0 4 * * * (m/h/dM/MY/d) UTC>, <PeriodicTask: celery.backend_cleanup: 0 4 * * * (m/h/dM/MY/d) UTC>]>
If I try to delete it:
>>> CrontabSchedule.objects.last().delete()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 1132, in delete
return collector.delete()
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/deletion.py", line 463, in delete
signals.pre_delete.send(
File "/usr/local/lib/python3.11/site-packages/django/dispatch/dispatcher.py", line 176, in send
return [
^
File "/usr/local/lib/python3.11/site-packages/django/dispatch/dispatcher.py", line 177, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django_celery_beat/models.py", line 394, in changed
cls.update_changed()
File "/usr/local/lib/python3.11/site-packages/django_celery_beat/models.py", line 398, in update_changed
cls.objects.update_or_create(ident=1, defaults={'last_update': now()})
File "/usr/local/lib/python3.11/site-packages/django/db/models/manager.py", line 87, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 949, in update_or_create
obj, created = self.select_for_update().get_or_create(defaults, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 916, in get_or_create
return self.get(**kwargs), False
^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 640, in get
raise self.model.MultipleObjectsReturned(
django_celery_beat.models.PeriodicTasks.MultipleObjectsReturned: get() returned more than one PeriodicTasks -- it returned 2!
The same error is returned when I run >>> CrontabSchedule.objects.last().periodictask_set.last().delete()
.
>>> from django_celery_beat.models import PeriodicTask
>>> PeriodicTask.objects.all()
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 218, in __get__
rel_obj = self.field.get_cached_value(instance)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/mixins.py", line 15, in get_cached_value
return instance._state.fields_cache[cache_name]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'crontab'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 377, in __repr__
return "<%s %r>" % (self.__class__.__name__, data)
^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 588, in __repr__
return "<%s: %s>" % (self.__class__.__name__, self)
^^^^
File "/usr/local/lib/python3.11/site-packages/django_celery_beat/models.py", line 625, in __str__
if self.crontab:
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 236, in __get__
rel_obj = self.get_object(instance)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 199, in get_object
return qs.get(self.field.get_reverse_related_filter(instance))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 640, in get
raise self.model.MultipleObjectsReturned(
django_celery_beat.models.CrontabSchedule.MultipleObjectsReturned: get() returned more than one CrontabSchedule -- it returned 2!
>>> PeriodicTask.objects.last()
<PeriodicTask: check-for-updates: chaque jour>
>>> PeriodicTask.objects.first()
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 218, in __get__
rel_obj = self.field.get_cached_value(instance)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/mixins.py", line 15, in get_cached_value
return instance._state.fields_cache[cache_name]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'crontab'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python3.11/site-packages/django/db/models/base.py", line 588, in __repr__
return "<%s: %s>" % (self.__class__.__name__, self)
^^^^
File "/usr/local/lib/python3.11/site-packages/django_celery_beat/models.py", line 625, in __str__
if self.crontab:
^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 236, in __get__
rel_obj = self.get_object(instance)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/fields/related_descriptors.py", line 199, in get_object
return qs.get(self.field.get_reverse_related_filter(instance))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/django/db/models/query.py", line 640, in get
raise self.model.MultipleObjectsReturned(
django_celery_beat.models.CrontabSchedule.MultipleObjectsReturned: get() returned more than one CrontabSchedule -- it returned 2!
How serious do you think this error is?
How would I go fixing it?
Thanks!
Metadata
Metadata
Assignees
Labels
No labels