Асинхронные сообщения в админке
Я создал в админке задачу, которая является затратной и должна выполняться асинхронно. Я бы сделал что-то вроде
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 для отправки двух сообщений:
- when task started (that one is easy)
- when task finished
Django async send notifications