问题描述
我在docker容器中使用Django Cron package,在其中我指定了cron函数,如下所示:
class CreateSnapshots(CronJobBase):
RUN_EVERY_MINS = 15 # every 15 mins
schedule = Schedule(run_every_mins=RUN_EVERY_MINS)
code = 'crontab.cronjobs.CreateSnapshots'
def do(self):
print("Running CreateSnapshots Now..")
在用于Kubernetes的docker-entrypoint.sh中,我指定了这一点:
python manage.py runcrons
cronjob不会按照指示每隔15分钟运行一次,但是当我在容器重击中执行python manage.py runcrons
时,cronjob会立即运行。知道为什么它不能按规定每15分钟运行一次吗?或我缺少的配置?
我已在我的settings.py中指定了此名称:
CRON_CLASSES = [
"crontab.cronjobs.CreateSnapshots",]
我的Kubernetes部署规范:
apiVersion: extensions/v1beta1
kind: Deployment
Metadata:
annotations:
kompose.cmd: kompose convert -f docker-compose.yml
kompose.version: 1.14.0 (fa706f2)
creationTimestamp: null
labels:
io.kompose.service: cronjobs
name: cronjobs
spec:
replicas: 1
strategy:
type: Recreate
template:
Metadata:
creationTimestamp: null
labels:
io.kompose.service: cronjobs
spec:
imagePullSecrets:
- name: mycompregcred
containers:
- args:
- python
- manage.py
- runserver
- 0.0.0.0:8003
image: eu.gcr.io/my-project-123/cronjobs
name: cronjobs
ports:
- containerPort: 8003
resources: {}
volumeMounts:
- mountPath: /cronjobs
name: cronjobs-claim0
- mountPath: /cronjobs/common
name: cronjobs-claim1
restartPolicy: Always
volumes:
- name: cronjobs-claim0
persistentVolumeClaim:
claimName: cronjobs-claim0
- name: cronjobs-claim1
persistentVolumeClaim:
claimName: cronjobs-claim1
status: {}
还有我的docker-compose.yaml的cronjob应用程序部分:
cronjobs:
image: cronjobs
build: ./cronjobs
depends_on:
- db
我完整的docker-entrypoint.sh看起来像这样:
#!/bin/sh
wait-for-it db:5432
python manage.py collectstatic --no-input
python manage.py migrate django_cron
python manage.py runcrons
gunicorn cronjobs.wsgi -b 0.0.0.0:8000
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)