Celery中出现错误:"ModuleNotFoundError: No module named 'tasks'"

3
当我运行批处理文件以启用 Celery 时:
python.exe -m celery -A tasks worker.celery -P eventlet -f celery.logs -l info 

发生错误:

Traceback (most recent call last):
在运行主模块时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\runpy.py"
函数名称:" _run_module_as_main"
参数列表:"main", mod_spec
在代码执行时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\runpy.py"
函数名称:" _run_code"
参数列表:code, run_globals
在执行celery主函数时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\celery__main__.py"
函数名称:" main"
在执行celery命令行函数时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\celery\bin\celery.py"
函数名称:" execute_from_commandline"
参数列表:argv
在执行CeleryCommand时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\celery\bin\base.py"
函数名称:" execute_from_commandline"
参数列表:argv
在设置应用程序命令行参数时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\celery\bin\base.py"
函数名称:" setup_app_from_commandline"
参数列表:argv
在查找应用程序时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\celery\bin\base.py"
函数名称:" find_app"
参数列表:app
在查找应用程序时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\celery\app\utils.py"
函数名称:" find_app"
参数列表:app, imp=imp
在查找模块名时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\celery\bin\base.py"
函数名称:" symbol_by_name"
参数列表:name, imp=imp
在查找模块名时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\kombu\utils\imports.py"
函数名称:" symbol_by_name"
参数列表:module_name, package=package, **kwargs
在当前工作目录中导入模块时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\site-packages\celery\utils\imports.py"
函数名称:" import_from_cwd"
参数列表:module, package=package
在导入模块时发生错误:
文件路径:"C:\Users\Chernov.a\Desktop\Projects\Roscosmos\Python36-32\lib\importlib__init__.py"
函数名称:" import_module"
参数列表:name[level:], package, level
无法找到名为'tasks'的模块。
我试图将此路径添加到sys.path中,更改虚拟环境,但都没有起作用。
代码本身是tasks.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

我该如何解决这个问题?

请用英语表达您的问题,这样可以让更多的人看懂。 - brass monkey
1个回答

2
也许任务文件在你执行它的路径中不可见。
尝试:
python.exe -m celery worker.celery --app=nsi -P eventlet -f celery.logs -l info 

谢谢回答!但是它并没有帮助。文件“<冻结importlib._bootstrap>”,第994行,_gcd_import 文件“<冻结importlib._bootstrap>”,第971行,_find_and_load 文件“<冻结importlib._bootstrap>”,第953行,_find_and_load_unlocked 模块未找到错误:没有名为'C'的模块。如果我从项目源尝试,则会出现类似的结果。模块未找到错误:没有名为'webnsi'的模块。 - Garciastud
谢谢回答!但是出现了这个错误:"ModuleNotFoundError: No module named 'nsi'" - Garciastud
@Garciastud 将 nsi 替换为您的应用名称(.py) - adhg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接