Remove refresh wwwroot support and static files serving, only using vite to serve frontend in dev mode (avoid accidentally using stale builds).
This commit is contained in:
+7
-32
@@ -1,7 +1,6 @@
|
|||||||
import asyncio
|
import asyncio
|
||||||
import datetime
|
import datetime
|
||||||
import mimetypes
|
import mimetypes
|
||||||
import threading
|
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
from multiprocessing import cpu_count
|
from multiprocessing import cpu_count
|
||||||
from pathlib import Path, PurePath, PurePosixPath
|
from pathlib import Path, PurePath, PurePosixPath
|
||||||
@@ -56,7 +55,6 @@ async def main_start(app):
|
|||||||
# Sanic sometimes fails to execute after_server_stop, so we do it before instead (potentially interrupting handlers)
|
# Sanic sometimes fails to execute after_server_stop, so we do it before instead (potentially interrupting handlers)
|
||||||
@app.before_server_stop
|
@app.before_server_stop
|
||||||
async def main_stop(app):
|
async def main_stop(app):
|
||||||
quit.set()
|
|
||||||
watching.stop(app)
|
watching.stop(app)
|
||||||
app.ctx.threadexec.shutdown()
|
app.ctx.threadexec.shutdown()
|
||||||
app.ctx.zipexec.shutdown(cancel_futures=True)
|
app.ctx.zipexec.shutdown(cancel_futures=True)
|
||||||
@@ -174,9 +172,8 @@ def _load_wwwroot(www):
|
|||||||
|
|
||||||
@app.before_server_start
|
@app.before_server_start
|
||||||
async def start(app):
|
async def start(app):
|
||||||
await load_wwwroot(app)
|
if not app.debug:
|
||||||
if app.debug:
|
await load_wwwroot(app)
|
||||||
app.add_task(refresh_wwwroot(), name="refresh_wwwroot")
|
|
||||||
|
|
||||||
|
|
||||||
async def load_wwwroot(app):
|
async def load_wwwroot(app):
|
||||||
@@ -186,36 +183,14 @@ async def load_wwwroot(app):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
quit = threading.Event()
|
|
||||||
|
|
||||||
|
|
||||||
async def refresh_wwwroot():
|
|
||||||
try:
|
|
||||||
while not quit.is_set():
|
|
||||||
try:
|
|
||||||
wwwold = www
|
|
||||||
await load_wwwroot(app)
|
|
||||||
changes = ""
|
|
||||||
for name in sorted(www):
|
|
||||||
attr = www[name]
|
|
||||||
if wwwold.get(name) == attr:
|
|
||||||
continue
|
|
||||||
headers = attr[2]
|
|
||||||
changes += f"{headers['last-modified']} {headers['etag']} /{name}\n"
|
|
||||||
for name in sorted(set(wwwold) - set(www)):
|
|
||||||
changes += f"Deleted /{name}\n"
|
|
||||||
if changes:
|
|
||||||
logger.info(f"Updated wwwroot:\n{changes}", end="", flush=True)
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"Error loading wwwroot: {e!r}")
|
|
||||||
await asyncio.sleep(0.5)
|
|
||||||
except asyncio.CancelledError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@app.route("/<path:path>", methods=["GET", "HEAD"])
|
@app.route("/<path:path>", methods=["GET", "HEAD"])
|
||||||
async def wwwroot(req, path=""):
|
async def wwwroot(req, path=""):
|
||||||
"""Frontend files only"""
|
"""Frontend files only"""
|
||||||
|
if app.debug:
|
||||||
|
raise NotFound(
|
||||||
|
"Dev mode: frontend-build is not served on backend (you should connect vite)",
|
||||||
|
extra={"name": path},
|
||||||
|
)
|
||||||
name = unquote(path)
|
name = unquote(path)
|
||||||
if name not in www:
|
if name not in www:
|
||||||
raise NotFound(f"File not found: /{path}", extra={"name": name})
|
raise NotFound(f"File not found: /{path}", extra={"name": name})
|
||||||
|
|||||||
Reference in New Issue
Block a user