Dan*_*ken 3 python django cron docker
我正在尝试使用 django_crontab 每天运行两次计划脚本。我在ubuntu 18上本地测试过,可以用。但是,当我尝试在服务器上运行它(在远程 Ubuntu 服务器上运行 Django 项目的 python Docker 映像)时,什么也没有发生。这是我的代码:
setting.py:
INSTALLED_APPS = (
.
.
'django_crontab',
.
.
.
)
RONJOBS = [
('0 9,21 * * *', 'appname.folder.file.start')
]
Run Code Online (Sandbox Code Playgroud)
我通过以下方式执行了 cron:
$ python manage.py crontab add .
Run Code Online (Sandbox Code Playgroud)
并查看活动作业:
$ python manage.py crontab show
f95300a5599dc7687ac79ab51c8bb33c -> ('0 9,21 * * *', 'appname.folder.file.start')
Run Code Online (Sandbox Code Playgroud)
def start():
logger.info(" process begins!")
do_something()
Run Code Online (Sandbox Code Playgroud)
注意'start' 函数已在生产服务器中进行了测试并且可以正常工作。
我还尝试通过添加 CRONJOB 的路径来映射 chronjob 日志setting.py:
('0 9,21 * * *', 'appname.folder.file.start','>> /Logs/crontab.log')
Run Code Online (Sandbox Code Playgroud)
但该文件 crontab.log未创建。
有什么建议么?谢谢!
Gla*_*arx 10
我遇到了同样的问题,这就是我为解决前面提到的问题所做的:
cron在容器中。service cron start到CMDDockerfile 中。python manage.py crontab add到CMDDockerfile 中。启动容器后,我检查了 cronjobs 是否是使用命令python manage.py crontab show和创建的crontab -l。在这两种情况下我都可以看到 cronjobs。
我再次测试了它并且它可以工作。我使用了以下内容:
docker-compose
command: bash -c "service cron start && python manage.py crontab add && gunicorn serv.wsgi:application --bind 0.0.0.0:8000 --timeout 600 --workers 5"
或 Django 的开发服务器。python manage.py runserver 0:8000
Dockerfile
FROM python:3.9
RUN apt-get -y update
# Install cron.
RUN apt-get install -y cron && touch /var/log/cron.log
WORKDIR /app
COPY ./docker/python/django/requirements.txt /app/
RUN pip install -r requirements.txt
COPY ./app/ /app/```
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5315 次 |
| 最近记录: |