67 lines
2.1 KiB
Python
67 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
import os
|
|
import sys
|
|
import importlib
|
|
|
|
def main():
|
|
component = os.getenv('COMPONENT_NAME', 'eveai_app')
|
|
role = os.getenv('ROLE', 'web')
|
|
|
|
if role == 'web':
|
|
# Web services
|
|
from gevent import monkey
|
|
monkey.patch_all()
|
|
|
|
try:
|
|
module = importlib.import_module(component)
|
|
app = module.create_app()
|
|
|
|
except ImportError as e:
|
|
print(f"Error importing {component}: {e}", file=sys.stderr)
|
|
sys.exit(1)
|
|
except AttributeError as e:
|
|
print(f"Error: {component} module does not have create_app function: {e}", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
elif role in ['worker', 'beat']:
|
|
# Worker services
|
|
try:
|
|
module = importlib.import_module(component)
|
|
celery = module.celery
|
|
|
|
except ImportError as e:
|
|
print(f"Error importing {component}: {e}", file=sys.stderr)
|
|
sys.exit(1)
|
|
except AttributeError as e:
|
|
print(f"Error: {component} module does not have celery object: {e}", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
else:
|
|
print(f"Unknown role: {role}", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
# For web services - expose app object for gunicorn
|
|
if os.getenv('ROLE', 'web') == 'web':
|
|
component = os.getenv('COMPONENT_NAME', 'eveai_app')
|
|
try:
|
|
from gevent import monkey
|
|
monkey.patch_all()
|
|
|
|
module = importlib.import_module(component)
|
|
app = module.create_app()
|
|
except (ImportError, AttributeError) as e:
|
|
print(f"Error setting up app for {component}: {e}", file=sys.stderr)
|
|
app = None
|
|
|
|
# For worker/beat services - expose celery object
|
|
elif os.getenv('ROLE') in ['worker', 'beat']:
|
|
component = os.getenv('COMPONENT_NAME', 'eveai_workers')
|
|
try:
|
|
module = importlib.import_module(component)
|
|
celery = module.celery
|
|
except (ImportError, AttributeError) as e:
|
|
print(f"Error setting up celery for {component}: {e}", file=sys.stderr)
|
|
celery = None
|
|
|
|
if __name__ == '__main__':
|
|
main() |