Django - 一次处理几个文件上传请求?

时间:2017-06-07 11:40:20

标签: python django amazon-s3 uwsgi

我正在开发一个django应用程序,它定期处理来自多个客户端的大量文件上传。每个文件大约1到10兆字节。

由于上传是线程阻塞的,我只能提供相当于uwsgi工作者/进程数量的许多请求(在我的情况下为4)。

我该怎么做才能提高吞吐量?

是否可以增加uwsgi中的进程/工作人员数量?
什么应该是上限?
我可以在这种情况下使用其他解决方案吗?

Stack:django + uwsgi + nginx在亚马逊ec2和s3桶上运行,用于存储zip文件。

2 个答案:

答案 0 :(得分:1)

您需要使用异步任务队列一次上传多个文件。 这些任务可以异步执行(在后台)

我正在使用Celery / Disque来实现这一目标。

了解有关disque here

的信息

您可以通过

完成
pip install django-queued-storage

有关详情,请参阅here

答案 1 :(得分:0)

  

上限应该是多少?

这取决于您的硬件,例如服务器中的核心数量

  

我可以在这种情况下使用其他解决方案吗?

考虑使用Celery / rabbitMQ。 Celery可用于处理异步文件或上传到S3并将事件通知给rabbitMQ