Django芹菜未注册的任务|相对进口



我正在尝试使用芹菜(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

问题是芹菜工人返回错误Received unregistered task of type 'fxsignal.tasks.sum_number'。我认为问题原因是tasks.py顶部的两个导入语句(效率导入(。当我评论这两行时,我的周期性任务sum_numbers正常工作。供您参考,forepy软件包的结构如下:

forepy
    downloaders
        __init.py__
        oanda_api.py
    __init__.py
    instruments.py
    utils.py

forepy's 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软件包中的所有.导入,但仍然存在问题。我该怎么办来解决这个问题?

您需要更新导入,以便:

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文件中通知芹菜有关您的其他Django应用模块(在您的情况下进行效力模块(,以便:

CELERY_IMPORTS = (
    'your_app.tasks',
    'forepy.instruments',
    'forepy.downloaders',
)
在这种情况下,

芹菜在这种情况下默默失败,尽管另一个软件包的依赖性之一(这是forepy的依赖性(未安装在当前环境中。我只能在Django Project的settings.py中添加以下配置后检测到这一点(感谢@cagrias(:

CELERY_IMPORTS = (
    'your_app.tasks',
    'forepy.instrument',
    'forepy.downloaders',
)

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

相关内容

  • 没有找到相关文章

最新更新