Spaces:
Paused
Paused
| import os | |
| import tempfile | |
| import importlib.util | |
| from flask import Flask | |
| def load_app(): | |
| code = os.getenv("MAIN_CODE") | |
| if not code: | |
| raise RuntimeError("No application code found") | |
| # Create temporary file with the Flask app code | |
| with tempfile.NamedTemporaryFile(suffix=".py", delete=False, mode='w', encoding='utf-8') as f: | |
| f.write(code) | |
| tmp_name = f.name | |
| try: | |
| # Load the module | |
| spec = importlib.util.spec_from_file_location("flask_app", tmp_name) | |
| module = importlib.util.module_from_spec(spec) | |
| spec.loader.exec_module(module) | |
| # Look for Flask app instances | |
| app = None | |
| # Method 1: Look for a variable named 'app' | |
| if hasattr(module, 'app') and isinstance(module.app, Flask): | |
| app = module.app | |
| # Method 2: Look for a function that returns a Flask app | |
| elif hasattr(module, 'create_app'): | |
| app = module.create_app() | |
| # Method 3: Look for any Flask instance in the module | |
| else: | |
| for attr_name in dir(module): | |
| attr = getattr(module, attr_name) | |
| if isinstance(attr, Flask): | |
| app = attr | |
| break | |
| if app is None: | |
| raise RuntimeError("No Flask application found in the code") | |
| return app | |
| finally: | |
| # Clean up temporary file | |
| try: | |
| os.unlink(tmp_name) | |
| except: | |
| pass | |
| if __name__ == "__main__": | |
| app = load_app() | |
| # Run the Flask app with common defaults | |
| port = 7860 | |
| app.run(host='0.0.0.0', port=port, debug=False) | |