glm-4.5-api / app.py
dwfwfwfwf's picture
Update app.py
5f3ce3d verified
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)