【问题标题】:Exception running celery异常运行芹菜
【发布时间】:2018-12-26 10:34:33
【问题描述】:

我正在尝试将 celery 4.2 版集成到 django 项目中。根据文档,我已经在 init.py 和 celery.py 中进行了更改,但是当我运行 celery 时:

python -m celery -A instaguide beat -l debug 

我得到以下异常。我不确定它缺少什么。我在 project.settings 中定义的唯一 CELERY_ 设置是 CELERY_BROKER_URL,它不会抱怨未连接到代理。所以这是我在我的设置或其他地方缺少的东西。有什么线索吗?

celery-worker    | k (most recent call last):
celery-worker    |   File "/usr/local/lib/python2.7/runpy.py", line 174, in _run_module_as_main
celery-worker    |     "__main__", fname, loader, pkg_name)
celery-worker    |   File "/usr/local/lib/python2.7/runpy.py", line 72, in _run_code
celery-worker    |     exec code in run_globals
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/__main__.py", line 20, in <module>
celery-worker    |     main()
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/__main__.py", line 16, in main
celery-worker    |     _main()
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/bin/celery.py", line 322, in main
celery-worker    |     cmd.execute_from_commandline(argv)
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/bin/celery.py", line 496, in execute_from_commandline
celery-worker    |     super(CeleryCommand, self).execute_from_commandline(argv)))
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/bin/base.py", line 275, in execute_from_commandline
celery-worker    |     return self.handle_argv(self.prog_name, argv[1:])
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/bin/celery.py", line 488, in handle_argv
celery-worker    |     return self.execute(command, argv)
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/bin/celery.py", line 420, in execute
celery-worker    |     ).run_from_argv(self.prog_name, argv[1:], command=argv[0])
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/bin/worker.py", line 223, in run_from_argv
celery-worker    |     return self(*args, **options)
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/bin/base.py", line 238, in __call__
celery-worker    |     ret = self.run(*args, **kwargs)
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/bin/worker.py", line 257, in run
celery-worker    |     **kwargs)
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/worker/worker.py", line 96, in __init__
celery-worker    |     self.app.loader.init_worker()
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/loaders/base.py", line 114, in init_worker
celery-worker    |     self.import_default_modules()
celery-worker    |   File "/usr/local/lib/python2.7/site-packages/celery/loaders/base.py", line 108, in import_default_modules
celery-worker    |     raise response
celery-worker    | celery.schedules.ParseException: empty filter

【问题讨论】:

  • 您是否运行过命令:python manage.py makemigrationspython manage.py migrate ??
  • @UsmanMaqbool:如果我不存储结果,为什么还要这样做?
  • 定时模型保存一些 celery 数据
  • @UsmanMaqbool DatabaseScheduler 是默认的吗?

标签: django celery celerybeat


【解决方案1】:

我发现了问题所在。如果使用的是默认节拍调度器,则需要定义节拍调度器配置与至少一个计划任务。否则,如果使用数据库调度程序,那么它需要 django-celery-beat 来创建并将调度存储在数据库中。因此,对于可重复的任务,至少需要 1 个条目。此外,@periodic_task 注释已被弃用,并将在 celery-5 中删除,它似乎不起作用。

app.conf.beat_schedule = {
    # Executes every minute
    'add-every-monday-morning': {
        'task': 'users.tasks.test_task',
        'schedule': crontab(hour="*", minute="*"),
        'args': (),
    },
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-19
    • 2020-04-25
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2019-02-26
    • 2015-10-09
    相关资源
    最近更新 更多