mirror of
https://github.com/Viren070/MediaFusion.git
synced 2025-12-01 23:21:11 +01:00
Add lock functionality start only one scheduler
This commit is contained in:
@@ -41,3 +41,4 @@ prowlarr-config/
|
||||
config/
|
||||
mediafusion.local*
|
||||
.scrapy
|
||||
.lock
|
||||
+2
-1
@@ -139,4 +139,5 @@ http-client.private.env.json
|
||||
resources/poster_cache
|
||||
prowlarr-config/
|
||||
config/
|
||||
mediafusion.local*
|
||||
mediafusion.local*
|
||||
.lock
|
||||
+8
-8
@@ -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")
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user