在实际功能完成之前返回http响应

时间:2010-12-01 19:07:13

标签: django

我的网站上有一个上传文件的表单。目前,我在将响应发送回用户之前将文件上传到亚马逊S3。 Django有没有办法在文件保存到我的本地服务器后立即向用户发送“成功”响应,但在我开始将其保存到s3之前?

3 个答案:

答案 0 :(得分:1)

您应该使用distributed task queue

由于您已经在使用AWS,因此您可能需要考虑其替代方案:Amazon SQS

答案 1 :(得分:1)

我实际上正在做类似的事情,我正在使用python多处理库来处理上传到s3的文件。因此,一旦我收到请求,我就会启动文件处理过程,然后立即将成功响应返回给用户。根据您计划体验的服务器负载量,使用排队系统处理上传到s3的文件可能会更好,但对于一个开始或命中率较低的网站,应该没问题。

答案 2 :(得分:0)

我认为这里最好的做法是将文件(路径,信息)添加到队列中,以便在以后的过程中移动到S3。接受文件,发送成功消息,然后“将其发送到云端”。由cron运行的东西,或其他一些经常出现的“任务队列”类型的情况。

当然,这取决于您正在对文件执行的操作以及更多上下文。