我正在用Django编写一个Web应用程序,用户可以用统计数据上传文件。工作线程/队列在上传后处理数据集?
数据在正确使用前需要处理(每个数据集在处理完成前可能需要几分钟的时间)。我的想法是为此使用python线程,并将数据处理卸载到单独的线程中。
但是,由于我使用的是uwsgi,因此我已阅读了一个名为“Spoolers”的功能。关于这方面的文档相当短,但我认为这可能是我正在寻找的。不幸的是,uwsgi的-Q
选项需要一个目录,这使我感到困惑。
无论如何,实现类似工作线程的最佳实践不妨碍uwsgi的web工作人员,以便我可以在后台可靠地处理数据,同时仍然可以访问Django的数据库/模型?我应该使用线程吗?
现在我不得不为所有(完成和未完成的)数据集数据库记录,每他们使用“状态”字段,因此我可以随时向用户提供反馈。我会写什么文件到这些文件?每个要处理的数据集的UUID或主键?假脱机程序代码在哪里运行(在哪个进程中)?我可以从那里访问任何东西,比如models/db,还是有任何限制? – BastiBen
假脱机程序可能被视为“无关联”的工作人员。它是一名工作人员,但无法在套接字上接收请求。所以,后台处理程序可以访问所有的django内部。另一个解决方案(更通用)是使用mules,它们是一个更为prymitive的实现,允许您直接与数据库进行交互(不需要在spooler目录中保存任务)http://projects.unbit.it/uwsgi/wiki/Mules – roberto
Looks像骡子是我正在寻找的东西。谢谢! – BastiBen