如何让python模块异步运行并接收来自其他模块的调用?

时间:2013-01-30 16:30:59

标签: python django asynchronous process

所以我正在努力为Django项目添加推荐引擎,并且需要为我的一个视图函数做一些繁重的处理(在外部模块中)。这会显着减慢页面加载时间,因为我必须加载一些数据,转换它,根据请求发送的参数执行计算,然后将建议返回到视图。每次加载视图时都必须这样做。

我想知道是否有某种方法可以让推荐模块加载并转换内存中的数据,然后等待从视图发送参数,对这些参数运行计算然后将其发送回视图。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

Celery是一个完全擅长此类事情的任务队列。

它可以让你做类似的事情:

  1. 用户提出查看请求
  2. view启动一个执行繁重任务的异步任务,然后立即返回给用户
  3. 您可以从javascript轮询以查看您的任务是否已完成,并在
  4. 时加载结果

    可能不是你想要的流量,但芹菜绝对值得一试 芹菜也很棒django package,非常容易使用

    重读您的问题,我认为围绕您的推荐引擎创建本地网络服务也是可能的。在启动时,它可以将所有数据加载到内存中,然后您可以从django应用程序向它发出请求吗?