#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-ответ и другие обрабатываемые запросы отсутствуют, ваш процессор останавливается.
После запуска вы должны ожидать, что сможете выполнять вычисления только в рамках запроса: экземпляру контейнера не выделяется какой-либо процессор, если он не обрабатывает запрос.