我在Google Cloud Run中使用crond + Alpine创建了一个cron
一切正常,但是几分钟后,当容器没有通过http收到任何请求时,cron将停止。
但是,如果您在至少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 && python3 test.py >> cron.txt 2>&1
就Cloud Run的设计而言,没有什么错。
没有请求时,Cloud Run容器将被挂起。这意味着您无法执行后台任务。Cloud Run是一个HTTP请求/响应系统。当Cloud Run返回HTTP响应并且没有其他请求正在处理时,您的CPU将停止。
启动之后,您应该只希望能够在请求范围内进行计算:如果容器实例不处理请求,则不会分配任何CPU。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句