feat(publishing): implement immediate raw ingestion, per-target Redis queues, and configurable post intervals & sleep windows
This commit is contained in:
@@ -9,7 +9,6 @@ from db.repository import Repository
|
||||
from core.metrics import start_metrics_server
|
||||
from core.llm import LLMClient
|
||||
from core.queue import RedisQueue
|
||||
from services.queue_consumer import QueueConsumerService
|
||||
from services.ai_processor import AIProcessor
|
||||
from services.collector import CollectorService
|
||||
from services.admin_bot import AdminBotService
|
||||
@@ -26,7 +25,7 @@ logging.basicConfig(
|
||||
logger = logging.getLogger("copykar.main")
|
||||
|
||||
async def main():
|
||||
logger.info("Starting Copykar System with Persian Target Rewriting & Review Pipeline...")
|
||||
logger.info("Starting Copykar System with Immediate Admin Review & Paced Target Queues...")
|
||||
|
||||
# 1. Start Prometheus metrics server
|
||||
metrics_port = int(os.getenv("METRICS_PORT", "8000"))
|
||||
@@ -44,15 +43,17 @@ async def main():
|
||||
|
||||
# 3. Create Services
|
||||
ai_processor = AIProcessor(repo=repo, llm=llm)
|
||||
admin_bot = AdminBotService(repo=repo, ai_processor=ai_processor)
|
||||
collector = CollectorService(repo=repo, queue=redis_queue, on_post_received=admin_bot.send_raw_review_post)
|
||||
admin_bot = AdminBotService(repo=repo, ai_processor=ai_processor, queue=redis_queue)
|
||||
collector = CollectorService(repo=repo, on_post_received=admin_bot.send_raw_review_post)
|
||||
admin_bot.set_collector(collector)
|
||||
queue_consumer = QueueConsumerService(queue=redis_queue, on_post_popped=admin_bot.send_raw_review_post)
|
||||
|
||||
# Publisher handles per-target delivery queues, intervals, and sleep windows
|
||||
publisher = PublisherService(repo=repo, queue=redis_queue, client=collector.client)
|
||||
|
||||
# 4. Start all services
|
||||
await admin_bot.start()
|
||||
await collector.start(notify_fn=admin_bot.notify_admins)
|
||||
await queue_consumer.start()
|
||||
await publisher.start()
|
||||
|
||||
logger.info("All Copykar services are active and running.")
|
||||
|
||||
@@ -73,7 +74,7 @@ async def main():
|
||||
finally:
|
||||
logger.info("Shutting down Copykar services...")
|
||||
await collector.stop()
|
||||
await queue_consumer.stop()
|
||||
await publisher.stop()
|
||||
await admin_bot.stop()
|
||||
await redis_queue.close()
|
||||
await close_db_pool()
|
||||
|
||||
Reference in New Issue
Block a user