- New Build and startup procedures for all services, compliant for both docker, podman and k8s
This commit is contained in:
67
scripts/run.py
Normal file
67
scripts/run.py
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/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()
|
||||
Reference in New Issue
Block a user