make sure all usages of subprocess have timeout duration

master
Aevann 2023-06-29 22:38:55 +03:00
parent dcf7c282a6
commit bac356db1d
3 changed files with 6 additions and 6 deletions

View File

@ -741,7 +741,7 @@ MAX_IMAGE_AUDIO_SIZE_MB = 8
MAX_IMAGE_AUDIO_SIZE_MB_PATRON = 16 MAX_IMAGE_AUDIO_SIZE_MB_PATRON = 16
MAX_VIDEO_SIZE_MB = 32 MAX_VIDEO_SIZE_MB = 32
MAX_VIDEO_SIZE_MB_PATRON = 100 MAX_VIDEO_SIZE_MB_PATRON = 100
MAX_IMAGE_CONVERSION_TIMEOUT = 30 # seconds SUBPROCESS_TIMEOUT_DURATION = 30 # seconds
ANTISPAM_BYPASS_IDS = set() ANTISPAM_BYPASS_IDS = set()

View File

@ -87,7 +87,7 @@ def process_audio(file, v):
new = old + '.' + extension new = old + '.' + extension
try: try:
subprocess.run(["ffmpeg", "-y", "-loglevel", "warning", "-nostats", "-i", old, "-map_metadata", "-1", "-c:a", "copy", new], check=True) subprocess.run(["ffmpeg", "-y", "-loglevel", "warning", "-nostats", "-i", old, "-map_metadata", "-1", "-c:a", "copy", new], check=True, timeout=SUBPROCESS_TIMEOUT_DURATION)
except: except:
os.remove(old) os.remove(old)
if os.path.isfile(new): if os.path.isfile(new):
@ -110,7 +110,7 @@ def process_audio(file, v):
def convert_to_mp4(old, new, vid, db): def convert_to_mp4(old, new, vid, db):
tmp = new.replace('.mp4', '-t.mp4') tmp = new.replace('.mp4', '-t.mp4')
try: try:
subprocess.run(["ffmpeg", "-y", "-loglevel", "warning", "-nostats", "-threads:v", "1", "-i", old, "-map_metadata", "-1", tmp], check=True, stderr=subprocess.STDOUT) subprocess.run(["ffmpeg", "-y", "-loglevel", "warning", "-nostats", "-threads:v", "1", "-i", old, "-map_metadata", "-1", tmp], check=True, stderr=subprocess.STDOUT, timeout=SUBPROCESS_TIMEOUT_DURATION)
except: except:
os.remove(old) os.remove(old)
if os.path.isfile(tmp): if os.path.isfile(tmp):
@ -156,7 +156,7 @@ def process_video(file, v):
gevent.spawn(convert_to_mp4, old, new, v.id, db) gevent.spawn(convert_to_mp4, old, new, v.id, db)
else: else:
try: try:
subprocess.run(["ffmpeg", "-y", "-loglevel", "warning", "-nostats", "-i", old, "-map_metadata", "-1", "-c:v", "copy", "-c:a", "copy", new], check=True) subprocess.run(["ffmpeg", "-y", "-loglevel", "warning", "-nostats", "-i", old, "-map_metadata", "-1", "-c:v", "copy", "-c:a", "copy", new], check=True, timeout=SUBPROCESS_TIMEOUT_DURATION)
except: except:
os.remove(old) os.remove(old)
if os.path.isfile(new): if os.path.isfile(new):
@ -212,7 +212,7 @@ def process_image(filename:str, v, resize=0, trim=False, uploader_id:Optional[in
params.append(filename) params.append(filename)
try: try:
subprocess.run(params, timeout=MAX_IMAGE_CONVERSION_TIMEOUT) subprocess.run(params, timeout=SUBPROCESS_TIMEOUT_DURATION)
except: except:
os.remove(filename) os.remove(filename)
if has_request: if has_request:

View File

@ -655,7 +655,7 @@ def submit_post(v:User, sub=None):
name = f'/images/{time.time()}'.replace('.','') + '.webp' name = f'/images/{time.time()}'.replace('.','') + '.webp'
subprocess.run(['ffmpeg', '-y', '-loglevel', 'warning', subprocess.run(['ffmpeg', '-y', '-loglevel', 'warning',
'-i', p.url, '-vf', "scale='iw':-2", '-i', p.url, '-vf', "scale='iw':-2",
'-q:v', '3', '-frames:v', '1', name], check=True) '-q:v', '3', '-frames:v', '1', name], check=True, timeout=SUBPROCESS_TIMEOUT_DURATION)
p.posterurl = name p.posterurl = name
name2 = name.replace('.webp', 'r.webp') name2 = name.replace('.webp', 'r.webp')