Завершение (отмена) задачи Celery в пуле эвентов

Я переключил пул префорков на eventlet. В моем случае метод завершения не работает и выдает такую ошибку:

django.db.utils.DatabaseError: Объекты DatabaseWrapper, созданные в потоке, могут быть использованы только в этом же потоке. Объект с псевдонимом 'default' был создан в потоке с идентификатором 139661231139648, а это поток с идентификатором 139661089517376.

Использование django-db в качестве бэкенда результатов. Метод завершения:

 def terminate(self):
    """
    Terminate a service with bot_code
    """

    task_name = f"{self.bot_code}_instance"
    try:
        task = PeriodicTask.objects.get(name=task_name)
        task.enabled = False
        task.save()

        celery_task_id = TaskController.get_celery_task_id_by(search_field="task_name",
                                                              search_value=task.task, status="STARTED")
        if celery_task_id:
            current_app.control.revoke(celery_task_id, terminate=True)

        return Response({'message': 'Task terminated successfully.'}, status=status.HTTP_200_OK)
    except PeriodicTask.DoesNotExist:
        return Response({'error': 'Task does not exist.'}, status=status.HTTP_404_NOT_FOUND)
Вернуться на верх