Add lock functionality start only one scheduler

This commit is contained in:
mhdzumair
2024-04-04 22:38:43 +05:30
parent eb9e71c08a
commit 3b3641cea0
4 changed files with 28 additions and 9 deletions
+1
View File
@@ -41,3 +41,4 @@ prowlarr-config/
config/
mediafusion.local*
.scrapy
.lock
+2 -1
View File
@@ -139,4 +139,5 @@ http-client.private.env.json
resources/poster_cache
prowlarr-config/
config/
mediafusion.local*
mediafusion.local*
.lock
+8 -8
View File
@@ -25,7 +25,7 @@ from db.config import settings
from scrapers.routes import router as scrapers_router
from streaming_providers import mapper
from streaming_providers.routes import router as streaming_provider_router
from utils import crypto, torrent, poster, const, wrappers
from utils import crypto, torrent, poster, const, wrappers, lock
from utils.parser import generate_manifest, get_json_data
logging.basicConfig(
@@ -73,18 +73,18 @@ async def init_server():
@app.on_event("startup")
async def start_scheduler():
scheduler = AsyncIOScheduler()
setup_scheduler(scheduler)
scheduler.start()
app.state.scheduler = scheduler
if await lock.acquire_lock():
scheduler = AsyncIOScheduler()
setup_scheduler(scheduler)
scheduler.start()
app.state.scheduler = scheduler
@app.on_event("shutdown")
async def stop_scheduler():
try:
if hasattr(app.state, "scheduler"):
app.state.scheduler.shutdown(wait=False)
except AttributeError:
pass
await lock.release_lock()
@app.on_event("shutdown")
+17
View File
@@ -0,0 +1,17 @@
import aiofiles
from aiofiles import os
async def acquire_lock():
try:
async with aiofiles.open(".lock", "x") as f:
return True
except FileExistsError:
return False
async def release_lock():
try:
await os.remove(".lock")
except FileNotFoundError:
pass