Ошибка командной строки Celery autodiscover_tasks

#python #python-3.x #celery

#python #python-3.x #сельдерей

Вопрос:

Когда я пытаюсь запустить celery 4.2 с Mac Mojave (10.14) и python 3.8. Я получаю следующую ошибку. Пожалуйста, помогите мне понять, что я делаю неправильно или в чем ошибка.

Ниже приведен мой код для приложения celery с Redis:

 import celery

app = celery.Celery('tasks', broker='redis://')

app.autodiscover_tasks()

@app.task
def task1(ids):
    time.sleep(1)
    if not ids:
        return "ids can not be empty"
    print('Building dgraph through API', ids)
    funcsysc = funcsysc()
  

Команда для запуска celery:

 celery -A tasks -l info worker
  

Ошибка:

 Traceback (most recent call last):
  File "/Users/tss/Desktop/tss/tssvenv/bin/celery", line 8, in <module>
    sys.exit(main())
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/__main__.py", line 16, in main
    _main()
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/bin/celery.py", line 322, in main
    cmd.execute_from_commandline(argv)
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/bin/celery.py", line 496, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/bin/base.py", line 275, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/bin/celery.py", line 488, in handle_argv
    return self.execute(command, argv)
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/bin/celery.py", line 416, in execute
    return cls(
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/bin/worker.py", line 223, in run_from_argv
    return self(*args, **options)
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/bin/base.py", line 238, in __call__
    ret = self.run(*args, **kwargs)
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/bin/worker.py", line 252, in run
    worker = self.app.Worker(
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/worker/worker.py", line 96, in __init__
    self.app.loader.init_worker()
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/loaders/base.py", line 114, in init_worker
    self.import_default_modules()
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/loaders/base.py", line 108, in import_default_modules
    raise response
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/utils/dispatch/signal.py", line 288, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/vine/promises.py", line 143, in __call__
    return self.throw()
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/vine/promises.py", line 140, in __call__
    retval = fun(*final_args, **final_kwargs)
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/app/base.py", line 673, in _autodiscover_tasks
    return self._autodiscover_tasks_from_fixups(related_name)
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/app/base.py", line 682, in _autodiscover_tasks_from_fixups
    return self._autodiscover_tasks_from_names([
  File "/Users/tss/Desktop/tss/tssvenv/lib/python3.8/site-packages/celery/app/base.py", line 684, in <listcomp>
    for pkg in fixup.autodiscover_tasks()
AttributeError: 'NoneType' object has no attribute 'autodiscover_tasks'
  

Комментарии:

1. можете ли вы поделиться кодом создания приложения celery?

2. Возможно, я ошибаюсь, но я бы не рекомендовал использовать name tasks для проекта. Переименуйте, если бы вы могли? В Celery есть некоторый жесткий код для автоматического обнаружения задач в файлах / папках с именем tasks по умолчанию, и что-то может быть не так с этим. Просто предположение.