fix(cron): Add backoff
This commit is contained in:
@@ -6,6 +6,7 @@ metadata:
|
|||||||
data:
|
data:
|
||||||
download.py: |
|
download.py: |
|
||||||
import os
|
import os
|
||||||
|
import time
|
||||||
from netCDF4 import Dataset
|
from netCDF4 import Dataset
|
||||||
import re
|
import re
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
@@ -83,15 +84,23 @@ data:
|
|||||||
for fname in fList:
|
for fname in fList:
|
||||||
savename = os.path.join(outdir, fname.split("/")[-1].split(".")[0] + ".nc")
|
savename = os.path.join(outdir, fname.split("/")[-1].split(".")[0] + ".nc")
|
||||||
print(savename)
|
print(savename)
|
||||||
|
retries = 4
|
||||||
|
for attempt in range(retries):
|
||||||
try:
|
try:
|
||||||
try:
|
try:
|
||||||
copy_thredds_file(fname, savename)
|
copy_thredds_file(fname, savename)
|
||||||
except:
|
except:
|
||||||
fname = re.sub("sfc", "2_5km", fname)
|
alt_fname = re.sub("sfc", "2_5km", fname)
|
||||||
fname = re.sub("ncml", "nc", fname)
|
alt_fname = re.sub("ncml", "nc", alt_fname)
|
||||||
copy_thredds_file(fname, savename)
|
copy_thredds_file(alt_fname, savename)
|
||||||
except:
|
break
|
||||||
|
except Exception as e:
|
||||||
|
if attempt == retries - 1:
|
||||||
print("File not found: " + fname)
|
print("File not found: " + fname)
|
||||||
|
else:
|
||||||
|
backoff = min(2 ** attempt * 5, 60)
|
||||||
|
print(f"Retrying in {backoff}s... ({e})")
|
||||||
|
time.sleep(backoff)
|
||||||
---
|
---
|
||||||
apiVersion: batch/v1
|
apiVersion: batch/v1
|
||||||
kind: CronJob
|
kind: CronJob
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ data:
|
|||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
import requests
|
import requests
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
@@ -86,8 +87,10 @@ data:
|
|||||||
if attempt == retries - 1:
|
if attempt == retries - 1:
|
||||||
print(f"Failed: {filename} -> {e}")
|
print(f"Failed: {filename} -> {e}")
|
||||||
else:
|
else:
|
||||||
|
backoff = min(2 ** attempt * 5, 60)
|
||||||
if verbose:
|
if verbose:
|
||||||
print(f"Retrying {filename}... ({e})")
|
print(f"Retrying {filename} in {backoff}s... ({e})")
|
||||||
|
time.sleep(backoff)
|
||||||
|
|
||||||
|
|
||||||
def validate_dates(start, end):
|
def validate_dates(start, end):
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ data:
|
|||||||
if [[ ! -f "${target_file_name}" ]]; then
|
if [[ ! -f "${target_file_name}" ]]; then
|
||||||
if wget --spider --quiet "${url}"; then
|
if wget --spider --quiet "${url}"; then
|
||||||
echo "downloading ${url}"
|
echo "downloading ${url}"
|
||||||
wget -O "${target_file_name}" "${url}"
|
wget --tries=5 --waitretry=60 -O "${target_file_name}" "${url}"
|
||||||
else
|
else
|
||||||
echo "${target_file_name} $(red 'not found on server')"
|
echo "${target_file_name} $(red 'not found on server')"
|
||||||
fi
|
fi
|
||||||
@@ -70,7 +70,7 @@ metadata:
|
|||||||
namespace: cron
|
namespace: cron
|
||||||
spec:
|
spec:
|
||||||
schedule: 0 13 * * * # Everyday at 13:00, use https://crontab.guru
|
schedule: 0 13 * * * # Everyday at 13:00, use https://crontab.guru
|
||||||
concurrencyPolicy: "Forbid"
|
concurrencyPolicy: "Allow"
|
||||||
successfulJobsHistoryLimit: 10
|
successfulJobsHistoryLimit: 10
|
||||||
failedJobsHistoryLimit: 3
|
failedJobsHistoryLimit: 3
|
||||||
jobTemplate:
|
jobTemplate:
|
||||||
@@ -89,7 +89,7 @@ spec:
|
|||||||
- |
|
- |
|
||||||
nix-env -iA nixpkgs.wget nixpkgs.coreutils nixpkgs.bash nixpkgs.parallel
|
nix-env -iA nixpkgs.wget nixpkgs.coreutils nixpkgs.bash nixpkgs.parallel
|
||||||
bash /scripts/download.sh
|
bash /scripts/download.sh
|
||||||
chown -R 5000:5000 /data/hdd/data/norkyst
|
chown -R 10000:10000 /data/hdd/data/norkyst
|
||||||
chmod -R g+w /data/hdd/data/norkyst
|
chmod -R g+w /data/hdd/data/norkyst
|
||||||
resources: {}
|
resources: {}
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ data:
|
|||||||
if [[ ! -f "${target_file_name}" ]]; then
|
if [[ ! -f "${target_file_name}" ]]; then
|
||||||
if wget --spider --quiet "${url}"; then
|
if wget --spider --quiet "${url}"; then
|
||||||
echo "downloading ${url}"
|
echo "downloading ${url}"
|
||||||
wget -O "${target_file_name}" "${url}"
|
wget --tries=5 --waitretry=60 -O "${target_file_name}" "${url}"
|
||||||
else
|
else
|
||||||
echo "${target_file_name} $(red 'not found on server')"
|
echo "${target_file_name} $(red 'not found on server')"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user