共计 511 个字符,预计需要花费 2 分钟才能阅读完成。
起因
应用 nameko 的时候,想看看 nameko 的连贯复用原理(指的是和 rabbitmq 的 amqp 网络连接的复用)
个别连贯复用有两种计划:
- TLS(Thread Local Storage)
- 连接池
第一种计划,实现最简略,然而有局限性。比方应用线程池的状况下才有用,比方应用协程、或者无复用的线程就不适合了
第二种计划,连接池是最通用的计划,但也是最麻烦的计划。
那 nameko 应用的是哪种计划呢?答案是:连接池
好了,既然咱们曾经晓得了这个事实,在深刻这个事实之前,先来理解一下 kombu 的连接池机制吧!
kombu 的连接池
from kombu import Connection
def eqhash(o):
"""Call ``obj.__eqhash__``."""
try:
return o.__eqhash__()
except AttributeError:
return hash(o)
amqp_uri = 'amqp://pon:[email protected]:5672//'
conn1 = Connection(amqp_uri)
conn2 = Connection(amqp_uri)
assert eqhash(conn1) == eqhash(conn2)
正文完