Skip to main content

Google App Engine Error: Server Error but can't find error in logs

My deployed Flask web app keeps throwing “Error: Server Error The server encountered an error and could not complete your request. Please try again in 30 seconds”. However, I can’t find any error in the logs:

2022-05-30 00:35:40 default[20220529t172208]  [2022-05-30 00:35:40 +0000] [10] [INFO] Starting gunicorn 20.1.0
2022-05-30 00:35:40 default[20220529t172208]  [2022-05-30 00:35:40 +0000] [10] [INFO] Listening at: http://0.0.0.0:8081 (10)
2022-05-30 00:35:40 default[20220529t172208]  [2022-05-30 00:35:40 +0000] [10] [INFO] Using worker: sync
2022-05-30 00:35:40 default[20220529t172208]  [2022-05-30 00:35:40 +0000] [15] [INFO] Booting worker with pid: 15
2022-05-30 00:35:42 default[20220529t172208]  2022-05-30 00:35:42.693664: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /layers/google.python.pip/pip/lib
2022-05-30 00:35:42 default[20220529t172208]  2022-05-30 00:35:42.694475: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.
2022-05-30 00:35:44 default[20220529t172208]  [2022-05-30 00:35:44 +0000] [10] [INFO] Handling signal: term

There is a Tensorflow warning but it is not an error (see Could not load dynamic library 'cudart64_101.dll' on tensorflow CPU-only installation ). The application errors and server errors in the App Engine Dashboard aren't very helpful either.

Here are the content of my files:

main.py:

from flask import Flask,render_template,request,escape,send_from_directory,send_file #send_file,send_from_directory
import youtube_dl
import lyricsgenius as lg
import os
from spleeter.separator import Separator
from dotenv import load_dotenv

api_key = os.environ.get('GENIUS_API_KEY', 'default value')
genius = lg.Genius(api_key)

app = Flask(__name__)


@app.route("/", methods=['GET'])
def index():
    yt_url = request.args.get("yt_url","")
    artist = request.args.get("artist","")
    song = request.args.get("song","")
    split_audio_tag=""

    if yt_url:
        split_audio_tag = youtube_to_split_audio(yt_url)
        print('split audio tag:',split_audio_tag)

    if artist and song:
        lyrics = getlyrics(artist,song) ###

    else:
        lyrics = ""

    return ("""<form action="" method="get">
                Artist: <input type="text" name="artist">
                Song: <input type="text" name="song">
                YouTube URL: <input type="text" name="yt_url">
                <input type="submit" value="Go">
              </form>"""+"Lyrics: "+lyrics+split_audio_tag) 


def getlyrics(artist,song):
    try:
        artist = genius.search_artist(artist, max_songs=1)
        song = artist.song(song)
        return song.lyrics
    except:
        return "invalid input"


def youtube_to_split_audio(yt_url):
    # video_url = input("please enter youtube video url:")
    video_info = youtube_dl.YoutubeDL().extract_info(
        url = yt_url,download=False
        )
    filename = f"{video_info['title']}.mp3"
    options={
        'format': 'bestaudio/best',
        # 'quality': 7,
        'keepvideo':False,
        'outtmpl':'./static/yt_mp3/'+filename,
    }

    with youtube_dl.YoutubeDL(options) as ydl:
        ydl.download([video_info['webpage_url']])

    def split_vocals(mp3):
        separator = Separator('spleeter:2stems')
        separator.separate_to_file('./static/yt_mp3/'+mp3,
                                    './static/split_audio/'+mp3)
    split_vocals(filename)

   
    filepath = './static/split_audio/'+filename+'/'+filename[:-4]+'/accompaniment.wav'
    global split_audio_tag
    split_audio_tag = '<audio controls> <source src="'+filepath+'" type="audio/wav"> </audio>'
    print('audio tag:',split_audio_tag)
    return split_audio_tag



if __name__ == "__main__":
    app.run(host="127.0.0.1", port=8080, debug=True)

requirements.txt

click==7.1.2
Flask==2.0.3
youtube_dl
lyricsgenius
numpy==1.19.2
numba==0.53.0
protobuf==3.20.1
spleeter
python-dotenv
gunicorn

app.yaml

runtime: python38
entrypoint: gunicorn -b :$PORT main:app

env_variables:
  GENIUS_API_KEY: "xxxxxxxxxxxx"

What might be causing the server error?



source https://stackoverflow.com/questions/72428269/google-app-engine-error-server-error-but-cant-find-error-in-logs

Comments

Popular posts from this blog

Prop `className` did not match in next js app

I have written a sample code ( Github Link here ). this is a simple next js app, but giving me error when I refresh the page. This seems to be the common problem and I tried the fix provided in the internet but does not seem to fix my issue. The error is Warning: Prop className did not match. Server: "MuiBox-root MuiBox-root-1" Client: "MuiBox-root MuiBox-root-2". Did changes for _document.js, modified _app.js as mentioned in official website and solutions in stackoverflow. but nothing seems to work. Could someone take a look and help me whats wrong with the code? Via Active questions tagged javascript - Stack Overflow https://ift.tt/2FdjaAW

How to show number of registered users in Laravel based on usertype?

i'm trying to display data from the database in the admin dashboard i used this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count(); echo $users; ?> and i have successfully get the correct data from the database but what if i want to display a specific data for example in this user table there is "usertype" that specify if the user is normal user or admin i want to user the same code above but to display a specific usertype i tried this: <?php use Illuminate\Support\Facades\DB; $users = DB::table('users')->count()->WHERE usertype =admin; echo $users; ?> but it didn't work, what am i doing wrong? source https://stackoverflow.com/questions/68199726/how-to-show-number-of-registered-users-in-laravel-based-on-usertype

Why is my reports service not connecting?

I am trying to pull some data from a Postgres database using Node.js and node-postures but I can't figure out why my service isn't connecting. my routes/index.js file: const express = require('express'); const router = express.Router(); const ordersCountController = require('../controllers/ordersCountController'); const ordersController = require('../controllers/ordersController'); const weeklyReportsController = require('../controllers/weeklyReportsController'); router.get('/orders_count', ordersCountController); router.get('/orders', ordersController); router.get('/weekly_reports', weeklyReportsController); module.exports = router; My controllers/weeklyReportsController.js file: const weeklyReportsService = require('../services/weeklyReportsService'); const weeklyReportsController = async (req, res) => { try { const data = await weeklyReportsService; res.json({data}) console