我有一个连接到许多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}$
这听起来是Celery的一个很好的用例。在
基本上,您将在
tasks.py
文件中创建一个Celery任务,然后用taskname.delay()
调用它。它将把任务分派给一个芹菜工人,如果这个工人准备好接受另一个任务,就开始处理它。这是an example from the docs。在默认情况下,Celery将创建一个工作进程,该工作进程的并发性等于计算机中的核心数量according to the documentation。如果需要,你可以改变。在
或者,您可以使用Queues。Here's这可能是另一个例子。在
相关问题 更多 >
编程相关推荐