[Python] Erro 502 bad gateway ao acessar uma api básica flask, como corrijo isso?

Discussão em 'Python' iniciado por Stack, Fevereiro 19, 2025.

  1. Stack

    Stack Membro Participativo

    Sou um dev python iniciante fazendo meu primeiro serviço para uma cliente freelance, ela precisa que frases sejam faladas por uma IA em uma lavanderia e que a música seja pausada para uma frase ser dita, a cada 2 minutos. Já tentei fazer tudo em uma skill da alexa mas parece que não é possível, então estou tentando criar uma api flask para reprodução dos áudios e fazer com que a alexa apenas acesse o link da api com uma skill, mas quando acesso o link dá o erro 502 bad gateway. Eu criei o arquivo YAML, o arquivo main.py com o código para reprodução dos áudios e o arquivo requirements.txt que contém os nomes dos aplicativos usados no código e suas versões, e fiz o deploy para o google cloud usando o prompt de comando, e fiz o upload dos arquivos de áudio mp3 para a pasta base do bucket. Eu nem sei dizer se dessa forma as músicas serão interrompidas enquanto um áudio é reproduzido. Também aceito sugestões de outras formas para isso ser feito.

    código do arquivo main.py:

    from flask import Flask, jsonify from google.cloud import storage import os import threading import time import pygame from queue import Queue

    Inicializa o mixer do Pygame


    pygame.mixer.init()

    Configuração do Google Cloud Storage


    bucket_name = "removi o nome pra postar aqui" storage_client = storage.Client() bucket = storage_client.get_bucket(bucket_name) blobs = bucket.list_blobs()

    app = Flask(name)

    Fila de reprodução de áudio


    audio_queue = Queue()

    def download_audio(blob_name): blob = bucket.blob(blob_name) blob.download_to_filename(blob_name) return blob_name

    def play_audio_from_queue(): while True: blob_name = audio_queue.get() if blob_name is None: break file_path = download_audio(blob_name) pygame.mixer.music.load(file_path) pygame.mixer.music.play() while pygame.mixer.music.get_busy(): time.sleep(1) audio_queue.task_done() os.remove(file_path) # Remove o arquivo local após a reprodução

    Inicia a thread da fila de reprodução de áudio


    threading.Thread(target=play_audio_from_queue, daemon=True).start()

    def enqueue_all_audios(): while True: for blob in blobs: audio_queue.put(blob.name) time.sleep(120) # Espera 120 segundos (2 minutos) antes de enfileirar o próximo áudio

    @app.route('/start', methods=['GET']) def start_playing(): threading.Thread(target=enqueue_all_audios, daemon=True).start() return jsonify({"message": "Reprodução iniciada!"})

    if name == 'main': app.run(host='0.0.0.0', port=8080)

    Continue reading...

Compartilhe esta Página