1

我正在用 Django 编写一个 Web 应用程序,用户可以在其中上传带有统计数据的文件。

数据需要经过处理才能正确使用(每个数据集在处理完成之前可能需要几分钟的时间)。我的想法是为此使用 python 线程并将数据处理卸载到单独的线程中。

但是,由于我使用的是 uwsgi,所以我读到了一个名为“Spoolers”的功能。这方面的文档很短,但我认为这可能是我正在寻找的。不幸的是-Q,uwsgi 的选项需要一个目录,这让我很困惑。

无论如何,实现诸如不阻塞 uwsgi 的网络工作者的工作线程之类的最佳实践是什么,这样我就可以在后台可靠地处理数据,同时仍然可以访问 Django 的数据库/模型?我应该改用线程吗?

4

1 回答 1

1

所有卸载子系统都需要某种“队列”来存储“要做的事情”。

uWSGI Spooler 使用类似打印机的方法,其中目录中的每个文件都是一个任务。当任务完成时,文件被删除。其他系统依赖于更重/更高级的服务器,如 rabbitmq 等。

最后,不要直接使用 spooler 的低级 api 而是依赖装饰器:

http://projects.unbit.it/uwsgi/wiki/Decorators

于 2012-08-31T05:10:33.967 回答