Import L1 (celery) as l1/
This commit is contained in:
51
l1/celery_app.py
Normal file
51
l1/celery_app.py
Normal file
@@ -0,0 +1,51 @@
|
||||
"""
|
||||
Art DAG Celery Application
|
||||
|
||||
Streaming video rendering for the Art DAG system.
|
||||
Uses S-expression recipes with frame-by-frame processing.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
from celery import Celery
|
||||
from celery.signals import worker_ready
|
||||
|
||||
# Use central config
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
from app.config import settings
|
||||
|
||||
app = Celery(
|
||||
'art_celery',
|
||||
broker=settings.redis_url,
|
||||
backend=settings.redis_url,
|
||||
include=['tasks', 'tasks.streaming', 'tasks.ipfs_upload']
|
||||
)
|
||||
|
||||
|
||||
@worker_ready.connect
|
||||
def log_config_on_startup(sender, **kwargs):
|
||||
"""Log configuration when worker starts."""
|
||||
print("=" * 60, file=sys.stderr)
|
||||
print("WORKER STARTED - CONFIGURATION", file=sys.stderr)
|
||||
print("=" * 60, file=sys.stderr)
|
||||
settings.log_config()
|
||||
print(f"Worker: {sender}", file=sys.stderr)
|
||||
print("=" * 60, file=sys.stderr)
|
||||
|
||||
app.conf.update(
|
||||
result_expires=86400 * 7, # 7 days - allow time for recovery after restarts
|
||||
task_serializer='json',
|
||||
accept_content=['json', 'pickle'], # pickle needed for internal Celery messages
|
||||
result_serializer='json',
|
||||
event_serializer='json',
|
||||
timezone='UTC',
|
||||
enable_utc=True,
|
||||
task_track_started=True,
|
||||
task_acks_late=True, # Don't ack until task completes - survives worker restart
|
||||
worker_prefetch_multiplier=1,
|
||||
task_reject_on_worker_lost=True, # Re-queue if worker dies
|
||||
task_acks_on_failure_or_timeout=True, # Ack failed tasks so they don't retry forever
|
||||
)
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.start()
|
||||
Reference in New Issue
Block a user