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
Post a Comment