2013-02-25 146 views
1

我正在使用Django来开发分类器服务,并且用户可以使用API​​来构建模型,如http://localhost/api/buildmodel,但是,因为构建模型需要很长时间,可能需要2个小时,而且我正在使用网页来显示结果建立模型。如何设计我的Django程序以立即返回并在构建完成后执行某些操作以显示结果?也许我可以使用ajax,但我想在Python中实现它,比如使用异步方法并在构建之后调用回调函数,任何建议都将不胜感激。如何处理需要花费很长时间才能运行的请求?

+0

重构代码。 – catherine 2013-02-25 03:22:06

回答

3

您需要使用任务队列管理器。 Celery是迄今为止Django最受欢迎的任务管理器。这个想法是,你给这个经理一个任务,然后它处理任务,一旦完成,它可以触发一个回调函数。在回调函数中,您可以运行逻辑来通知用户任务已完成。

+0

谢谢,我会试试看 – remykits 2013-02-25 03:49:27

0

一种方法是在任务中为持久数据库(或Redis键/值对)创建一行,表明它是否正在运行或完成。让代码将该值设置为在任务启动时运行,并在任务完成时完成。然后有一个AJAX调用对通过Web服务发送任务状态的URL进行GET查找。你可以把它放在setInterval()中来周期性地轮询数据库,看它是否完成。您可以在完成时发送电子邮件,或者只是具有显示正在运行的任务状态的登录页/仪表板。

相关问题