我正在使用 Python3.7 为我的项目实现一个简单的负载均衡器。
我使用 aqueue.PriorityQueue
来保存一组预定义的工人。工人在队列中的顺序由他们的每个负载定义,该负载是根据分配给工人的作业数量来评估的。也就是说,有一个jobs
属性是 Job 实例的列表,并且加载是由jobs
.
作业分配的每次迭代,通过检索负载最低(作业数量最少)的工人,queue.get()
分配后,它将put
回到队列中。
这是简化的片段。
import attr
from typing import List
from .job import Job
@attr.s(order=True)
class Worker:
jobs: List[Job] = attr.ib(factory=list, order=False)
@property
def loading(self): # how to make Worker comparable according to this property?
return len(self.jobs)
我知道如果我自己添加那些用于比较的 dunder 方法,即__ne__
、__lt__
、和__le__
,我可以实现这一点。__gt__
__ge__
但我的问题是,是否可以attrs
根据计算属性使一个类具有可比性?如果可能的话,如何做到这一点?