Compare commits

...

2 Commits

Author SHA1 Message Date
Leonardo Mortari
1e15544687 Muda nome do environment 2025-08-02 14:09:28 -03:00
Leonardo Mortari
927eabb2d5 Remove webhook e adiciona push na fila 2025-08-02 14:09:06 -03:00

39
main.py
View File

@@ -1,25 +1,45 @@
import os import os
import pika import pika
import json import json
import requests
from components.video import process_full_video from components.video import process_full_video
RABBITMQ_HOST = os.environ.get('RABBITMQ_HOST', 'rabbitmq') RABBITMQ_HOST = os.environ.get('RABBITMQ_HOST', 'rabbitmq')
RABBITMQ_PORT = int(os.environ.get('RABBITMQ_PORT', 5672)) RABBITMQ_PORT = int(os.environ.get('RABBITMQ_PORT', 5672))
RABBITMQ_USER = os.environ.get('RABBITMQ_USER', 'admin') RABBITMQ_USER = os.environ.get('RABBITMQ_USER', 'admin')
RABBITMQ_PASS = os.environ.get('RABBITMQ_PASS') RABBITMQ_PASS = os.environ.get('RABBITMQ_PASS')
RABBITMQ_QUEUE = os.environ.get('RABBITMQ_QUEUE', 'to-render') RABBITMQ_QUEUE = os.environ.get('RABBITMQ_QUEUE', 'video_tasks')
RABBITMQ_UPLOAD_QUEUE = os.environ.get('RABBITMQ_UPLOAD_QUEUE', 'to-upload')
if not RABBITMQ_PASS: if not RABBITMQ_PASS:
raise RuntimeError("RABBITMQ_PASS não definido no ambiente") raise RuntimeError("RABBITMQ_PASS não definido no ambiente")
def publish_to_queue(payload):
credentials = pika.PlainCredentials(RABBITMQ_USER, RABBITMQ_PASS)
parameters = pika.ConnectionParameters(
host=RABBITMQ_HOST,
port=RABBITMQ_PORT,
credentials=credentials,
heartbeat=600,
blocked_connection_timeout=300
)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue=RABBITMQ_UPLOAD_QUEUE, durable=True)
channel.basic_publish(
exchange='',
routing_key=RABBITMQ_UPLOAD_QUEUE,
body=json.dumps(payload),
properties=pika.BasicProperties(
delivery_mode=2, # persistente
)
)
connection.close()
def callback(ch, method, properties, body): def callback(ch, method, properties, body):
try: try:
data = json.loads(body) data = json.loads(body)
filename = data.get("filename") filename = data.get("filename")
times = data.get("times", []) times = data.get("times", [])
webhook_url = data.get("webhookUrl")
url = data.get("url") url = data.get("url")
video_id = data.get("videoId") video_id = data.get("videoId")
@@ -47,11 +67,10 @@ def callback(ch, method, properties, body):
print(f"Erro no processamento: {e}") print(f"Erro no processamento: {e}")
try: try:
if webhook_url: publish_to_queue(payload)
resp = requests.post(webhook_url, json=payload, timeout=30) print(f"Mensagem publicada na fila '{RABBITMQ_UPLOAD_QUEUE}'.")
print(f"Webhook status: {resp.status_code}") except Exception as publish_err:
except Exception as wh_err: print(f"Erro ao publicar na fila '{RABBITMQ_UPLOAD_QUEUE}': {publish_err}")
print(f"Erro ao chamar webhook: {wh_err}")
ch.basic_ack(delivery_tag=method.delivery_tag) ch.basic_ack(delivery_tag=method.delivery_tag)
@@ -69,9 +88,7 @@ def main():
channel.queue_declare(queue=RABBITMQ_QUEUE, durable=True) channel.queue_declare(queue=RABBITMQ_QUEUE, durable=True)
channel.basic_qos(prefetch_count=1) channel.basic_qos(prefetch_count=1)
channel.basic_consume(queue=RABBITMQ_QUEUE, on_message_callback=callback) channel.basic_consume(queue=RABBITMQ_QUEUE, on_message_callback=callback)
print(' [*] Esperando mensagens. Para sair: CTRL+C') print(' [*] Esperando mensagens. Para sair: CTRL+C')
channel.start_consuming() channel.start_consuming()
if __name__ == "__main__": if __name__ == "__main__":