当前位置: 首页 > 面试题库 >

Celery收到未注册的任务类型(运行示例)

姬经义
2023-03-14
问题内容

我正在尝试从Celery文档中运行示例。

我跑: celeryd --loglevel=INFO

/usr/local/lib/python2.7/dist-packages/celery/loaders/default.py:64: NotConfigured: No 'celeryconfig' module found! Please make sure it exists and is available to Python.
  "is available to Python." % (configname, )))
[2012-03-19 04:26:34,899: WARNING/MainProcess]

 -------------- celery@ubuntu v2.5.1
---- **** -----
--- * ***  * -- [Configuration]
-- * - **** ---   . broker:      amqp://guest@localhost:5672//
- ** ----------   . loader:      celery.loaders.default.Loader
- ** ----------   . logfile:     [stderr]@INFO
- ** ----------   . concurrency: 4
- ** ----------   . events:      OFF
- *** --- * ---   . beat:        OFF
-- ******* ----
--- ***** ----- [Queues]
 --------------   . celery:      exchange:celery (direct) binding:celery

task.py:

# -*- coding: utf-8 -*-
from celery.task import task

@task
def add(x, y):
    return x + y

run_task.py:

# -*- coding: utf-8 -*-
from tasks import add
result = add.delay(4, 4)
print (result)
print (result.ready())
print (result.get())

在同一文件夹celeryconfig.py中:

CELERY_IMPORTS = ("tasks", )
CELERY_RESULT_BACKEND = "amqp"
BROKER_URL = "amqp://guest:guest@localhost:5672//"
CELERY_TASK_RESULT_EXPIRES = 300

当我运行“ run_task.py”时:

在python控制台上

eb503f77-b5fc-44e2-ac0b-91ce6ddbf153
False

celeryd服务器上的错误

[2012-03-19 04:34:14,913: ERROR/MainProcess] Received unregistered task of type 'tasks.add'.
The message has been ignored and discarded.

Did you remember to import the module containing this task?
Or maybe you are using relative imports?
Please see http://bit.ly/gLye1c for more information.

The full contents of the message body was:
{'retries': 0, 'task': 'tasks.add', 'utc': False, 'args': (4, 4), 'expires': None, 'eta': None, 'kwargs': {}, 'id': '841bc21f-8124-436b-92f1-e3b62cafdfe7'}

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/celery/worker/consumer.py", line 444, in receive_message
    self.strategies[name](message, body, message.ack_log_error)
KeyError: 'tasks.add'

请说明问题所在。


问题答案:

您可以在celery.registry.TaskRegistry该类中看到当前已注册任务的列表。可能是您的celeryconfig(在当前目录中)不在,PYTHONPATH因此celery找不到它,并恢复为默认值。在启动芹菜时,只需明确指定即可。

celeryd --loglevel=INFO --settings=celeryconfig

您还可以设置,--loglevel=DEBUG并且您可能应该立即看到问题。



 类似资料:
  • 问题内容: 我对docker,celery和rabbitMQ比较陌生。 目前,在我们的项目中,我们进行了以下设置:1个运行多个Docker容器的物理主机: 1个rabbitmq:3个管理容器 1个celery容器 (还有更多的容器,但是它们不必对此问题做任何事情) 任务文件 为了稍微了解celery和rabbitmq,我在物理主机上创建了一个task.py文件: 整个设置实际上似乎运行良好。因此,

  • 问题内容: 我写了一个文件 并如下 我已经启动了redis服务器,也已经启动了celery服务器。但是当我运行task.py时,出现以下错误: 可能的原因是什么 问题答案: 嘿,我解决了我添加的一件事 在我的档案中,我获得了成功。

  • 问题内容: 我使用celery更新新闻聚合站点中的RSS feed。我为每个提要使用一个@task,看起来一切正常。 有一个细节我不确定如何处理:所有提要每分钟都使用@periodic_task更新一次,但是如果提要仍在启动新任务时从上一个定期任务更新,该怎么办?(例如,如果Feed确实很慢或离线,并且任务在重试循环中进行) 目前,我存储任务结果并按以下方式检查其状态: 也许我错过了一些使用芹菜机

  • 试图在我的控制器中注入回购协议,但它不起作用,我不断收到相同的错误。我就是这么做的。 界面 背景 存储库 实施 Startup.cs 还有我从邮递员那里得到的奖励! 系统。无效操作异常:没有类型为“Mangue. Api. Services. Repository. General”的服务已被注册。在Microsoft。扩展。依赖注入。ServiceProviderService扩展。Micros

  • 问题内容: 我有一个Django站点,当用户请求时会发生刮擦,并且我的代码在新过程中启动了Scrapy Spider独立脚本。自然,这与增加用户数量无关。 像这样: 我决定使用Celery并使用工作人员将爬网请求排队。 但是,我遇到了无法重新启动龙卷风反应堆的问题。第一个蜘蛛和第二个蜘蛛成功运行,但随后的蜘蛛将引发ReactorNotRestartable错误。 任何人都可以在Celery框架中运

  • ​ ​ 任务中心会收到路线规划下发任务等。