From cecb6f4e156942aa050f594bfa861ffae65ea03b Mon Sep 17 00:00:00 2001
From: nickb <nickb@ssec.wisc.edu>
Date: Tue, 23 Feb 2021 16:48:42 +0000
Subject: [PATCH] timeout if gridding + tiling ever takes longer than 10
 minutes (#26)

---
 gridded_glm/libexec/_minute_gridder.py | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/gridded_glm/libexec/_minute_gridder.py b/gridded_glm/libexec/_minute_gridder.py
index 2238633..c24cb71 100644
--- a/gridded_glm/libexec/_minute_gridder.py
+++ b/gridded_glm/libexec/_minute_gridder.py
@@ -44,6 +44,7 @@ import shutil
 import atexit
 from glob import glob
 import socket
+import signal
 from netCDF4 import Dataset
 #from multiprocessing import freeze_support # https://docs.python.org/2/library/multiprocessing.html#multiprocessing.freeze_support
 from functools import partial
@@ -300,8 +301,13 @@ def add_gglm_attrs(netcdf_filename, input_filenames):
     except:
         log.error("could not add CSPP Geo GGLM attributes to {}".format(netcdf_filename))
 
+def alarm_handler(signum, frame):
+  raise OSError("Timeout exceeded!")
 
 if __name__ == '__main__':
+    signal.signal(signal.SIGALRM, alarm_handler)
+    signal.alarm(10*60) # timeout if we're not done after 10 minutes
+
 #    freeze_support() # nb. I don't think this is needed as we're not making windows execs at this time
     parser = create_parser()
     args = parser.parse_args()
-- 
GitLab