Django celery 未注册任务 |相对进口
Django celery unregistered task | relative imports
我正在尝试使用 celery (v 4.3.0) 在 django 应用程序中执行周期性任务。我的 tasks.py
如下所示:
# forepy is the simple package created by me
from forepy import Instrument
from forepy import oanda_api
from celery import shared_task
@shared_task
def sum_numbers(a, b):
return a + b
问题是 celery worker returns 错误 Received unregistered task of type 'fxsignal.tasks.sum_number'
。我认为问题的原因是 tasks.py
顶部的两个导入语句(forepy 导入)。当我注释掉这两行时,我的周期性任务 sum_numbers
正常工作。 forepy
包的结构如下:
供您参考
forepy\
downloaders\
__init.py__
oanda_api.py
__init__.py
instruments.py
utils.py
和forepy
的init.py:
# -*- coding: utf-8 -*-
"""Top-level package for forepy."""
__author__ = """Elgin Jahangirov"""
__email__ = 'cahangirove@gmail.com'
__version__ = '0.2.0'
from forepy.instrument import Instrument
from forepy.downloaders import oanda_api
__all__ = ['Instrument', 'oanda_api']
我已经阅读了 celery 文档的 this 部分,并删除了我的 forepy
包中的所有 .
导入,但问题仍然存在。我还能做些什么来解决这个问题?
您需要更新导入,以便:
from forepy import instruments
from forepy.downloaders import oanda_api
from celery import shared_task
@shared_task
def sum_numbers(a, b):
return a + b
您还需要在 settings.py
文件中告知 celery 关于您的其他 django 应用程序模块(在您的情况下为 forepy 模块),这样:
CELERY_IMPORTS = (
'your_app.tasks',
'forepy.instruments',
'forepy.downloaders',
)
Celery 在这种情况下默默地失败了,尽管当前环境中没有安装另一个包的依赖项(forepy
的依赖项)。我只能在 django 项目的 settings.py
中添加以下配置后检测到(感谢 @cagrias):
CELERY_IMPORTS = (
'your_app.tasks',
'forepy.instrument',
'forepy.downloaders',
)
在django设置中加入以上配置,终端报导入错误,实际是没有注册任务的原因。
我正在尝试使用 celery (v 4.3.0) 在 django 应用程序中执行周期性任务。我的 tasks.py
如下所示:
# forepy is the simple package created by me
from forepy import Instrument
from forepy import oanda_api
from celery import shared_task
@shared_task
def sum_numbers(a, b):
return a + b
问题是 celery worker returns 错误 Received unregistered task of type 'fxsignal.tasks.sum_number'
。我认为问题的原因是 tasks.py
顶部的两个导入语句(forepy 导入)。当我注释掉这两行时,我的周期性任务 sum_numbers
正常工作。 forepy
包的结构如下:
forepy\
downloaders\
__init.py__
oanda_api.py
__init__.py
instruments.py
utils.py
和forepy
的init.py:
# -*- coding: utf-8 -*-
"""Top-level package for forepy."""
__author__ = """Elgin Jahangirov"""
__email__ = 'cahangirove@gmail.com'
__version__ = '0.2.0'
from forepy.instrument import Instrument
from forepy.downloaders import oanda_api
__all__ = ['Instrument', 'oanda_api']
我已经阅读了 celery 文档的 this 部分,并删除了我的 forepy
包中的所有 .
导入,但问题仍然存在。我还能做些什么来解决这个问题?
您需要更新导入,以便:
from forepy import instruments
from forepy.downloaders import oanda_api
from celery import shared_task
@shared_task
def sum_numbers(a, b):
return a + b
您还需要在 settings.py
文件中告知 celery 关于您的其他 django 应用程序模块(在您的情况下为 forepy 模块),这样:
CELERY_IMPORTS = (
'your_app.tasks',
'forepy.instruments',
'forepy.downloaders',
)
Celery 在这种情况下默默地失败了,尽管当前环境中没有安装另一个包的依赖项(forepy
的依赖项)。我只能在 django 项目的 settings.py
中添加以下配置后检测到(感谢 @cagrias):
CELERY_IMPORTS = (
'your_app.tasks',
'forepy.instrument',
'forepy.downloaders',
)
在django设置中加入以上配置,终端报导入错误,实际是没有注册任务的原因。