mirror of
https://github.com/ep1cman/unifi-protect-backup.git
synced 2025-12-15 15:53:44 +00:00
Cache camera names
so an active protect connection is not need to perform actions like uploads which don't rely on protect.
This commit is contained in:
17
poetry.lock
generated
17
poetry.lock
generated
@@ -201,6 +201,21 @@ PyYAML = "*"
|
|||||||
requests = "*"
|
requests = "*"
|
||||||
requests-oauthlib = "*"
|
requests-oauthlib = "*"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "async-lru"
|
||||||
|
version = "2.0.3"
|
||||||
|
description = "Simple LRU cache for asyncio"
|
||||||
|
category = "main"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=3.8"
|
||||||
|
files = [
|
||||||
|
{file = "async-lru-2.0.3.tar.gz", hash = "sha256:b714c9d1415fca4e264da72a9e2abc66880ce7430e03a973341f88ea4c0d4869"},
|
||||||
|
{file = "async_lru-2.0.3-py3-none-any.whl", hash = "sha256:00c0a8899c20b9c88663a47732689ff98189c9fa08ad9f734d7722f934d250b1"},
|
||||||
|
]
|
||||||
|
|
||||||
|
[package.dependencies]
|
||||||
|
typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""}
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "async-timeout"
|
name = "async-timeout"
|
||||||
version = "4.0.2"
|
version = "4.0.2"
|
||||||
@@ -2421,4 +2436,4 @@ testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = ">=3.9.0,<4.0"
|
python-versions = ">=3.9.0,<4.0"
|
||||||
content-hash = "5deb339fab9bbf61b295ef5ee811d233f573f6473d83aab5e3951c7216fb2897"
|
content-hash = "42a25af6210e11892bc9e94fb4a4565e06f9dfe9239a8f277f4970e85de72218"
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ aiosqlite = "^0.17.0"
|
|||||||
python-dateutil = "^2.8.2"
|
python-dateutil = "^2.8.2"
|
||||||
apprise = "^1.3.0"
|
apprise = "^1.3.0"
|
||||||
expiring-dict = "^1.1.0"
|
expiring-dict = "^1.1.0"
|
||||||
|
async-lru = "^2.0.3"
|
||||||
|
|
||||||
[tool.poetry.group.dev]
|
[tool.poetry.group.dev]
|
||||||
optional = true
|
optional = true
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from apprise import NotifyType
|
|||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
from pyunifiprotect import ProtectApiClient
|
from pyunifiprotect import ProtectApiClient
|
||||||
from pyunifiprotect.data.nvr import Event
|
from pyunifiprotect.data.nvr import Event
|
||||||
|
from async_lru import alru_cache
|
||||||
|
|
||||||
from unifi_protect_backup import notifications
|
from unifi_protect_backup import notifications
|
||||||
|
|
||||||
@@ -277,6 +278,9 @@ def human_readable_to_float(num: str):
|
|||||||
return value * multiplier
|
return value * multiplier
|
||||||
|
|
||||||
|
|
||||||
|
# Cached so that actions like uploads can continue when the connection to the api is lost
|
||||||
|
# No max size, and a 6 hour ttl
|
||||||
|
@alru_cache(None, ttl=60 * 60 * 6)
|
||||||
async def get_camera_name(protect: ProtectApiClient, id: str):
|
async def get_camera_name(protect: ProtectApiClient, id: str):
|
||||||
"""Returns the name for the camera with the given ID.
|
"""Returns the name for the camera with the given ID.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user