app
),如果需要使用 Celery,导入即可。@task(ignore_result=True)
参数,针对单个任务禁用。-b
选项在命令行进行设置其他的中间人(Broker)。celery worker-c
项进行自定义设置并发数。没有推荐的并发数,因为最佳的并发数取决于很多因素,如果任务主要是 I/O 限制,可以进行增加并发数,经过测试,设置超过两倍的 CPU 数量效果不是很好,很有可能会降低性能。监控和管理手册:Monitoring and Management Guide
。路由任务:Routing Tasks
。Control + c
就可以停止职程(Worker),职程(Worker)文档:Workers Guide
章节详细的描述了职程(Worker)支持的信号列表。celery multi
命令在后台启动一个或多个职程(Worker):stop
命令是异步的,所以不会等待职程(Worker)关闭。可以通过 stopwait
命令进行停止运行,可以保证在退出之前完成当前正在执行的任务:celery multi
不存储有关职程(Worker)的信息,所以在重新启动时需要使用相同的命令参数,停止运行时只能通过pidfile
和logfile
参数来进行停止运行。multi
命令启动多个职程(Worker),有一个强大的语法为不同职程(Worker)设置不同的参数:multi
API 模块。module.path:attribute
proj.app
的属性proj.celery
的属性proj
中值为 Celery 应用程序的任何属性,如果还没有找到,将尝试检索名为 proj.celery
的子模块proj.celery.app
的属性proj.celery.celery
的属性proj.celery
中值为 Celery 应用程序的任何属性proj:app
,以及 大型项目的 proj.celery:app
delay()
方法进行调用:delay()
实际上为 apply_async()
的快捷使用:apply_async()
可以指定调用时执行的参数,例如运行的时间,使用的任务队列等:lopri
队列中,任务下发之后会在最早10秒内执行。 直接调用任务函数进行执行任务,不会发送任何任务消息:delay()
apply_async()
以及 apply(__call__)
为 Celery 调用的API,也可以用于签名。delay()
和 apply_async()
方法会返回一个 AsyncResult 实例,可以用于进行跟踪任务状况。如果进行跟踪任务状态,需要设置一个结果后端,以便于存储。监控和管理手册:Monitoring and Management Guide
)。id
属性进行获取任务的ID:result.get()
会抛出异常:propagate
来进行禁用:task_track_started
启用设置或 @task(track_started=True)
的情况下才会进行记录。 挂起状态实际上不是记录状态,而是未知任务ID的默认状态,可以从此实例中看到:delay
方法进行调用任务,有时候可能希望将任务调用的签名传递给另外一个进程或其他函数的参数,Celery 提供了一种叫签名的东西。delay
和 apply_async
方法。 但区别就在于签名实例已经指定了参数签名,该 add 任务有两个参数,需要指定两个参数的签名才能够成一个完整的签名实例:partials
的内容:apply_async
,任何参数都将作为签名中的参数,关键字参数将与任何现有键合并。task_routes
可以设置一个按名称分配的路由任务队列,将所有的内容集中存放在一个位置:celery worker -Q
):hipri
队列一起通过职程(Worker)进行消费,其中默认队列 celery
由于历史原因被命名:--destination
选项指定一个或多个职程(Worker)进行操作,使用“,”进行分割职程(Worker)主机列表:help
进行查看:curses
接口:timezone
进行配置:优化:Optimizing
。 如果使用的中间人是 RabbitMQ,可以将换成 librabbitmq 模块(通过 C 语言实现的AMQP客户端):用户指南
。