Использование очереди задач в Django без утечек kwargs - PullRequest
0 голосов
/ 21 мая 2019

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

Обратите внимание, что

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

  2. открытый текстовый пароль пользователя является частью аргументов задачи . Так и должно быть, поскольку в расчетах используются операции шифрования, основанные на пароле.

Теперь я бы просто использовал celery и django_celery_results в качестве бэкенда для этой цели (и уже начал его использовать), когда заметил: Whoa ... django_celery_results хранит пароль в виде открытого текста как часть задачи kwargs в базе данных. Это не круто. Кроме того, весь обмен сообщениями RabbitMQ с открытым паролем кажется мне немного небезопасным после прочтения документации по сельдерею . А кто знает в каких журналах сельдерей пишет пароли.

Подводя итог: сельдерей и другие задачи, кажется, не предназначены для обработки разумной информации в качестве аргументов. Мне просто нужно запустить простую параллельную задачу, обновить ее состояние и сохранить результат в базе данных. Я хочу остаться чисто в Python3 и Django. Любые рекомендации?

Edit:

  • Я не хочу использовать для этого javascript. Я хочу использовать проверку формы на стороне сервера и запустить там асинхронную задачу.
  • Применение функций сокращения, хеш-функций или любых других преобразований к паролю пользователя не решает проблему. Что бы я ни поставлял в свою очередь задач, оно должно быть достаточным для выполнения операций шифрования / дешифрования и поэтому очень разумно.
  • Я ищу решение, в котором открытый текст хранится только в памяти
...