在 Docker 容器中运行 Django crontab 时出现问题

问题描述 投票:0回答:1

我试图在我的 django 应用程序中创建一个简单的 cron,但是尽管正确添加和启动,cron 不执行,也不保存日志

设置.py


INSTALLED_APPS = [
    'django_crontab',
]

CRONJOBS = [
    ('*/1 * * * *', 'myapp.cron.test_func', '>> /var/log/cron.log 2>&1'),
]

Dockerfile

python:3.12
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

WORKDIR /app

COPY requirements.txt .

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

RUN apt-get update && \
    apt-get install -y cron && \
    apt-get clean

RUN touch /var/log/cron.log

docker-entrypoint.sh


python3 manage.py crontab add
service cron start

exec "$@"

启动容器时,命令返回以下结果:

crontab -l

*/1 * * * * /usr/local/bin/python3 /app/manage.py crontab run >> /var/log/cron.log 2>&1 # my_project 的 django-cronjobs

python3 manage.py crontab show

-> ('*/1 * * * *', 'myapp.cron.test_func', '>> /var/log/cron.log 2>&1')

service cron status

cron 正在运行。

使用命令“python3 manage.py crontab run ”手动运行 cron 工作正常,日志为空。

python django docker cron django-crontab
1个回答
0
投票

django-crontab 项目最后一次更新是在 2016 年。8 年前。这可能是一个死项目。

我建议实现一个自定义 django 管理命令并以老式方式(crontab -e)将其注册到 crontab。

在 bash 文件中,设置虚拟环境,然后调用类似于下面的自定义管理脚本 python manage.py --settings=.settings

安排脚本在 cron 中运行(例如): 30 * * * * /.sh

如果将 bash 文件添加到 git,请确保设置 .sh 文件以保持执行。例如,C:\Temp\TestRepo>git update-index --chmod=+x foo.sh

© www.soinside.com 2019 - 2024. All rights reserved.