首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django芹菜未注册任务

Django芹菜未注册任务
EN

Stack Overflow用户
提问于 2019-07-31 06:52:36
回答 2查看 1.1K关注 0票数 0

我正在使用芹菜(v4.3.0)尝试在django应用程序中实现周期性任务。我的tasks.py如下所示:

代码语言:javascript
复制
# 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 (forepy )顶部的两个导入语句。当我注释掉这两行时,我的定期任务sum_numbers正确工作。供您参考,forepy包的结构如下:

代码语言:javascript
复制
forepy\
    downloaders\
        __init.py__
        oanda_api.py
    __init__.py
    instruments.py
    utils.py

还有forepyinit.py:

代码语言:javascript
复制
# -*- 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']

我已经阅读了芹菜文档的部分,并删除了.包中的所有.导入,但仍然存在问题。我还能做些什么来解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-31 07:55:59

在这种情况下,芹菜失败了,尽管在当前环境中没有安装另一个包的依赖项(即forepy的依赖项)。我只能在django项目的settings.py中添加以下配置后才能检测到这一点(感谢@cagrias):

代码语言:javascript
复制
CELERY_IMPORTS = (
    'your_app.tasks',
    'forepy.instrument',
    'forepy.downloaders',
)

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

票数 0
EN

Stack Overflow用户

发布于 2019-07-31 06:56:02

您需要更新您的导入,以便:

代码语言:javascript
复制
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应用程序模块(在您的示例中为forepy模块),以便:

代码语言:javascript
复制
CELERY_IMPORTS = (
    'your_app.tasks',
    'forepy.instruments',
    'forepy.downloaders',
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57284846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档