Асинхронные сообщения в админке

Я создал в админке задачу, которая является затратной и должна выполняться асинхронно. Я бы сделал что-то вроде

def costly_task(**kwargs):
    def do_task(id):
        ## do stuff, you know, that is costly
        task = ThreadTask.objects.get(pk = id)
        task.is_done = True
        task.save()
        task = ThreadTask()
    
    task.save()
    t = threading.Thread(target = do_task, args = [task.id])
    t.setDaemon(True)
    t.start()   
    return {"id": task.id}

С таблицей models.py:

class ThreadTask(models.Model):
    task = models.CharField(max_length = 30, blank = True, null = True)
    is_done = models.BooleanField(blank = False, default = False)

Это работает хорошо, но я хочу информировать администратора о запущенной задаче, а также о том, когда она будет завершена. Существует очень старый (несовместимый с django 4.0) пакет django-async-messages, который использует обычный пакет django-messages для асинхронного использования. Я погуглил, но не нашел ничего более нового... есть идеи, как это сделать? Могу ли я использовать асинхронные процессы djangos для отправки двух сообщений:

  1. when task started (that one is easy)
  2. when task finished

Django async send notifications

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