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 не пуст и удаляет их успешно. вы знаете почему это происходит? спасибо.

Вернуться на верх