У меня есть форма на моем сайте, которая загружает файл. В настоящее время я загружаю файл на amazon S3 перед отправкой ответа пользователю. Есть ли способ в Django отправить ответ «Успех» пользователю сразу после сохранения файла на моем локальном сервере, но прежде чем я начну сохранять его на s3?Вернуть ответ http до завершения фактической функции
ответ
Вы должны использовать distributed task queue.
Поскольку вы используете AWS уже, вы можете рассмотреть их альтернативу: Amazon SQS.
Я считаю, что лучшей практикой здесь было бы добавить файл (путь, информация) в очередь, для перехода на S3 в более позднем процессе. Примите файл, отправьте сообщение об успешном завершении и «отправьте его в облако» позже. Что-то работает cron, или какая-то другая регулярно встречающаяся ситуация типа «задача».
Это, конечно же, зависит от того, что вы делаете с файлом, и в каком-то другом контексте.
Я на самом деле делаю что-то подобное, для этого я использую библиотеку многопроцессорности python для обработки загрузки файла на s3. Поэтому, как только я получаю запрос, я запускаю процесс обработки файлов, а затем мгновенно возвращаю ответ успеха пользователю. В зависимости от того, сколько нагрузки на сервер вы планируете испытать, может быть лучше, если вы будете обрабатывать загрузку файла на s3 с помощью системы очередей, но для запуска сайта или с низкими ударами это должно быть хорошо.
- 1. вернуть ответ от php до ajax до завершения скрипта
- 2. Как вернуть ответ Http?
- 3. Как вернуть ответ после завершения асинхронного вызова?
- 4. Как вернуть HttpResponse до завершения скрипта?
- 5. XQuery: вернуть что-то до завершения запроса
- 6. Ожидание до завершения функции массива:
- 7. Javascript ждать до функции завершения
- 8. Пауза до завершения работы функции
- 9. Обратный ответ до http-on-study-response
- 10. Выполнение функции после завершения функции до
- 11. Akka-Http: Как вернуть ответ от актера?
- 12. Служба WCF. Как вернуть ответ HTTP 500
- 13. Функция Nodejs возвращается до завершения внутренней функции
- 14. Как сделать HTTP-запрос узла приостановить выполнение до завершения
- 15. Асинхронный HTTP-ответ проходит через несколько секунд после завершения запроса
- 16. вернуть ответ от «void» к другой функции
- 17. как вернуть ответ ajax в функции
- 18. Может ли новый оператор вернуть до завершения строительства?
- 19. Вызов фактической функции от размытия()
- 20. Weblogic server: почему ответ отправлен до завершения записи
- 21. Реакция на HTTP-ответ до ответа завершена?
- 22. Как остановить viewWillAppear от завершения до завершения функции
- 23. Node.js - Nock и nedb - ответ выполняется до завершения обратного вызова
- 24. Отключить ввод ключа до завершения функции
- 25. Bootstrap Popover скрыт до завершения функции javascript
- 26. форма отправляется до завершения функции onsubmit
- 27. Предотвращение выполнения скрипта до завершения функции
- 28. Swift: заблокировать весь код до завершения функции
- 29. Предотвращение выполнения функции jQuery до завершения текущего
- 30. Вызов функции и не перемещение до завершения?
Я чувствую, что это будет грязный хак. Я могу представить только одно решение, которое будет делать именно то, что вы хотите. Вы можете отправить результат по частям. Конечно, вы не можете просто вернуть часть html, потому что сокет будет закрыт после него, поэтому вам нужно будет писать непосредственно в сокет, когда вам это нужно. Этот метод называется «длинный опрос», но я не могу об этом говорить без сервера «торнадо». Извините, если мой текст запутан, я не знаком с английским. – werehuman 2010-12-01 19:26:17