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