Spaces:
Sleeping
Sleeping
File size: 1,865 Bytes
d1ed09d 594ffdd fa9a2fa 810bf3f d1ed09d 594ffdd d1ed09d fa9a2fa d1ed09d 24e24f3 594ffdd 755230a ee3b1c9 594ffdd 1fef6b4 594ffdd fa9a2fa 810bf3f fa9a2fa bf4af03 fa9a2fa 594ffdd aa8c944 1a55407 aa8c944 810bf3f d1ed09d 755230a d1ed09d 755230a fa9a2fa aa8c944 bfc464c 594ffdd bfc464c 594ffdd bfc464c 41da63d 594ffdd 41da63d 594ffdd 1ef8927 d1ed09d e178c81 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
import os
from pathlib import Path
import json, base64, time
from datetime import datetime
import gradio as gr
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
import uvicorn
import spaces
from spaces.zero.client import _get_token
app = FastAPI()
# Create and mount a static directory if needed
static_dir = Path("./static")
static_dir.mkdir(parents=True, exist_ok=True)
app.mount("/static", StaticFiles(directory="static"), name="static")
# Remove or override the default GRADIO_ROOT_PATH
os.environ["GRADIO_ROOT_PATH"] = "/assets"
@spaces.GPU(duration=4*60)
def process_text(text):
time.sleep(10)
return text.upper()
def process_and_save(request: gr.Request, text):
token = _get_token(request)
payload = token.split('.')[1]
payload = f"{payload}{'=' * ((4 - len(payload) % 4) % 4)}"
payload = json.loads(base64.urlsafe_b64decode(payload).decode())
print(f"Token payload: {payload}")
processed_text = process_text(text)
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
file_path = static_dir / f"output_{timestamp}.txt"
with open(file_path, "w") as f:
f.write(processed_text)
return gr.File(value=str(file_path))
process_and_save.zerogpu = True
with gr.Blocks() as demo:
text_input = gr.Textbox(label="Enter some text")
submit_btn = gr.Button("Process and Download")
output = gr.File(label="Download Processed File")
submit_btn.click(fn=process_and_save, inputs=[text_input], outputs=output)
# Mount Gradio app with SSR
app = gr.mount_gradio_app(app, demo, path="/", ssr_mode=True)
# Make sure assets are served from /assets
assets_dir = Path("./assets")
assets_dir.mkdir(parents=True, exist_ok=True)
app.mount("/assets", StaticFiles(directory=str(assets_dir)), name="assets")
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=7860) |