2011-02-18 56 views
0

我有一个网站,有时需要特别长的时间来处理请求(这不是一个缺陷)。 99%的时间非常快,因为它几乎不做任何处理。线程内应用程序与服务器进程

我要显示一个消息,说“加载”时,该网站需要长时间来处理请求。我的网站使用mod_wsgi和Apache。我看到它的方式,我会回应说“正在载入”的处理完成之前,做一两件事情权利之前:

-spawn一个进程(daemon)线程采取处理的照顾。

-communicate通过与其他过程插座,并告诉它照顾处理的(最有可能发送请求http://localhost:8080/do_processing)。

一种方法与另一种方法的优缺点是什么?

回答

0

使用单独的过程更好。正如您在另一个答案中所建议的那样,它不一定非常难,因为您可以使用现有系统来完成如Celery(http://celeryproject.org/)的操作。依赖进程中的线程并不一定是个好主意,除非您要实现自己的内部作业排队系统,以防止线程数量过多。另外,在多进程服务器配置中,不能保证请求返回到同一进程,因此不容易获取正在运行的操作的状态。最后,Web服务器进程可能会被终止,因此您的后台任务也可能会在完成之前被终止。如果这个事件很重要,你需要有一个机制来保持这种事件的状态。更容易使用像芹菜一样的东西。

+0

感谢您的回答。我是你的博客粉丝! :) – primroot 2011-02-18 13:57:57

0

进程路由需要相当多的系统处理。创建一个单独的过程相对昂贵和缓慢。但是,如果您的流程崩溃,它不会影响您的主要管理流程(您将收到退出状态代码并将有机会重新生成新的工作流程)。您还需要某种InterProcessCommunication层(可以是套接字,管道,共享内存等),这会增加项目的复杂性。

线程轻巧便宜。您只需管理对共享资源的并发访问。所以这真的取决于你心中的任务。线程可能更适合实现您的任务。

相关问题