2011-11-21 48 views
0

我已经尝试过多种方法,希望看到你们认为是用Python解决这个问题的最佳方法。并行运行一系列函数来回答HTTP请求

基本上,我有一个Web服务,接受提供单个查询条件的请求,并与该条款并行执行一系列计算。这些计算可以被认为是单独的函数调用。

的想法是,只要请求到来时,我调用函数异步,并保持该请求,直到结果开始慢慢渗透。

从我的研究,这似乎是使用图书馆一样gevent是可能是最好的选择,但我仍然不完全熟悉greenlet。此外,它似乎是为了完成我期待的功能类型(对于通过长请求发送给客户端的结果,因为它们变得可用),我需要使用支持这种功能的特殊类型的StreamServer。响应本身就是JSON对象,由前端的JavaScript模块读取,而这些JSON对象将在UI组件被更新时返回给浏览器。

这样做的最佳方法是什么?使用类似gevent的东西是否有意义,或者应该在没有图书馆帮助的情况下使用协同例程来实现?我相信这是过去很多人在过去做过的事情,我想收集一些建议。

非常感谢,如果您想了解更多的细节,请告诉我,我期待听到您的建议!

+0

问题是什么? –

+0

问题是,这样做的最佳方法是什么?使用类似gevent的东西是否有意义,还是应该使用协程来实现,而不需要库的帮助?我相信这是过去很多人在过去做过的事情,我想收集一些建议。 –

回答

0

假设您所说的“计算”不受CPU限制,gevent对于那种事情来说是很棒的。您的要求的处理器也可以是这样的:

def handle_request(request): 
    ... 
    pool = gevent.pool.Group() 
    results = group.map(do_computation, input_data) 
    return results 

如果它们是CPU限制的,不过,你会当它涉及到在单一操作系统CPU密集型任务需要考虑multiprocessing,如Python是一般相当差系统进程。