工作线程/队列在上传后处理数据集?

时间:2012-08-31 04:52:54

标签: django uwsgi worker spooler

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

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

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

无论如何,实现类似工作线程的最佳实践是什么,它们不会阻止uwsgi的Web工作者,所以我可以在后台可靠地处理数据,同时仍然可以访问Django的数据库/模型?我应该使用线程吗?

1 个答案:

答案 0 :(得分:1)

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

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

最后,不要直接使用假脱机程序的低级api,而是依赖装饰器:

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