设置最大线程数以容纳主线程的更好的解决方案?

2024-10-04 01:34:00 发布

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

我有一个连接到许多serverlet中的一个的web服务器。web服务器最多可以排队40个作业,每个作业需要20分钟或30小时才能运行。在

web服务器使用套接字连接到serverlet,serverlet运行通过线程发送的作业。在

我想对一次可以运行的线程(作业)数量设置一个上限,比如说3,一旦达到这个限制,它就拥有主线程。当其中一个线程结束时,它允许主线程继续并拾取另一个作业。在

# Wait for thread count to reduce before continuing
while threading.active_count() >= self.max_threads:
    pass 

我目前正在使用一个循环让我的主线程等待空闲线程可用。这是可行的,但感觉像是一个快速而肮脏的解决方案。我想知道有没有更好的办法?在

在服务器.py在

^{pr2}$

Tags: to服务器webreducefor数量count作业
1条回答
网友
1楼 · 发布于 2024-10-04 01:34:00

这听起来是Celery的一个很好的用例。在

基本上,您将在tasks.py文件中创建一个Celery任务,然后用taskname.delay()调用它。它将把任务分派给一个芹菜工人,如果这个工人准备好接受另一个任务,就开始处理它。这是an example from the docs。在

默认情况下,Celery将创建一个工作进程,该工作进程的并发性等于计算机中的核心数量according to the documentation。如果需要,你可以改变。在

或者,您可以使用QueuesHere's这可能是另一个例子。在

相关问题 更多 >