Python:创建一个使用多进程工作池来回答查询的微服务

2024-06-08 06:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python类,名为Brish。这个类需要时间来初始化,并且可以回答查询。我想为我的本地机器创建一个微服务,它接受带有RESTHTTP API的查询,并使用工作池的负载平衡(固定容量为4个Brish实例)来回答这些查询。我希望这些工人是多进程的,这样他们就可以充分利用可用的CPU核心。我应该使用哪些库/设计模式

我曾与Scala的Akka合作,我对演员模型很熟悉。我已经看了multiprocessing.PoolRayPykkaaioprocessing,但是在我花了大约2个小时看了他们的文档之后,我仍然不知道他们中的哪一个是我需要的工具

PS:RESTHTTPAPI可以被我可以从bash轻松使用的任何API所替代


Tags: 实例机器api核心进程时间设计模式cpu
2条回答

您可以使用concurrent.futures,这将允许您创建一个进程池。进程数可以设置为可用的内核数或任意数量

下面是一个令人惊奇的video,它解释了如何使用这个模块

我建议你先看上面的视频,然后读docs

我自己也找到了答案,虽然我不知道这有多糟糕

from typing import Optional

from fastapi import FastAPI, Response
app = FastAPI()


import time
import brish
brishes = [brish.Brish() for i in range(4)]

@app.get("/zsh/")
def cmd_zsh(cmd: str, verbose: Optional[int] = 0):
    while len(brishes) <= 0:
        time.sleep(1)
    myBrish = brishes.pop()
    res = myBrish.z(cmd)
    brishes.append(myBrish)
    if verbose == 0:
        return Response(content=res.outerr, media_type="text/plain")
    else:
        return {"cmd": cmd, "brishes": len(brishes), "out": res.out, "err": res.err, "retcode": res.retcode}

相关问题 更多 >

    热门问题