Cron остановлен при запуске в облаке Google

#python #google-cloud-platform #cron #google-cloud-run

# #python #google-облачная платформа #cron #google-cloud-run

Вопрос:

Я создал cron с помощью crond Alpine в Google Cloud Run

Все работает, но через несколько минут cron останавливается, когда контейнер не получает никаких запросов по http.

Но если вы не перезагрузите веб-страницу по крайней мере через 30 минут, cron остановится.

Есть идеи, что не так?

Это мой dockerfile.

 FROM python:3.8-alpine

RUN apk --no-cache add musl-dev linux-headers g  
RUN apk add --no-cache build-base dcron tzdata
RUN apk add --no-cache libffi-dev

COPY cronjobs /var/spool/cron/crontabs/root

WORKDIR /usr/src/app

COPY requirements.txt ./

ENV TZ="America/Montevideo"

RUN pip install --no-cache-dir -r requirements.txt

COPY . .

ENV PORT 8080
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0

RUN chmod a x startup.sh
CMD ["./startup.sh"]

 

cronjob

 */15 * * * * cd /usr/src/app amp;amp; python3 test.py >> cron.txt 2>amp;1
 

Ответ №1:

В том, как разработан Cloud Run, нет ничего плохого.

Когда запросов нет, контейнер облачного запуска приостанавливается. Это означает, что вы не можете выполнять фоновые задачи. Cloud Run — это система HTTP-запросов / ответов. Когда Cloud Run возвращает HTTP-ответ и другие обрабатываемые запросы отсутствуют, ваш процессор останавливается.

После запуска вы должны ожидать, что сможете выполнять вычисления только в рамках запроса: экземпляру контейнера не выделяется какой-либо процессор, если он не обрабатывает запрос.

Контракт на выполнение контейнера