[在django管理面板中,我创建了约1500个芹菜节拍式定期任务,其中100个具有相同的crontab时间表15 4 * 1 *
。所有这些都已启用。
但是在每月1日的04:15,其中一项定期任务没有向芹菜工作者发送应有的任务,而其他所有任务都在发送。从django admin panel开始,此定期任务的last_run_time为“无”,表示未触发。
我尝试将crontab时间表配置为15 * * * *
,然后在第15分钟成功运行。所以我想知道芹菜节拍式定期任务的数量是否受到限制?
celery.py
app = Celery('myapp', broker=os.getenv('BROKER_URL', None))
@signals.setup_logging.connect
def setup_logging(**kwargs):
"""Setup logging."""
pass
app.conf.ONCE = {
'backend': 'celery_once.backends.Redis',
'settings': {
'url': 'redis://localhost:6379/0',
'default_timeout': 60 * 60
}
}
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
from django.utils import timezone
app.conf.update(
CELERY_ALWAYS_EAGER=bool(os.getenv('CELERY_ALWAYS_EAGER', False)),
CELERY_DISABLE_RATE_LIMITS=True,
# CELERYD_MAX_TASKS_PER_CHILD=5,
CELERY_TASK_RESULT_EXPIRES=3600,
# Uncomment below if you want to use django-celery backend
# CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend',
CELERY_ACCEPT_CONTENT=['json'],
CELERY_TASK_SERIALIZER='json',
CELERY_RESULT_SERIALIZER='json',
# Uncomment below if you want to store the periodic task information in django-celery backend
CELERYBEAT_SCHEDULER = "django_celery_beat.schedulers.DatabaseScheduler",
# periodic tasks setup
CELERYBEAT_SCHEDULE={
'check_alerts_task': {
'task': 'devices.tasks.alert_task',
'schedule': 300.0 # run every 5 minutes
},
'weather_request': {
'task': 'organizations.tasks.weather_request',
'schedule': 60.0 # run every minute
},
'update_crontab': {
'task': 'devices.tasks.update_crontab',
'schedule': crontab(hour=0, minute=0)
},
'export_data_cleanup': {
'task': 'devices.tasks.delete_expiry_export_data',
'schedule': crontab(minute=0)
}
}
)
celery.log
[01/Jun/2020 04:15:09] INFO [celery.beat:271] Scheduler: Sending due task Report_first (reportAPI.tasks.report)
您的crontab实际上是错误的(分钟小时日月日工作日)