[英]proxy for python-mpd2 to reconnect in case of disconnection
我嘗試將python-mpd2用於項目。 但是,大約一分鍾后,連接斷開。
我以較差的python技能嘗試嘗試代理以克服此問題。 目的是在連接斷開時重新連接。
據我所知
import mpd
class MPDProxy:
def __init__(self, host="localhost", port=6600, timeout=10):
self.client = MPDClient()
self.host = host
self.port = port
self.client.timeout = timeout
self.establish_connection(host, port)
def establish_connection(self, host, port):
self.client.connect(host, port)
def call(self, function, *args):
try:
return self.client.function(*args)
except mpd.ConnectionError:
self.establish_connection(self.host, self.port)
return self.client.function(*args)
但是,調用方法不起作用。
>>> client = MPDProxy()
>>> client.call(status)
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'status' is not defined
據我了解此錯誤消息,它說:“我不知道沒有一種方法叫做'狀態'”,我對此有所了解。 但是,我還看不到如何解決這個問題。
在一些朋友的幫助下,stackoverflow和一些進一步的閱讀,我可以解決這個問題。 這是代碼
import mpd
class MPDProxy:
def __init__(self, host="localhost", port=6600, timeout=10):
self.client = mpd.MPDClient()
self.host = host
self.port = port
self.client.timeout = timeout
self.connect(host, port)
def __getattr__(self, name):
return self._call_with_reconnect(getattr(self.client, name))
def connect(self, host, port):
self.client.connect(host, port)
def _call_with_reconnect(self, func):
def wrapper(*args, **kwargs):
try:
return func(*args, **kwargs)
except mpd.ConnectionError:
self.connect(self.host, self.port)
return func(*args, **kwargs)
return wrapper
mpd_proxy = MPDProxy()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.