优化ip库获取逻辑

This commit is contained in:
咕谷酱
2025-09-19 17:03:45 +08:00
parent 08ff35509e
commit b834799a2d
2 changed files with 15 additions and 1 deletions

View File

@@ -104,16 +104,29 @@ class GeoIPHelper:
return max(files, key=os.path.getmtime) if files else None
def update(self, force=False):
from app.log import logger
for ed in self.editions:
eid = EDITIONS[ed]
path = self._latest_file(eid)
need = force or not path
if path:
age_days = (time.time() - os.path.getmtime(path)) / 86400
if age_days >= self.max_age_days:
need = True
logger.info(f"[GeoIP] {eid} database is {age_days:.1f} days old (max: {self.max_age_days}), will download new version")
else:
logger.info(f"[GeoIP] {eid} database is {age_days:.1f} days old, still fresh (max: {self.max_age_days})")
else:
logger.info(f"[GeoIP] {eid} database not found, will download")
if need:
logger.info(f"[GeoIP] Downloading {eid} database...")
path = self._download_and_extract(eid)
logger.info(f"[GeoIP] {eid} database downloaded successfully")
else:
logger.info(f"[GeoIP] Using existing {eid} database")
old = self._readers.get(ed)
if old:

View File

@@ -20,8 +20,9 @@ async def init_geoip():
logger.info("[GeoIP] Initializing GeoIP database...")
# Run the synchronous update method in a background thread
# force=False means only download if files don't exist or are expired
loop = asyncio.get_event_loop()
await loop.run_in_executor(None, geoip.update)
await loop.run_in_executor(None, lambda: geoip.update(force=False))
logger.info("[GeoIP] GeoIP database initialization completed")
except Exception as e: