Cron 在 google 云 运行 中停止

Cron stopped in google cloud run

我在 Google Cloud 运行

中使用 crond + Alpine 创建了一个 cron

一切正常,但几分钟后,当容器没有收到任何通过 http 的请求时,cron 停止。

但是如果您在 cron 停止至少 30 分钟后没有重新加载网页。

知道哪里出了问题吗?

这是我的 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"]

定时任务

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

Cloud 运行 的设计没有任何问题。

当没有请求时,Cloud 运行 容器被挂起。这意味着您不能执行后台任务。 Cloud 运行 是一个 HTTP Request/Response 系统。当 Cloud 运行 returns HTTP 响应并且没有其他请求正在处理时,您的 CPU 已停止。

After startup, you should only expect to be able to do computation within the scope of a request: a container instance does not have any CPU allocated if it is not processing a request.

Container runtime contract