Connection和ProducerPools的官方文档只能说是很low。让我们从代码中找出原理。fromkombu.poolsimportconnectionsfromkombuimportConnectionuri='amqp://guest:guest@192.168.178.100:5672//'connection=Connection(uri)withconnections[connection].acquire(block=True)asconn:断言conn==connection首先这个东西不是一个安全的站点-packages/kombu/pools.pyclassConnections(PoolGroup):"""Collectionofconnectionpools."""defcreate(self,connection,limit):returnconnection.Pool(limit=limit)connections=register_group(Connections(limit=use_global_limit))site-packages/kombu/pools.pydefregister_group(group):"""注册组(可用作装饰器)。"""_groups.append(group)returngroupsite-packages/kombu/pools.pyclassPoolGroup(EqualityDict):"""资源池集合。"""def__init__(self,limit=None,close_after_fork=True):self.极限=极限self.close_after_fork=close_after_fork如果self.close_after_fork和register_after_fork不是None:register_after_fork(self,_after_fork_cleanup_group)defcreate(self,resource,limit):raiseNotImplementedError('PoolGroupsmustdefine``create``')def__missing__(self,resource):limit=self.limit如果limit是use_global_limit:limit=get_limit()k=self[resource]=self.create(resource,limit)returnksite-packages/kombu/utils/collections.pyclassEqualityDict(dict):"""Dict使用eq运算符进行键控。"""def__getitem__(self,key):h=eqhash(key)ifhnotinself:returnself.__missing__(key)returnsuper().__getitem__(h)def__setitem__(self,key,value):返回super().__setitem__(eqhash(key),value)def__delitem__(self,key):returnsuper().__delitem__(eqhash(key))
