0

我已经尝试了各种方法来解决这个问题,并想看看你们认为用 Python 解决这个问题的最佳方法是什么。

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

这个想法是,一旦请求进来,我就异步调用函数,并保持请求直到结果开始流入。

根据我的研究,似乎使用像gevent这样的库可能是最好的方法,尽管我仍然不完全熟悉 greenlets。此外,似乎为了完成我正在寻找的功能类型(当结果可用时通过长请求将结果发送回客户端),我需要使用支持此功能的特殊类型的 StreamServer。响应本身只是 JSON 对象,前端的 JavaScript 模块将读取这些对象,当这些被发送回浏览器时,它反过来会更新 UI 组件。

这样做的最佳方法是什么?使用 gevent 之类的东西是否有意义,或者是否应该在没有库帮助的情况下使用协同程序来实现?我敢肯定,这里的很多人过去都做过很多事情,我想收集一些建议。

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

4

1 回答 1

0

假设您所说的“计算”不受 CPU 限制,gevent那么这种事情会很棒。您的请求处理程序可能如下所示:

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

但是,如果它们受 CPU 限制,则需要考虑multiprocessing,因为 Python 在单个操作系统进程中的受 CPU 限制的任务方面通常很差。

于 2012-06-12T06:53:32.787 回答