Django async/background для долго выполняющейся задачи

У меня есть приложение django с конечной точкой, которая запускает долго выполняющуюся задачу. Я хочу делать это в фоновом режиме. Я знаю, что могу сделать это с помощью celery или django-q, но сначала я хотел попробовать что-то более простое.

Первое, что я попробовал, был ajax. В коде python я сделал следующее:

cookie = request.META.get('HTTP_COOKIE')
csrf_cookie = request.META.get('CSRF_COOKIE')
host = '{}://{}'.format(request.scheme, request.META['HTTP_HOST'])
data = {...}
resp = requests.post('{}/report/TASKS/Work/ajax/run.json'.format(host),
                     headers={'COOKIE': cookie, 'X-CSRFToken': csrf_cookie, 'referer': host}, data=data)

Вызываемая функция имеет декоратор @login_required, и когда она выполняется, она выполняет аутентификацию как анонимный пользователь, что не удается, поэтому происходит перенаправление на страницу входа. Поток, посылающий запрос, вошел в систему, и я проверил, что все куки корректны. Почему он использует анонимного пользователя? Как я могу заставить его использовать аутентификацию от зарегистрированного пользователя?

Далее я попробовал кое-что другое - вместо использования ajax я вызываю его с помощью multiprocessing.Process. Это не удается, потому что поток не имеет соединения с базой данных.

У кого-нибудь есть мысли о том, как я могу заставить это работать?

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