【问题标题】:celery task unable to import ImportError of a module from inside the projectcelery 任务无法从项目内部导入模块的 ImportError
【发布时间】:2017-01-22 19:37:42
【问题描述】:

我想指出,以下错误仅在通过 celery worker 运行时发生。 在终端中使用以下命令:

celery -A MarketPlaceTasks worker --loglevel=info

Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/celery/app/trace.py", line 218, in trace_task
    R = retval = fun(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/celery/app/trace.py", line 398, in __protected_call__
    return self.run(*args, **kwargs)
  File "/home/nick/mpcrawler2/MarketPlaceTasks.py", line 65, in get_item_data
    logger, request, run_data, store_config, app_config = setup_task(payload)
  File "/home/nick/mpcrawler2/MarketPlaceTasks.py", line 33, in setup_task
    store_config = ConfigReader.read_store_config(request.Store)
  File "/home/nick/mpcrawler2/shared/ConfigReader.py", line 22, in read_store_config
    from singletons.StoreData import StoreData
  File "/home/nick/mpcrawler2/singletons/StoreData.py", line 3, in <module>
    from models.StoreConfig import StoreConfig
  File "/home/nick/mpcrawler2/models/StoreConfig.py", line 3, in <module>
    from enums.MpStores import MpStore
ImportError: No module named enums.MpStores

我将所有枚举都放在一个单独的模块中。该模块如下所示,与项目位于同一目录中:

每当我通过 pycharm 或终端运行项目时,一切似乎都按预期工作。

worker的起点是这样的:

from celery import Celery

app = Celery('tasks', broker='*some ampq address here*')

__init__.py 文件为空。枚举文件如下所示:

from enum import Enum

# noinspection SpellCheckingInspection
class MpStore(Enum):
    somevalue = 1
    someothervalue = 2
    etc = 3

由于我使用的是 Python 2.7,因此我使用的是使用 pip 安装的enum34

如果我还应该在问题中提供任何其他内容,请告诉我。

【问题讨论】:

    标签: python python-2.7 enums celery celery-task


    【解决方案1】:

    好吧,这似乎是某种解决方法,但请遵循此答案中的建议: How to accomplish relative import in python

    我将大部分项目移到包含所有项目的“主”模块中。然后我能够: 而不是from enums.MpStore import MpStore
    我现在使用from stuff.enums.MpStore import MpStore“stuff”作为新的模块名称。

    我很想听听更好的方法...

    【讨论】:

      猜你喜欢
      • 2022-10-19
      • 1970-01-01
      • 2013-12-27
      • 2016-02-25
      • 2018-04-06
      • 1970-01-01
      • 2016-08-13
      • 2021-03-08
      • 1970-01-01
      相关资源
      最近更新 更多