Django
中间件:概述
中间件:自定义
Celery(一)
内置应用的作用
内置中间件的作用
Celery(二)
模型 class Meta
模型 管理器(Manager)
related_name 介绍
prefetch_related 介绍
本文档使用 MrDoc 发布
-
+
首页
Celery(二)
`@shared_task` 是 Celery 提供的一个装饰器,用于定义可以在多个 Celery 应用中共享的任务。与 `@app.task` 不同,`@shared_task` 不需要显式地绑定到特定的 Celery 应用实例。这使得它在 Django 项目中特别有用,因为它允许你在应用模块中定义任务,而不需要直接引用 Celery 应用实例。 以下是 `@shared_task` 的一些关键点: 1. **无需显式绑定**:`@shared_task` 不需要显式地绑定到特定的 Celery 应用实例。这使得任务定义更加模块化和可重用。 > 普通的任务,你需要使用`app.task`,而shared_task 不需要指定app 2. **自动发现**:当你使用 `app.autodiscover_tasks()` 时,Celery 会自动发现并注册使用 `@shared_task` 定义的任务。 3. **适用于 Django 项目**:在 Django 项目中,`@shared_task` 通常用于在各个应用模块中定义任务,而不需要直接引用 Celery 应用实例。 以下是一个使用 `@shared_task` 的示例: ```python from celery import shared_task @shared_task def add(x, y): return x + y @shared_task def multiply(x, y): return x * y ``` 在这个示例中,`add` 和 `multiply` 是两个使用 `@shared_task` 定义的任务。你可以在任何地方调用这些任务,而不需要直接引用 Celery 应用实例。 在你的 `celery.py` 文件中,你可以使用 `app.autodiscover_tasks()` 来自动发现这些任务: ```python import os from celery import Celery # Set the default Django settings module for the "celery" program. os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ragx.settings") app = Celery("ragx") # 直接在这里设置 Celery 配置 app.conf.update( broker_url='redis://localhost:6379/0', result_backend='redis://localhost:6379/1', task_serializer='json', result_serializer='json', accept_content=['json'], timezone='Asia/Shanghai', enable_utc=False, ) # 自动发现任务 app.autodiscover_tasks() @app.task(bind=True, ignore_result=True) def debug_task(self): print(f"Request: {self.request!r}") ``` 这样,Celery 会自动发现并注册使用 `@shared_task` 定义的任务。你可以在任何地方调用这些任务,例如: ```python from myapp.tasks import add result = add.delay(4, 4) ``` 总结: - `@shared_task` 是一个装饰器,用于定义可以在多个 Celery 应用中共享的任务。 - 它不需要显式地绑定到特定的 Celery 应用实例,使得任务定义更加模块化和可重用。 - 在 Django 项目中,使用 `app.autodiscover_tasks()` 可以自动发现并注册这些任务。
gaojian
2024年11月19日 14:27
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码