Catch SIGINT between tile builds

Signed-off-by: fly <merspieler@airmail.cc>
This commit is contained in:
fly 2021-03-09 13:13:17 +00:00
parent f2ba15a3d2
commit 9e6693087e

View file

@ -97,77 +97,77 @@ def cleanup():
run("rm -rf projects/worldbuild-" + name, shell=True)
running = True
while running:
if api != None:
name = api_get_job(action, api, api_token)
else:
name = get_job(action, host, port)
try:
run("mkdir -p projects/worldbuild-" + name, shell=True)
run("cp projects/worldbuild/params.ini projects/worldbuild-" + name + "/", shell=True)
if global_db:
db_name = prefix + "worldbuild"
try:
running = True
while running:
if api != None:
name = api_get_job(action, api, api_token)
else:
if get_south(name) >= 80:
db_name = prefix + "n-pole"
elif get_south(name) < -80:
db_name = prefix + "s-pole"
name = get_job(action, host, port)
run("mkdir -p projects/worldbuild-" + name, shell=True)
run("cp projects/worldbuild/params.ini projects/worldbuild-" + name + "/", shell=True)
if global_db:
db_name = prefix + "worldbuild"
else:
match = re.match(r"[0-9]{1,7}", name)
if match == None:
print("ERROR: Invalid tile name")
sys.exit(1)
if get_south(name) >= 80:
db_name = prefix + "n-pole"
elif get_south(name) < -80:
db_name = prefix + "s-pole"
else:
db_name = prefix + get_area_name(get_south(name), get_west(name), major=True)
match = re.match(r"[0-9]{1,7}", name)
if match == None:
print("ERROR: Invalid tile name")
sys.exit(1)
else:
db_name = prefix + get_area_name(get_south(name), get_west(name), major=True)
if get_west(name) < 0:
bounds = "bounds=*"
else:
bounds = "bounds="
if get_west(name) < 0:
bounds = "bounds=*"
else:
bounds = "bounds="
bounds += str(get_west(name)) + "_" + str(get_south(name)) + "_" + str(get_east(name)) + "_" + str(get_north(name))
bounds += str(get_west(name)) + "_" + str(get_south(name)) + "_" + str(get_east(name)) + "_" + str(get_north(name))
run("sed -i 's/DB_NAME.*/DB_NAME = \"" + db_name + "\"/' projects/worldbuild-" + name + "/params.ini", shell=True)
run("sed -i 's/DB_NAME.*/DB_NAME = \"" + db_name + "\"/' projects/worldbuild-" + name + "/params.ini", shell=True)
run("echo '" + bounds + "' > projects/worldbuild-" + name + "/settings", shell=True)
run("echo '" + bounds + "' > projects/worldbuild-" + name + "/settings", shell=True)
if not quiet:
print("Building " + name)
if not quiet:
print("Building " + name)
logpath = "projects/worldbuild/output/" + get_area_name(get_south(name), get_west(name), major=True) + "/" + get_area_name(get_south(name), get_west(name)) + "/"
run("mkdir -p " + logpath, shell=True)
with open(logpath + name + "-" + strftime("%Y%m%d-%H%M") + ".log", "w") as log_file:
build = Popen("./build -S 10 -t 1 worldbuild-" + name, stdout=log_file, stderr=STDOUT, shell=True, start_new_session=True)
logpath = "projects/worldbuild/output/" + get_area_name(get_south(name), get_west(name), major=True) + "/" + get_area_name(get_south(name), get_west(name)) + "/"
run("mkdir -p " + logpath, shell=True)
with open(logpath + name + "-" + strftime("%Y%m%d-%H%M") + ".log", "w") as log_file:
build = Popen("./build -S 10 -t 1 worldbuild-" + name, stdout=log_file, stderr=STDOUT, shell=True, start_new_session=True)
build.wait()
cleanup()
if api != None:
api_send_status(name, "done", api, api_token)
else:
send_status(name, "done", host, port)
except KeyboardInterrupt:
if not quiet:
print("Graceful shutdown triggered. To force immedate stop, press Ctrl+C again")
running = False
try:
build.wait()
cleanup()
if api != None:
api_send_status(name, "done", api, api_token)
else:
send_status(name, "done", host, port)
except KeyboardInterrupt:
if not quiet:
print("Graceful shutdown triggered. To force immedate stop, press Ctrl+C again")
running = False
try:
build.wait()
cleanup()
if api != None:
api_send_status(name, "done", api, api_token)
else:
send_status(name, "done", host, port)
except KeyboardInterrupt:
#TODO doesn't work
print("Forcing shutdown...")
build.terminate()
sleep(5)
build.kill()
sleep(5)
cleanup()
sys.exit(0)
#TODO doesn't work
print("Forcing shutdown...")
build.terminate()
sleep(5)
build.kill()
sleep(5)
cleanup()
sys.exit(0)