【发布时间】:2018-10-13 03:38:03
【问题描述】:
我在一个 REST 服务中工作,它基本上是一个库的包装器。我正在使用烧瓶和gunicorn。基本上,服务中的每个端点都映射到库中的不同函数。
碰巧一些对库的调用可能需要很长时间才能返回,这使得一旦服务开始接收一些请求,我的服务就会耗尽工作人员。现在我正在使用默认的 gunicorn workers(同步)。
我想使用 gevent worker 来接收更多请求,因为不是每个端点都需要这么长时间来执行。但是库中的函数不使用任何可修补的 gevent 函数,这意味着它不会协同调度到另一个绿色线程。
我的想法是使用线程池或进程池来异步处理对库的调用,然后 gunicorn 生成的每个绿色线程都会休眠,直到进程未完成。这个想法有意义吗?
是否可以将 multiprocessing.Process 与 gevent 一起使用?然后有join方法把控制权交给另一个绿色线程,等进程结束才返回?
【问题讨论】: