Celery收到未注册的类型为“api.tasks.cl_daily_statistics'”的任务。但它的任务已注册

时间:2018-06-07 11:48:29

标签: python django celery

我在芹菜任务上遇到麻烦,当我的Docker容器出现此错误时

celery_1  | [2018-06-07 11:35:26,302: ERROR/MainProcess] Received unregistered task of type 'api.tasks.cl_daily_statistics'.
celery_1  | The message has been ignored and discarded.
celery_1  |
celery_1  | Did you remember to import the module containing this task?
celery_1  | Or maybe you're using relative imports?
celery_1  |
celery_1  | Please see
celery_1  | http://docs.celeryq.org/en/latest/internals/protocol.html
celery_1  | for more information.
celery_1  |
celery_1  | The full contents of the message body was:
celery_1  | b'[[], {}, {"chain": null, "chord": null, "errbacks": null, "callbacks": null}]' (77b)
celery_1  | Traceback (most recent call last):
celery_1  |   File "/usr/local/lib/python3.4/site-packages/celery/worker/consumer/consumer.py", line 561, in on_task_received
celery_1  |     strategy = strategies[type_]
celery_1  | KeyError: 'api.tasks.cl_daily_statistics'

但是,如果我运行这个

root@vm115056:/back_new# docker-compose exec celery bash
root@da2b33f2d7a1:/app# celery -A backend inspect registered
-> celery@da2b33f2d7a1: OK
    * Daily email statistics
    * FB token status
    * MD token status
    * OK token status
    * TW token status
    * VK token status
    * api.tasks.message_send
    * api.views.chord_result
    * backend.celery.debug_task
    * stats.tasks.test

它的芹菜任务,函数daily_statistics在其他模块中,在tasks.py中它只导入并包装任务装饰器

@task(name='Daily email statistics')
def cl_daily_statistics():
    daily_statistics()



def daily_statistics():
    try:
        count_users = UserProfile.objects.count()
        count_created_messages = Message.objects.count()
        count_scheduled_messages = Message.objects.filter(status='scheduled').count()
        count_sended_messages = Message.objects.filter(status='done').count()
        email_text = 'Количество пользователей: %d\nКоличество созданных постов: %d\nКоличество запланированных постов: %d\nКоличество отправленных постов: %d\n'\
                    % (count_users, count_created_messages, count_scheduled_messages, count_sended_messages)
        email = EmailMessage(
            'Ежедневный отчёт',
            email_text,
            SERVER_EMAIL,
            EMAIL_ADMINS
        )
        email.send()
    except Exception as e:
        logger.info('%s%s' % (exception_info(), e))

为什么芹菜说如果没有被认可的任务呢? 感谢' S

0 个答案:

没有答案