File size: 2,370 Bytes
bc37cf8
 
9d0f13c
bc37cf8
 
e0e84a7
f297386
dd7318c
9d0f13c
f297386
bc37cf8
f297386
dd7318c
f297386
 
 
 
 
 
 
 
 
 
 
bc37cf8
 
f297386
bc37cf8
 
 
 
e0e84a7
 
 
bc37cf8
 
 
e0e84a7
bc37cf8
e0e84a7
bc37cf8
e0e84a7
 
bc37cf8
 
 
f297386
dd7318c
 
e0e84a7
 
 
 
 
 
 
 
 
 
 
bc37cf8
 
dd7318c
 
 
bc37cf8
dd7318c
 
f297386
dd7318c
 
 
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
62
63
64
65
66
67
68
69
70
71
72
# Filename: /home/user/app/app.py
# Version: 1691068773 (Unix timestamp at creation moment)

import os
import subprocess

# Definir el archivo de log antes de instalar las bibliotecas
log_file = "/home/user/app/app.log"

# Instalar las bibliotecas necesarias
def install_packages():
    # Instalar los paquetes necesarios si aún no están instalados
    with open(log_file, "a") as f:
        f.write("===== Installing Packages =====\n")
        subprocess.run(['pip3', 'install', '--quiet', 'jupyterlab', 'flask', 'gradio'], check=True, stdout=f, stderr=f)

install_packages()

# Ahora importar las bibliotecas necesarias
from flask import Flask, redirect
import gradio as gr
from werkzeug.serving import WSGIRequestHandler

app = Flask(__name__)

def configure_jupyter():
    # Generar la configuración de Jupyter
    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():
    # Iniciar JupyterLab en el puerto 8888 con autoreload
    with open(log_file, "a") as f:
        subprocess.Popen(['jupyter-lab', '--port', '8888', '--autoreload'], stdout=f, stderr=f)

@app.route('/')
def home():
    def greet(name):
        return f"Hello {name}!"
    iface = gr.Interface(fn=greet, inputs="text", outputs="text")
    return iface.launch(inline=True)

@app.route('/lab')
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))
    
    configure_jupyter()
    start_jupyter()
    
    # Deshabilitar los logs para Flask
    WSGIRequestHandler.log_request = lambda self, *args, **kwargs: None
    
    app.run(host='0.0.0.0', port=7860, debug=False)