22 lines
676 B
Python
22 lines
676 B
Python
import os
|
|
import asyncio
|
|
from models.event import create_event, FileReadyEvent
|
|
|
|
async def file_is_ready(path: str, wait: float = 1.0) -> bool:
|
|
try:
|
|
size1 = os.path.getsize(path)
|
|
await asyncio.sleep(wait)
|
|
size2 = os.path.getsize(path)
|
|
return size1 == size2
|
|
except Exception:
|
|
return False
|
|
|
|
async def check_ready(db, ref_id: str, file_name: str, file_uri: str, insert_event):
|
|
for _ in range(5):
|
|
await asyncio.sleep(2)
|
|
if await file_is_ready(file_uri):
|
|
ev = create_event(FileReadyEvent, file_name, file_uri, reference_id=ref_id)
|
|
insert_event(db, ev)
|
|
return ev
|
|
return None
|