78 lines
2.2 KiB
Bash
78 lines
2.2 KiB
Bash
|
|
#!/bin/sh
|
||
|
|
set -e
|
||
|
|
|
||
|
|
# Source common functions
|
||
|
|
. /usr/local/bin/entrypoint-common.sh
|
||
|
|
|
||
|
|
log "Starting PieFed worker container..."
|
||
|
|
|
||
|
|
# Run common startup sequence (without migrations)
|
||
|
|
export PIEFED_INIT_CONTAINER=false
|
||
|
|
common_startup
|
||
|
|
|
||
|
|
# Worker-specific initialization
|
||
|
|
log "Initializing worker container..."
|
||
|
|
|
||
|
|
# Apply dual logging configuration (file + stdout for OpenObserve)
|
||
|
|
log "Configuring dual logging for OpenObserve..."
|
||
|
|
|
||
|
|
# Setup dual logging (file + stdout) directly
|
||
|
|
python -c "
|
||
|
|
import logging
|
||
|
|
import sys
|
||
|
|
|
||
|
|
def setup_dual_logging():
|
||
|
|
'''Add stdout handlers to existing loggers without disrupting file logging'''
|
||
|
|
# Create a shared console handler
|
||
|
|
console_handler = logging.StreamHandler(sys.stdout)
|
||
|
|
console_handler.setLevel(logging.INFO)
|
||
|
|
console_handler.setFormatter(logging.Formatter(
|
||
|
|
'%(asctime)s [%(name)s] %(levelname)s: %(message)s'
|
||
|
|
))
|
||
|
|
|
||
|
|
# Add console handler to key loggers (in addition to their existing file handlers)
|
||
|
|
loggers_to_enhance = [
|
||
|
|
'flask.app', # Flask application logger
|
||
|
|
'werkzeug', # Web server logger
|
||
|
|
'celery', # Celery worker logger
|
||
|
|
'celery.task', # Celery task logger
|
||
|
|
'celery.worker', # Celery worker logger
|
||
|
|
'' # Root logger
|
||
|
|
]
|
||
|
|
|
||
|
|
for logger_name in loggers_to_enhance:
|
||
|
|
logger = logging.getLogger(logger_name)
|
||
|
|
logger.setLevel(logging.INFO)
|
||
|
|
|
||
|
|
# Check if this logger already has a stdout handler
|
||
|
|
has_stdout_handler = any(
|
||
|
|
isinstance(h, logging.StreamHandler) and h.stream == sys.stdout
|
||
|
|
for h in logger.handlers
|
||
|
|
)
|
||
|
|
|
||
|
|
if not has_stdout_handler:
|
||
|
|
logger.addHandler(console_handler)
|
||
|
|
|
||
|
|
print('Dual logging configured: file + stdout for OpenObserve')
|
||
|
|
|
||
|
|
# Call the function
|
||
|
|
setup_dual_logging()
|
||
|
|
"
|
||
|
|
|
||
|
|
# Test Redis connection specifically
|
||
|
|
log "Testing Redis connection for Celery..."
|
||
|
|
python -c "
|
||
|
|
import redis
|
||
|
|
import os
|
||
|
|
r = redis.Redis(
|
||
|
|
host=os.environ.get('REDIS_HOST', 'redis'),
|
||
|
|
port=int(os.environ.get('REDIS_PORT', 6379)),
|
||
|
|
password=os.environ.get('REDIS_PASSWORD')
|
||
|
|
)
|
||
|
|
r.ping()
|
||
|
|
print('Redis connection successful')
|
||
|
|
"
|
||
|
|
|
||
|
|
# Start worker services via supervisor
|
||
|
|
log "Starting worker services (celery worker + beat)..."
|
||
|
|
exec "$@"
|