Возврат HTTP-ответа до фактического завершения функции - PullRequest
2 голосов
/ 01 декабря 2010

У меня на сайте есть форма для загрузки файла. В настоящее время я загружаю файл в amazon S3 перед отправкой ответа пользователю. Есть ли в Django способ отправить ответ «Успех» пользователю сразу после сохранения файла на моем локальном сервере, но перед тем, как я начну сохранять его в s3?

Ответы [ 3 ]

1 голос
/ 01 декабря 2010

Вы должны использовать распределенную очередь задач .

Поскольку вы уже используете AWS, вы можете рассмотреть их альтернативу: Amazon SQS .

1 голос
/ 01 декабря 2010

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

0 голосов
/ 01 декабря 2010

Я полагаю, что наилучшей практикой здесь будет добавление файла (путь, информация) в очередь для перехода к S3 в более позднем процессе.Примите файл, отправьте сообщение об успехе и «отправьте его в облако» позже.Что-то, запускаемое cron, или какая-то другая, регулярно возникающая ситуация типа «очередь задач».

Это, конечно, зависит от того, что именно вы делаете с файлом, и от некоторого другого контекста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...