следует исправить? (*)
Подсказка: проблема не в POST/PUT и не в стилистике написания. Данный код часто приводит к неприятным побочным эффектам, которых можно избежать, сделав небольшую доработку.
@transaction.atomic
@api_view(['POST'])
def api_create_investor(request):
investor = Investor.objects.create()
investor_task.delay(investor.id)
time.sleep(0.5) # эмуляция долгой работы метода - сама по себе проблемой не является
return Response({"status": "OK"})
@shared_task
def investor_task(investor_id):
investor = Investor.objects.get(pk=investor_id)
investor.processed = True
investor.save()
Откуда эти задания
Хз, это джанга. Выглядит так как будто investor task потенциально может выполнится вне транзакции
А оно может и не выполниться вообще. Как фиксить - создавать таску при коммите а не внутри транзакции
Обсуждают сегодня