• Django Celerybeat日志报错处理('NoneType' object has no attribute 'is_due')


    image.png

    分析原因

    1. 按照以上意思,Django celerybeat在加载任务的时候遇见任务中有无法指定执行时间的任务,表示为NoneType类型。

    2. 错误code如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    [2018-04-20 17:38:29,294: CRITICAL/MainProcess] beat raised exception <class 'AttributeError'>: AttributeError("'NoneType' object has no attribute 'is_due'",)
    Traceback (most recent call last):
      File "/root/venv3/lib/python3.6/site-packages/celery/apps/beat.py", line 107, in start_scheduler
        service.start()
      File "/root/venv3/lib/python3.6/site-packages/celery/beat.py", line 537, in start
        interval = self.scheduler.tick()
      File "/root/venv3/lib/python3.6/site-packages/celery/beat.py", line 255, in tick
        for in values(self.schedule)]
      File "/root/venv3/lib/python3.6/site-packages/celery/beat.py", line 255, in <listcomp>
        for in values(self.schedule)]
      File "/root/venv3/lib/python3.6/site-packages/django_celery_beat/schedulers.py", line 101, in is_due
        return self.schedule.is_due(self.last_run_at)
    AttributeError: 'NoneType' object has no attribute 'is_due'
    [2018-04-20 17:38:29,295: WARNING/MainProcess] Traceback (most recent call last):
    [2018-04-20 17:38:29,295: WARNING/MainProcess] File "/root/venv3/bin/celery", line 11, in <module>
    [2018-04-20 17:38:29,295: WARNING/MainProcess] sys.exit(main())
    [2018-04-20 17:38:29,295: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/__main__.py", line 14, in main
    [2018-04-20 17:38:29,296: WARNING/MainProcess] _main()
    [2018-04-20 17:38:29,296: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/celery.py", line 326, in main
    [2018-04-20 17:38:29,296: WARNING/MainProcess] cmd.execute_from_commandline(argv)
    [2018-04-20 17:38:29,296: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/celery.py", line 488, in execute_from_commandline
    [2018-04-20 17:38:29,297: WARNING/MainProcess] super(CeleryCommand, self).execute_from_commandline(argv)))
    [2018-04-20 17:38:29,297: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/base.py", line 281, in execute_from_commandline
    [2018-04-20 17:38:29,297: WARNING/MainProcessreturn self.handle_argv(self.prog_name, argv[1:])
    [2018-04-20 17:38:29,297: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/celery.py", line 480, in handle_argv
    [2018-04-20 17:38:29,297: WARNING/MainProcessreturn self.execute(command, argv)
    [2018-04-20 17:38:29,297: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/celery.py", line 412, in execute
    [2018-04-20 17:38:29,298: WARNING/MainProcess] ).run_from_argv(self.prog_name, argv[1:], command=argv[0])
    [2018-04-20 17:38:29,298: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/base.py", line 285, in run_from_argv
    [2018-04-20 17:38:29,298: WARNING/MainProcess] sys.argv if argv is None else argv, command)
    [2018-04-20 17:38:29,298: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/base.py", line 368, in handle_argv
    [2018-04-20 17:38:29,298: WARNING/MainProcessreturn self(*args, **options)
    [2018-04-20 17:38:29,298: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/base.py", line 244, in __call__
    [2018-04-20 17:38:29,299: WARNING/MainProcess] ret = self.run(*args, **kwargs)
    [2018-04-20 17:38:29,299: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/bin/beat.py", line 107, in run
    [2018-04-20 17:38:29,299: WARNING/MainProcessreturn beat().run()
    [2018-04-20 17:38:29,299: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/apps/beat.py", line 79, in run
    [2018-04-20 17:38:29,299: WARNING/MainProcess] self.start_scheduler()
    [2018-04-20 17:38:29,299: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/apps/beat.py", line 107, in start_scheduler
    [2018-04-20 17:38:29,299: WARNING/MainProcess] service.start()
    [2018-04-20 17:38:29,300: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/beat.py", line 537, in start
    [2018-04-20 17:38:29,300: WARNING/MainProcess] interval = self.scheduler.tick()
    [2018-04-20 17:38:29,300: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/beat.py", line 255, in tick
    [2018-04-20 17:38:29,300: WARNING/MainProcessfor in values(self.schedule)]
    [2018-04-20 17:38:29,300: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/celery/beat.py", line 255, in <listcomp>
    [2018-04-20 17:38:29,300: WARNING/MainProcessfor in values(self.schedule)]
    [2018-04-20 17:38:29,301: WARNING/MainProcess] File "/root/venv3/lib/python3.6/site-packages/django_celery_beat/schedulers.py", line 101, in is_due
    [2018-04-20 17:38:29,301: WARNING/MainProcessreturn self.schedule.is_due(self.last_run_at)
    [2018-04-20 17:38:29,301: WARNING/MainProcess] AttributeError
    [2018-04-20 17:38:29,301: WARNING/MainProcess] :
    [2018-04-20 17:38:29,301: WARNING/MainProcess'NoneType' object has no attribute 'is_due'

    3.第一条分析的基本正确:被指定执行的任务没有执行的时间戳导致。

    4.数据库信息对比后直接确认该问题:由于该任务不想执行,所以将crontab和秒定时给去掉,所以导致以上错误。

    image.png

    解决方案

    1. 由于不想设置时间,因此采用取消激活方案。

    2. 数据库激活取消操作:如下图

    image.png

    结果

    1.正常运行image.png

  • 相关阅读:
    第06组 每周小结 (1/3)
    第06组 Beta冲刺 总结
    第06组 Beta冲刺(5/5)
    爬虫第六次作业
    第06组 Beta冲刺 (4/5)
    第06组 Beta冲刺 (3/5)
    第06组 Beta冲刺 (2/5)
    《机器学习》第二次作业——第四章学习记录和心得
    软工实践个人总结
    第09组 每周小结 (3/3)
  • 原文地址:https://www.cnblogs.com/zksfyz/p/8949418.html
Copyright © 2020-2023  润新知