Celery Beat и не работает корректно с Django orm
Я настроил celery и celery beat в Django, и они работают правильно, за исключением одной проблемы,
Когда celery beat забирает мою задачу и передает ее celery worker, мой запрос внутри задачи не имеет результата, но когда я проверяю его сам, результаты есть, ниже приведена моя задача:
@shared_task
def remove_expired_pending_task():
call_command("remove_pending")
and below is the "remove_pending" command handle method:
def handle(self, *args, **options):
try:
aware = pytz.timezone("Asia/Tehran")
min_date = aware.localize(jdatetime.datetime.now() - jdatetime.timedelta(hours=7))
max_date = aware.localize(jdatetime.datetime.now() + jdatetime.timedelta(hours=7))
q = Payment.objects.filter(
is_completed=False,
date__range=(min_date, max_date)
)
c = q.count()
q.delete()
self.stdout.write(
f"{c} pending Payament deleted between\
{min_date.strftime('%Y/%m/%d %H-%M-%S')} | \
{max_date.strftime('%Y/%m/%d %H-%M-%S')}")
except Exception as exc:
self.stderr.write(
f"Exception happend in 'Remove pendings'\n: {exc}")
и в файле celery.py после объявления celery app я добавил следующее:
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(1000.0, remove_expired_pending_task.s(), name='remove_expired_pendings')
Как я уже говорил, celery находит и выполняет задание, но запрос возвращает пустой Queryset, но когда я запускаю:
python manage.py remove_pending
это работает и Qeuryset не пуст и удаляет их успешно. вы знаете почему это происходит? спасибо.