芹菜定期任务的一部分未触发

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

[在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)
python django celery django-celery celerybeat
1个回答
0
投票

您的crontab实际上是错误的(分钟小时日月日工作日)

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