Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 76b68bb9

Přidáno uživatelem Jakub Šilhavý před asi 3 roky(ů)

re #9359 Added diskcache dependency, prepared a new thread for periodical data retrieval from the cache

Zobrazit rozdíly:

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