Celery 中文手册
GitHub
Search…
4.3.0
前言
简介
版权
资金流向
入门
Celery 简介
中间人:Brokers
Celery 初次使用
Celery 进阶使用
资源
用户指南
应用:Application
任务:Tasks
基础:Basics
名字:Names
任务请求:Task Request
日志:Logging
重试:Retrying
选项列表:List of Options
状态:States
Semipredicates
自定义任务类:Custom task classes
如何工作:How it works
最佳实践:Tips and Best Practices
性能和策略:Performance and Strategies
案例:Example
调用任务:Calling Tasks
Canvas:设计工作流程:Designing Work-flows
职程(Worker)文档:Workers Guide
守护进程:Daemonization
定期任务:Periodic Tasks
路由任务:Routing Tasks
监控和管理手册:Monitoring and Management Guide
安全:Security
优化:Optimizing
调试:Debugging
并发:Concurrency
信号:Signals
测试:Testing with Celery
扩展和引导:Extensions and Bootsteps
配置和默认配置:Configuration and defaults
使用Sphinx生成任务文档:Documenting Tasks with Sphinx
附录
Django
贡献:Contributing
社区资源:Community Resources
教程:Tutorials
常见问题FAQ:Frequently Asked Questions
更新历史:Change history
Celery 4.3.0的新功能:What’s new in Celery 4.3 (rhubarb)
API:API Reference
Celery 内部模块:Internals
历史:History
专业词:Glossary
Powered By
GitBook
基础:Basics
可以使用
task()
装饰器轻松的创建任何可被调用的任务:
1
from
.
models
import
User
2
3
@app
.
task
4
def
create_user
(
username
,
password
):
5
User
.
objects
.
create
(
username
=
username
,
password
=
password
)
Copied!
也可以通过
task()
装饰器针对任务设置
选项参数
:
1
@app
.
task
(
serializer
=
'json'
)
2
def
create_user
(
username
,
password
):
3
User
.
objects
.
create
(
username
=
username
,
password
=
password
)
Copied!
多个装饰器
如果有多个装饰器进行组合使用时,必须确保
task()
装饰器被放置在首位:
1
@app
.
task
2
@decorator2
3
@decorator1
4
def
add
(
x
,
y
):
5
return
x
+
y
Copied!
如何导入装饰器?什么是“应用程序”?
任务装饰器在 Celery 应用程序实例中使用,如果不清楚是什么,建议阅读
Celery 初次使用
。 如果使用的是 Django (参阅 Django 的
初次使用
),如果你是一个库的作者,你可能使用想要使用
shared_task()
装饰器:
1
from
celery
import
shared_task
2
3
@shared_task
4
def
add
(
x
,
y
):
5
return
x
+
y
Copied!
绑定的任务
被绑定的任务意味着任务的第一个参数总是任务实例(self),就像Python绑定方法一样:
1
logger
=
get_task_logger
(
__name__
)
2
3
@task
(
bind
=
True
)
4
def
add
(
self
,
x
,
y
):
5
logger
.
info
(
self
.
request
.
id
)
Copied!
对于重试(使用
app.Task.retry()
)、访问当前任务的信息以及添加到自定义任务基类的任何附加功能,都需要绑带任务。
任务继承
装饰器的
base
参数可以指定继承的任务基类:
1
import
celery
2
3
class
MyTask
(
celery
.
Task
):
4
5
def
on_failure
(
self
,
exc
,
task_id
,
args
,
kwargs
,
einfo
):
6
print
(
'{0!r} failed: {1!r}'
.
format
(
task_id
,
exc
))
7
8
@task
(
base
=
MyTask
)
9
def
add
(
x
,
y
):
10
raise
KeyError
()
Copied!
用户指南 - Previous
任务:Tasks
Next
名字:Names
Last modified
2yr ago
Export as PDF
Copy link
Contents
绑定的任务
任务继承