Add connection timeout
This commit is contained in:
parent
4e43ed82fc
commit
79d9fa8a3e
16
__main__.py
16
__main__.py
@ -3,6 +3,7 @@ import time
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
import typer
|
import typer
|
||||||
|
import requests
|
||||||
|
|
||||||
from pyamaha import Device, System, Zone
|
from pyamaha import Device, System, Zone
|
||||||
|
|
||||||
@ -12,11 +13,14 @@ class Error(Exception):
|
|||||||
"""Base class for exceptions in this module."""
|
"""Base class for exceptions in this module."""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class ApiError(Exception):
|
class ApiError(Error):
|
||||||
def __init__(self, request_url, response_code):
|
def __init__(self, request_url, response_code):
|
||||||
self.request = request_url
|
self.request = request_url
|
||||||
self.response_code = response_code
|
self.response_code = response_code
|
||||||
|
|
||||||
|
class ConnectionTimeout(Error):
|
||||||
|
pass
|
||||||
|
|
||||||
class Senario:
|
class Senario:
|
||||||
activate = []
|
activate = []
|
||||||
deactivate = []
|
deactivate = []
|
||||||
@ -57,8 +61,9 @@ class Spotify(Senario):
|
|||||||
|
|
||||||
class Yamaha:
|
class Yamaha:
|
||||||
|
|
||||||
def __init__(self, device: Device, mqtt_client: Client, logger: logging.Logger=None):
|
def __init__(self, ip: str, mqtt_client: Client, logger: logging.Logger=None, timeout=None):
|
||||||
self._device = device
|
self.timeout = timeout if timeout else 10
|
||||||
|
self._device = Device(ip, self.timeout)
|
||||||
self._client = mqtt_client
|
self._client = mqtt_client
|
||||||
|
|
||||||
self.logger = logger
|
self.logger = logger
|
||||||
@ -85,7 +90,10 @@ class Yamaha:
|
|||||||
self.request(action)
|
self.request(action)
|
||||||
|
|
||||||
def request(self, request):
|
def request(self, request):
|
||||||
|
try:
|
||||||
r = self._device.request(request)
|
r = self._device.request(request)
|
||||||
|
except requests.exceptions.ReadTimeout:
|
||||||
|
raise ConnectionTimeout()
|
||||||
r_json = r.json()
|
r_json = r.json()
|
||||||
if r_json['response_code'] != 0:
|
if r_json['response_code'] != 0:
|
||||||
raise ApiResponse(r.url, r_json['response_code'])
|
raise ApiResponse(r.url, r_json['response_code'])
|
||||||
@ -156,7 +164,7 @@ def main(\
|
|||||||
|
|
||||||
client = Client()
|
client = Client()
|
||||||
client.setup(mqtt_host, mqtt_port, mqtt_user, mqtt_pwd)
|
client.setup(mqtt_host, mqtt_port, mqtt_user, mqtt_pwd)
|
||||||
yamaha = Yamaha(Device(yamaha_host), client)
|
yamaha = Yamaha(yamaha_host, client)
|
||||||
|
|
||||||
client.loop_forever()
|
client.loop_forever()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user