Задача кочевника убить
У меня есть две задачи в группе задач 1) задача БД для вызова БД и 2) приложение, которому нужен БД для работы.
Оба запускаются параллельно, и задачи db занимают немного времени, но к тому времени приложение распознает, что db не запущен, и убивает задачу db. Любые решения? Пожалуйста, порекомендуйте.
1 ответ
Довольно часто иметь сценарий точки входа, который проверяет, здоров ли БД. Вот скрипт, который я использовал раньше:
#!/bin/sh
set -e
cmd="$*"
postgres_ready() {
if test -z "${NO_DB}"
then
PGPASSWORD="${RDS_PASSWORD}" psql -h "${RDS_HOSTNAME}" -U "${RDS_USERNAME}" -d "${RDS_DB_NAME}" -c '\l'
return $?
else
echo "NO_DB Postgres will pretend to be up"
return 0
fi
}
until postgres_ready
do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
>&2 echo "Postgres is up - continuing..."
exec "${cmd}"
Вы можете сохранить его как entrypoint.sh
и запустите его с помощью сценария запуска приложения в качестве аргумента. например: entrypoint.sh python main.py