我正在使用芹菜(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问题是芹菜工人返回错误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']我已经阅读了芹菜文档的这部分,并删除了.包中的所有.导入,但仍然存在问题。我还能做些什么来解决这个问题呢?
发布于 2019-07-31 07:55:59
在这种情况下,芹菜失败了,尽管在当前环境中没有安装另一个包的依赖项(即forepy的依赖项)。我只能在django项目的settings.py中添加以下配置后才能检测到这一点(感谢@cagrias):
CELERY_IMPORTS = (
'your_app.tasks',
'forepy.instrument',
'forepy.downloaders',
)通过将上述配置添加到django设置中,终端报告了导入错误,这是未注册任务的实际原因。
发布于 2019-07-31 06:56:02
您需要更新您的导入,以便:
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模块),以便:
CELERY_IMPORTS = (
'your_app.tasks',
'forepy.instruments',
'forepy.downloaders',
)https://stackoverflow.com/questions/57284846
复制相似问题