首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django在独立池中多处理多个API

Django在独立池中多处理多个API
EN

Stack Overflow用户
提问于 2021-06-25 20:57:51
回答 1查看 28关注 0票数 0

与我在这里搜索的所有其他类似解决方案相比,我的问题似乎有点复杂。

我在我的views.py中开发了三个不同的函数作为三个不同的API。假设我有16 GB和8核的机器可用。我想为每个API创建三个单独的池,这样Pool-1 (对于API-1)被分配了4个核心(如果可能的话,还有8 GB),Pool-2被分配了2个核心(4 GB),Pool-3被分配了剩余的2个核心(以及剩余的4 GB )。

现在假设用户A请求API-1 (位于Pool-1中)。请求一发出,我就不想等待它完成,只想存储进程id。现在,如果用户B在API-1的几个小时后发出请求,但是Pool-1中的所有4个核心都已经在运行,它将等待任何一个完成,并且基本上进入队列-1(对于Pool-1),即使Pool-2和Pool-3的核心可用。

因此,三个独立的池在同一台机器上管理三个不同的API。下面是我正在尝试实现的views.py的粗略代码。

代码语言:javascript
复制
from multiprocessing import Pool


pool1 = Pool(processes=4)       #defining outside so as to keep the same pool for all users for mulitple requests        
pool2 = Pool(processes=2)              
pool3 = Pool(processes=2)              

def function1(params):
     code goes here...

def function2(params):
     code goes here...

def function3(params):
     code goes here...


@api_view(["POST"])
def api_1(request):
    if request.method == 'POST':
        pool1.map(function1, request.data['params']) 
        #store process id here in a database        
        return HttpResponse("SUCCESS")

@api_view(["POST"])
def api_2(request):
    if request.method == 'POST':
        pool2.map(function2, request.data['params'])
        return HttpResponse("SUCCESS")


@api_view(["POST"])
def api_3(request):
    if request.method == 'POST':
        pool3.map(function3, request.data['params'])
        return HttpResponse("SUCCESS")

这是可以实现的,甚至是建议的吗?如果不是这样,什么是实现它的更好的方法。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

发布于 2021-06-26 02:11:54

这可以通过PBS TorqueOracle Grid EngineSlurm等调度器来完成。您可以创建队列并向这些队列提交作业,并检查作业是否完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68131374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档