Merge pull request #85 from Folltoshe/main

fix: 修复使用redis缓存的时候过期时间错误
This commit is contained in:
ikun0014 2024-11-17 22:44:52 +08:00 committed by GitHub
commit 497f21d2d4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 777 additions and 488 deletions

View File

@ -175,11 +175,12 @@ def request(url: str, options={}) -> requests.Response:
# 缓存写入 # 缓存写入
if cache_info and cache_info != "no-cache": if cache_info and cache_info != "no-cache":
cache_data = pickle.dumps(req) cache_data = pickle.dumps(req)
expire_time = (cache_info if isinstance(cache_info, int) else 3600) + int(time.time()) expire_time = cache_info if isinstance(cache_info, int) else 3600
expire_at = int((time.time) + expire_time)
config.updateCache( config.updateCache(
"httpx", "httpx",
cache_key, cache_key,
{"expire": True, "time": expire_time, "data": utils.createBase64Encode(cache_data)}, {"expire": True, "time": expire_at, "data": utils.createBase64Encode(cache_data)},
expire_time, expire_time,
) )
logger.debug("缓存已更新: " + url) logger.debug("缓存已更新: " + url)
@ -331,11 +332,12 @@ async def AsyncRequest(url, options={}) -> ClientResponse:
# 缓存写入 # 缓存写入
if cache_info and cache_info != "no-cache": if cache_info and cache_info != "no-cache":
cache_data = pickle.dumps(req) cache_data = pickle.dumps(req)
expire_time = (cache_info if isinstance(cache_info, int) else 3600) + int(time.time()) expire_time = cache_info if isinstance(cache_info, int) else 3600
expire_at = int((time.time) + expire_time)
config.updateCache( config.updateCache(
"httpx_async", "httpx_async",
cache_key, cache_key,
{"expire": True, "time": expire_time, "data": utils.createBase64Encode(cache_data)}, {"expire": True, "time": expire_at, "data": utils.createBase64Encode(cache_data)},
expire_time, expire_time,
) )
logger.debug("缓存已更新: " + url) logger.debug("缓存已更新: " + url)

View File

@ -95,18 +95,18 @@ async def url(source, songId, quality, query={}):
logger.info(f'获取{source}_{songId}_{quality}成功URL{result["url"]}') logger.info(f'获取{source}_{songId}_{quality}成功URL{result["url"]}')
canExpire = sourceExpirationTime[source]["expire"] canExpire = sourceExpirationTime[source]["expire"]
expireTime = sourceExpirationTime[source]["time"] + int(time.time()) expireTime = int(sourceExpirationTime[source]["time"] * 0.75)
canUseTime = int(expireTime - sourceExpirationTime[source]["time"] * 0.25) expireAt = int(expireTime + time.time())
config.updateCache( config.updateCache(
"urls", "urls",
f"{source}_{songId}_{quality}", f"{source}_{songId}_{quality}",
{ {
"expire": canExpire, "expire": canExpire,
# 取有效期的75%作为链接可用时长 # 取有效期的75%作为链接可用时长
"time": canUseTime, "time": expireAt,
"url": result["url"], "url": result["url"],
}, },
canUseTime if canExpire else None, expireTime if canExpire else None,
) )
logger.debug(f'缓存已更新:{source}_{songId}_{quality}, URL{result["url"]}, expire: {expireTime}') logger.debug(f'缓存已更新:{source}_{songId}_{quality}, URL{result["url"]}, expire: {expireTime}')
@ -121,7 +121,7 @@ async def url(source, songId, quality, query={}):
"result": result["quality"], "result": result["quality"],
}, },
"expire": { "expire": {
"time": expireTime if canExpire else None, "time": expireAt if canExpire else None,
"canExpire": canExpire, "canExpire": canExpire,
}, },
}, },
@ -149,13 +149,14 @@ async def lyric(source, songId, _, query):
} }
try: try:
result = await func(songId) result = await func(songId)
expireTime = int(time.time() + (86400 * 3)) expireTime = 86400 * 3
expireAt = int(time.time() + expireTime)
config.updateCache( config.updateCache(
"lyric", "lyric",
f"{source}_{songId}", f"{source}_{songId}",
{ {
"data": result, "data": result,
"time": expireTime, # 歌词缓存3天 "time": expireAt, # 歌词缓存3天
"expire": True, "expire": True,
}, },
expireTime, expireTime,

1236
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -21,6 +21,8 @@ mutagen = "^1.47.0"
colorama = "^0.4.6" colorama = "^0.4.6"
ruamel-yaml = "^0.18.6" ruamel-yaml = "^0.18.6"
pybind11 = "^2.13.6" pybind11 = "^2.13.6"
redis = "^5.2.0"
hiredis = "^3.0.0"
[build-system] [build-system]
requires = ["poetry-core"] requires = ["poetry-core"]

View File

@ -11,4 +11,4 @@ pillow
colorama colorama
ruamel-yaml ruamel-yaml
redis redis
redis[hiredis] hiredis