Celery错误:“ ModuleNotFoundError:没有名为“任务”的模块”

时间:2018-08-27 15:53:06

标签: python flask celery

当我运行批处理文件以启用Celery时:

python.exe -m celery -A tasks worker.celery -P eventlet -f celery.logs -l info 

发生错误:

  

回溯(最近通话最近):
      _run_module_as_main中的文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ runpy.py”,第193行               “ 主要”,mod_spec)       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ runpy.py”,第85行,_run_code       exec(代码,run_globals)       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery__main __。py”,第18行,位于       主要()       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery__main __。py”,主行中的第14行               _主要()       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery \ bin \ celery.py”,主行326行               cmd.execute_from_commandline(argv)       
在execute_from_commandline中的第488行中的文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery \ bin \ celery.py”
              超级(CeleryCommand,self).execute_from_commandline(argv)))       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery \ bin \ base.py”,行279,在execute_from_commandline中       
argv = self.setup_app_from_commandline(argv)       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery \ bin \ base.py”,行481,在setup_app_from_commandline中       
self.app = self.find_app(app)       
在find_app中的文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery \ bin \ base.py”,第503行       
返回find_app(应用程序,symbol_by_name = self.symbol_by_name)       
在find_app中,文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery \ app \ utils.py”,第355行       
sym = symbol_by_name(应用程序,imp = imp)       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery \ bin \ base.py”,第506行,在symbol_by_name中       
返回imports.symbol_by_name(名称,imp = imp)       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ kombu \ utils \ imports.py”,第56行,在symbol_by_name中       
module = imp(module_name,package = package,** kwarg)       
文件“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ site-packages \ celery \ utils \ imports.py”,第101行,位于import_from_cwd中       
返回imp(模块,包装=包装)       
文件import_module中的第126行“ C:\ Users \ Chernov.a \ Desktop \ Projects \ Roscosmos \ Python36-32 \ lib \ importlib__init __。py”       
返回_bootstrap._gcd_import(名称[level:],软件包,级别)       
_gcd_import中的文件“”,第994行       
“ find_and_load”中第971行的文件“”       
“ find_and_load_unlocked”中第953行的文件“”       
ModuleNotFoundError:没有名为“任务”的模块

我试图将此路径添加到sys.path中,更改了虚拟环境,但没有任何帮助。

代码本身为task.py

import requests
from requests.auth import HTTPBasicAuth

from celery import Celery


celery_app = Celery('nsi', broker='amqp://guest@localhost//')


@celery_app.task(
    name='sendToNsi',
    default_retry_delay = 4 *(60 * 60),
    max_retries =  1000,
    autoretry_for=(Exception,))

def sendToNsi(NSI_url,answer):

    s=requests.Session()
    post_request = s.post(NSI_url, data=answer,auth=HTTPBasicAuth('__', '___'))
    post_request.raise_for_status()

项目结构

───webNSI
   │   1.py
   │   config.py
   │   config1.py
   │   journal.log
   │   Message.xsd
   │   Schemas.py
   │   test2.py
   │   views - Copy.py
   │   views.py
   │   views2.py
   │   __init__.py
   │
   ├───model
   │   │   Answers.py
   │   │   DBOperation.py
   │   │   XmlHandler.py
   │   │   __init__.py
   │   │
   │   ├───MQ
   │   │   │   celery.logs
   │   │   │   CeleryMQ_Task.xml
   │   │   │   celery_worker.bat
   │   │   │   tasks.py
   │   │   │   __init__.py
   │   │   │
   │   │   └───__pycache__
   │   │           tasks.cpython-36.pyc
   │   │           __init__.cpython-36.pyc
   │   │
   │   └───__pycache__
   │           Answers.cpython-36.pyc
   │           DBOperation.cpython-36.pyc
   │           XmlHandler.cpython-36.pyc
   │           __init__.cpython-36.pyc
   │
   └───__pycache__
           config.cpython-36.pyc
           Schemas.cpython-36.pyc
           views.cpython-36.pyc
           __init__.cpython-36.pyc
           __init__.cpython-37.pyc

───__pycache__
       runserver.cpython-36.pyc

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

也许在您执行任务的路径中看不到任务文件。

尝试:

python.exe -m celery worker.celery --app=nsi -P eventlet -f celery.logs -l info