2024-04-02 06:31:56 +08:00
|
|
|
"""This demo is only meant to test the unload event.
|
|
|
|
It will write to a file when the unload event is triggered.
|
|
|
|
May not work as expected if multiple people are using it.
|
|
|
|
"""
|
|
|
|
import gradio as gr
|
|
|
|
from pathlib import Path
|
|
|
|
|
|
|
|
log_file = (Path(__file__).parent / "output_log.txt").resolve()
|
|
|
|
|
|
|
|
def test_fn(x):
|
|
|
|
with open(log_file, "a") as f:
|
|
|
|
f.write(f"incremented {x}\n")
|
|
|
|
return x + 1, x + 1
|
|
|
|
|
|
|
|
def delete_fn(v):
|
|
|
|
with log_file.open("a") as f:
|
|
|
|
f.write(f"deleted {v}\n")
|
|
|
|
|
|
|
|
def unload_fn():
|
|
|
|
with log_file.open("a") as f:
|
2024-07-30 13:08:51 +08:00
|
|
|
f.write("unloading\n")
|
2024-04-02 06:31:56 +08:00
|
|
|
|
|
|
|
with gr.Blocks() as demo:
|
|
|
|
n1 = gr.Number(value=0, label="Number")
|
|
|
|
state = gr.State(value=0, delete_callback=delete_fn)
|
|
|
|
button = gr.Button("Increment")
|
|
|
|
button.click(test_fn, [state], [n1, state], api_name="increment")
|
|
|
|
demo.unload(unload_fn)
|
|
|
|
demo.load(lambda: log_file.write_text(""))
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
2024-07-30 13:08:51 +08:00
|
|
|
demo.launch()
|