How to restart celery beat container or resolve KeyError(b'entries')?

40 Views Asked by At

My ecs fargate celery beat container is running well during some hours after deployment.

But some times later, error raised like below

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/shelve.py", line 111, in __getitem__
    value = self.cache[key]
KeyError: 'entries'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/celery/apps/beat.py", line 105, in start_scheduler
    service.start()
  File "/usr/local/lib/python3.9/site-packages/celery/beat.py", line 645, in start
    interval = self.scheduler.tick()
  File "/usr/local/lib/python3.9/site-packages/celery/beat.py", line 341, in tick
    not self.schedules_equal(self.old_schedulers, self.schedule)):
  File "/usr/local/lib/python3.9/site-packages/celery/beat.py", line 593, in get_schedule
    return self._store['entries']
  File "/usr/local/lib/python3.9/shelve.py", line 113, in __getitem__
    f = BytesIO(self.dict[key.encode(self.keyencoding)])
KeyError: b'entries'

I thought supervisord to autorestart but my flask container and celerybeat container is separated. So it's difficult to use supervisor.

Are there way to auto restart ecs container? or how to solve KeyError: b'entries'?

I doubted celerybeat-schedule file for scheduler db. But each ecs deployment new celerybeat-schedule is created. So it is not matter I think.

Help me. Thank you.

0

There are 0 best solutions below