Revize 76b68bb9
Přidáno uživatelem Jakub Šilhavý před asi 3 roky(ů)
client/api_client.py | ||
---|---|---|
1 | 1 |
import json |
2 | 2 |
import requests |
3 | 3 |
import logging |
4 |
|
|
4 |
from time import sleep |
|
5 |
from diskcache import Deque |
|
5 | 6 |
from requests import HTTPError, ConnectionError |
6 | 7 |
|
7 |
from config_manager import server_url, server_port, server_endpoint |
|
8 |
from config_manager import server_url, server_port, server_endpoint, cache_dir, cache_retry_period_seconds, cache_max_retries, cache_max_entries
|
|
8 | 9 |
|
9 | 10 |
|
11 |
_cache = Deque(directory=cache_dir) |
|
10 | 12 |
_uri = server_url + ":" + server_port + server_endpoint |
11 | 13 |
|
12 | 14 |
|
... | ... | |
19 | 21 |
logging.warning(f"sending payload = {payload} to {_uri} failed") |
20 | 22 |
except HTTPError as error: |
21 | 23 |
logging.error(f"HTTP Error ({_uri}) payload = {payload}, {error}") |
24 |
|
|
25 |
|
|
26 |
def api_client_run(): |
|
27 |
while True: |
|
28 |
sleep(cache_retry_period_seconds) |
client/config.ini | ||
---|---|---|
10 | 10 |
[logger] |
11 | 11 |
format = %(asctime)s %(levelname)s : %(message)s |
12 | 12 |
level = INFO |
13 |
|
|
14 |
[cache] |
|
15 |
directory = data |
|
16 |
max_entries = 100 |
|
17 |
max_retries = 20 |
|
18 |
retry_period_seconds = 20 |
client/config_manager.py | ||
---|---|---|
32 | 32 |
logger_level = 40 |
33 | 33 |
elif logger_level_str == "CRITICAL": |
34 | 34 |
logger_level = 50 |
35 |
|
|
36 |
cache_dir = config[cache_section]["directory"] |
|
37 |
cache_max_entries = int(config[cache_section]["max_entries"]) |
|
38 |
cache_max_retries = int(config[cache_section]["max_retries"]) |
|
39 |
cache_retry_period_seconds = float(config[cache_section]["retry_period_seconds"]) |
client/main.py | ||
---|---|---|
6 | 6 |
from config_manager import logger_format, logger_level |
7 | 7 |
from usb_detector.detector import register_listener, usb_detector_run |
8 | 8 |
from usb_detector.event_listener import usb_connected_callback, usb_disconnected_callback |
9 |
from api_client import api_client_run |
|
9 | 10 |
|
10 | 11 |
|
11 | 12 |
if __name__ == "__main__": |
... | ... | |
18 | 19 |
|
19 | 20 |
usb_detector_thread = Thread(target=usb_detector_run) |
20 | 21 |
usb_detector_thread.setDaemon(True) |
22 |
|
|
23 |
api_thread = Thread(target=api_client_run) |
|
24 |
api_thread.setDaemon(True) |
|
25 |
|
|
21 | 26 |
usb_detector_thread.start() |
27 |
api_thread.start() |
|
22 | 28 |
|
23 | 29 |
usb_detector_thread.join() |
30 |
api_thread.join() |
client/requirements.txt | ||
---|---|---|
1 |
diskcache==5.4.0 |
|
1 | 2 |
pyusb==1.2.1 |
2 | 3 |
requests==2.25.1 |
3 | 4 |
tendo==0.2.15 |
client/usb_detector/detector.py | ||
---|---|---|
40 | 40 |
def usb_detector_run(): |
41 | 41 |
logging.info("USB device detector is now running") |
42 | 42 |
|
43 |
if not os.path.exists(connected_devices_filename): |
|
44 |
dir_name = os.path.dirname(connected_devices_filename) |
|
45 |
os.makedirs(dir_name) |
|
46 |
|
|
47 | 43 |
while True: |
48 | 44 |
last_connected_devices = _load_last_connected_devices() |
49 | 45 |
detected_devices = read_connected_devices() |
Také k dispozici: Unified diff
re #9359 Added diskcache dependency, prepared a new thread for periodical data retrieval from the cache