Python Django芹菜未注册任务|相对导入

Python Django芹菜未注册任务|相对导入,python,django,celery,python-import,periodic-task,Python,Django,Celery,Python Import,Periodic Task,我正在尝试使用芹菜(V4.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 问题是芹菜工人返

我正在尝试使用芹菜(V4.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
问题是芹菜工人返回错误
接收到类型为“fxsignal.tasks.sum\u number”的未注册任务
。我认为问题的原因是
tasks.py
(forepy imports)顶部的两个导入语句。当我注释掉这两行时,我的定期任务
求和
工作正常。
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']

我已经阅读了部分芹菜文档,并在我的
forepy
包中删除了所有导入的
,但问题仍然存在。如何进一步解决此问题?

您需要更新导入,以便:

来自forepy进口仪器的

从forepy.downloaders导入oanda_api
从芹菜导入共享任务
@共享任务
def总数(a、b):
返回a+b
您还需要在
settings.py
文件中通知芹菜有关您的其他django应用程序模块(您的示例中是forepy模块),以便:

芹菜进口=(
“您的应用程序任务”,
“forepy.仪器”,
“forepy.下载程序”,
)

芹菜在本例中以静默方式失败,尽管当前环境中未安装另一个包的一个依赖项(即
forepy的依赖项)。我只能在django项目的
settings.py中添加以下配置后检测到这一点(感谢):


通过将上述配置添加到django设置中,终端报告了导入错误,这是未注册任务的实际原因。

我已经更新了
forepy.\uu_____.py
,正如您所说,但它仍然显示为未注册的任务。您需要更新的是
任务.py
而不是
任务。但是我应该如何构造
forepy.\uuu init\uuu.py
?请看一下我在问题中包含的当前结构。目前我无法从forepy导入仪器
,因为
仪器
未在
\uuuu init\uuuuuuuuuuuuuuupy.py
中导出?您的
任务.py在哪里?您不需要编辑任何
\uuuuu init\uuuuuy.py
s。当您在我的回答中编辑您的
tasks.py
时会出现什么错误?
tasks.py
在djangoo应用程序中<代码>\uuuu init\uuuuu.py
位于安装在虚拟环境中的forepy包中。好的,经过修改,它确实会抛出任何错误,但是
sum_numbers
任务仍然未注册。
CELERY_IMPORTS = (
    'your_app.tasks',
    'forepy.instrument',
    'forepy.downloaders',
)