mirror of
https://github.com/Sygil-Dev/sygil-webui.git
synced 2025-01-07 11:59:59 +03:00
Workaround for Gradio server hanging on keyboard interrupt
Moved the demo.launch() call to start up a new thread, so we can kill the process ourselves on keyboard interrupt
This commit is contained in:
parent
a6f80800f3
commit
5e9ed5961d
27
webui.py
27
webui.py
@ -6,7 +6,7 @@ import mimetypes
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pynvml
|
import pynvml
|
||||||
import random
|
import random
|
||||||
import threading
|
import threading, asyncio
|
||||||
import time
|
import time
|
||||||
import torch
|
import torch
|
||||||
import torch.nn as nn
|
import torch.nn as nn
|
||||||
@ -1010,5 +1010,28 @@ demo = gr.TabbedInterface(
|
|||||||
css=("" if opt.no_progressbar_hiding else css_hide_progressbar),
|
css=("" if opt.no_progressbar_hiding else css_hide_progressbar),
|
||||||
theme="default",
|
theme="default",
|
||||||
)
|
)
|
||||||
|
|
||||||
demo.queue(concurrency_count=1)
|
demo.queue(concurrency_count=1)
|
||||||
demo.launch(show_error=True, server_name='0.0.0.0')
|
|
||||||
|
class ServerLauncher(threading.Thread):
|
||||||
|
def __init__(self, demo):
|
||||||
|
threading.Thread.__init__(self)
|
||||||
|
self.name = 'Gradio Server Thread'
|
||||||
|
self.demo = demo
|
||||||
|
|
||||||
|
def run(self):
|
||||||
|
loop = asyncio.new_event_loop()
|
||||||
|
asyncio.set_event_loop(loop)
|
||||||
|
demo.launch(show_error=True, server_name='0.0.0.0')
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
demo.close() # this tends to hang
|
||||||
|
|
||||||
|
server_thread = ServerLauncher(demo)
|
||||||
|
server_thread.start()
|
||||||
|
|
||||||
|
try:
|
||||||
|
while server_thread.is_alive():
|
||||||
|
time.sleep(60)
|
||||||
|
except (KeyboardInterrupt, OSError) as e:
|
||||||
|
crash(e, 'Shutting down...')
|
||||||
|
Loading…
Reference in New Issue
Block a user