Spaces:
Paused
Paused
# Filename: /home/user/app/app.py | |
# Version: 1691068773 (Unix timestamp at creation moment) | |
import os | |
import subprocess | |
from flask import Flask, redirect | |
import gradio as gr | |
from werkzeug.serving import WSGIRequestHandler | |
app = Flask(__name__) | |
log_file = "/home/user/app/app.log" | |
def install_packages(): | |
# Install necessary packages if they are not already installed | |
with open(log_file, "a") as f: | |
subprocess.run(['pip3', 'install', '--quiet', 'jupyterlab', 'flask', 'gradio'], check=True) | |
def configure_jupyter(): | |
# Generate Jupyter configuration | |
jupyter_config_dir = os.path.expanduser('~/.jupyter') | |
os.makedirs(jupyter_config_dir, exist_ok=True) | |
config_file = os.path.join(jupyter_config_dir, 'jupyter_lab_config.py') | |
jupyter_password = os.environ.get('JUPYPASS', '') | |
password_config = f"c.ServerApp.password = u'{jupyter_password}'" if jupyter_password else '' | |
with open(config_file, 'w') as f: | |
f.write(f""" | |
c.ServerApp.ip = '0.0.0.0' | |
c.ServerApp.port = 8888 | |
c.ServerApp.open_browser = False | |
{password_config} | |
c.ServerApp.root_dir = '/home/user/app' | |
c.ServerApp.terminado_settings = {{'shell_command': ['bash']}} | |
c.ServerApp.allow_root = True | |
""") | |
def start_jupyter(): | |
# Start JupyterLab on port 8888 with autoreload | |
with open(log_file, "a") as f: | |
subprocess.Popen(['jupyter-lab', '--port', '8888', '--autoreload'], stdout=f, stderr=f) | |
def home(): | |
def greet(name): | |
return f"Hello {name}!" | |
iface = gr.Interface(fn=greet, inputs="text", outputs="text") | |
return iface.launch(inline=True) | |
def lab(): | |
return redirect("http://localhost:8888", code=302) | |
if __name__ == "__main__": | |
with open(log_file, "a") as f: | |
f.write("===== Application Startup at {0} =====\n".format(subprocess.run(['date'], capture_output=True, text=True).stdout)) | |
install_packages() | |
configure_jupyter() | |
start_jupyter() | |
# Disable logging for Flask | |
WSGIRequestHandler.log_request = lambda self, *args, **kwargs: None | |
app.run(host='0.0.0.0', port=7860, debug=False) |