1

我必须按时执行任务,因为我正在使用 django_cron。在设置中:

INSTALLED_APPS = [
    'mailsnake',
    'corsheaders',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'Avaana_web',
    'rest_framework',
    'rest_framework.authtoken',
    'django_cron',

]

和 cron.py

    from django_cron import CronJobBase, Schedule,cronScheduler
    import datetime,os
    class MyCronJob(CronJobBase):
        RUN_EVERY_MINS = .3
        RETRY_AFTER_FAILURE_MINS = 5
        ALLOW_PARALLEL_RUNS = True
        schedule = Schedule(run_every_mins=RUN_EVERY_MINS,      
  retry_after_failure_mins=RETRY_AFTER_FAILURE_MINS)
        code = 'my_app.my_cron_job'
        def do(self):
            print("hello")

但是当我跑步时

$ python manage.py runcrons
 hello

只有一次输出显示并结束。

我如何在每 30 秒后获得输出。

4

1 回答 1

1

几件事:

一个。看起来您的 cron 作业配置不正确。根据文档,您需要在设置路径中创建一个 CRON_CLASSES 列表,指向您的 cron 类的完全限定包名称,如下所示:

CRON_CLASSES = [
    "my_app.cron.MyCronJob",
    # ...
]

湾。此外,通过 python manage 运行它并不意味着它会继续运行多次。您可能仍需要从 cron 作业运行“python manage.py runcrons”。当您调用 manage.py runcrons 时,您的计划将仅决定它是否需要运行。在此处查看更多详细信息:http: //django-cron.readthedocs.io/en/latest/installation.html

于 2016-11-12T19:25:47.407 回答