Django и Celery. Удаление задачи и создание новой

Суть в том, что мне нужно создавать задачу, НО, если эта задача уже была ранее создана, но не успела выполнится, то мы ее отменяем, и создаем заново!

Делал вот так, но existing_task = AsyncResult(task_id) возвращает PENDING даже если такой задачи не существует, из-за этого постоянно все задачи отменяются.

class Post(models.Model):
    """Модель постов"""
    STATES = (
        ('draft', 'Черновик'),
        ('published', 'Опубликовано'),
        ('planned', 'Запланировано')
    )
    state = models.CharField(choices=STATES, default=STATES[0][0])
    channels = models.ManyToManyField('channel.Channel')
    creator = models.ForeignKey('authentication.User', on_delete=models.SET_NULL, null=True)
    publish_date = models.DateTimeField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)



@receiver(post_save, sender=Post)
def schedule_post(sender, instance, **kwargs):
    """Планирование задачи для отправки поста"""
    if instance.state == 'planned':
        task_id = f'post_{instance.id}'
        existing_task = AsyncResult(task_id)

        if existing_task.state == 'PENDING':
            app.control.revoke(task_id, terminate=True)
            print(f'Old task {task_id} revoked and will be recreated.')

        publish_time = instance.publish_date

        if not is_aware(publish_time):
            publish_time = make_aware(publish_time)

        if (publish_time + timedelta(seconds=5)) >= make_aware(datetime.utcnow()):
            send_post.apply_async((instance.id,), eta=publish_time, task_id=task_id)
        else:
            instance.state = 'draft'
            instance.save(update_fields=['state'])

И да, хоть я отменяю задачу выше, а ниже создаю новую, то все равно она отменяется

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