dwfwfwfwf commited on
Commit
5f3ce3d
·
verified ·
1 Parent(s): f29547a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -7
app.py CHANGED
@@ -1,20 +1,55 @@
1
  import os
2
  import tempfile
3
  import importlib.util
 
4
 
5
  def load_app():
6
  code = os.getenv("MAIN_CODE")
7
  if not code:
8
  raise RuntimeError("No application code found")
9
 
10
- with tempfile.NamedTemporaryFile(suffix=".py", delete=False) as f:
11
- f.write(code.encode('utf-8'))
 
12
  tmp_name = f.name
13
 
14
- spec = importlib.util.spec_from_file_location("hidden_app", tmp_name)
15
- module = importlib.util.module_from_spec(spec)
16
- spec.loader.exec_module(module)
17
- module.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  if __name__ == "__main__":
20
- load_app()
 
 
 
 
1
  import os
2
  import tempfile
3
  import importlib.util
4
+ from flask import Flask
5
 
6
  def load_app():
7
  code = os.getenv("MAIN_CODE")
8
  if not code:
9
  raise RuntimeError("No application code found")
10
 
11
+ # Create temporary file with the Flask app code
12
+ with tempfile.NamedTemporaryFile(suffix=".py", delete=False, mode='w', encoding='utf-8') as f:
13
+ f.write(code)
14
  tmp_name = f.name
15
 
16
+ try:
17
+ # Load the module
18
+ spec = importlib.util.spec_from_file_location("flask_app", tmp_name)
19
+ module = importlib.util.module_from_spec(spec)
20
+ spec.loader.exec_module(module)
21
+
22
+ # Look for Flask app instances
23
+ app = None
24
+
25
+ # Method 1: Look for a variable named 'app'
26
+ if hasattr(module, 'app') and isinstance(module.app, Flask):
27
+ app = module.app
28
+ # Method 2: Look for a function that returns a Flask app
29
+ elif hasattr(module, 'create_app'):
30
+ app = module.create_app()
31
+ # Method 3: Look for any Flask instance in the module
32
+ else:
33
+ for attr_name in dir(module):
34
+ attr = getattr(module, attr_name)
35
+ if isinstance(attr, Flask):
36
+ app = attr
37
+ break
38
+
39
+ if app is None:
40
+ raise RuntimeError("No Flask application found in the code")
41
+
42
+ return app
43
+
44
+ finally:
45
+ # Clean up temporary file
46
+ try:
47
+ os.unlink(tmp_name)
48
+ except:
49
+ pass
50
 
51
  if __name__ == "__main__":
52
+ app = load_app()
53
+ # Run the Flask app with common defaults
54
+ port = 7860
55
+ app.run(host='0.0.0.0', port=port, debug=False)