Remove webhook e adiciona push na fila
This commit is contained in:
39
main.py
39
main.py
@@ -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('TO_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__":
|
||||||
|
|||||||
Reference in New Issue
Block a user