我有一个Python类,名为Brish。这个类需要时间来初始化,并且可以像brish.z("QUERY HERE")一样回答查询。我想为我的本地机器创建一个微服务,它使用REST HTTP API接受查询,并使用工作池的负载平衡(固定容量为4个Brish实例)来回答这些查询。我希望这些工作者是多进程的,这样他们就可以充分利用可用的CPU核心。我应该使用什么库/设计模式?
我曾经使用过Scala的Akka,并且我熟悉演员模型。我看过multiprocessing.Pool、Ray、Pykka和aioprocessing,但在我花了大约2个小时查看他们的文档后,我仍然不知道他们中的哪一个是我需要的工具。
PS: REST HTTP API可以替换为我可以从bash轻松使用的任何API。
发布于 2020-07-26 20:58:08
发布于 2020-07-26 22:45:34
我自己找到了答案,尽管我不知道它有多复杂。
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}https://stackoverflow.com/questions/63100388
复制相似问题