Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >分布式芹菜调度器

分布式芹菜调度器
EN

Stack Overflow用户
提问于 2011-08-10 13:55:24
回答 3查看 5.8K关注 0票数 12

我正在寻找一个分布式的类似cron的Python框架,我找到了芹菜。然而,文档中说“你必须确保一次只有一个调度程序在运行一个调度程序,否则你会得到重复的任务”,Celery使用的是celery.beat.PersistentScheduler,它将调度存储到一个本地文件中。

那么,我的问题是,除了默认实现之外,是否还有其他实现可以将调度“放入集群”,并协调任务执行,以便每个任务只运行一次?我的目标是能够在集群中的所有主机上以相同的时间表运行celerybeat。

谢谢

EN

回答 3

Stack Overflow用户

发布于 2018-01-08 10:52:02

tl;dr:No Celerybeat不适合您的用例。您必须只运行celerybeat的一个进程,否则您的任务将会重复。

我知道这是一个非常古老的问题。我将尝试做一个小总结,因为我有相同的问题/问题(在2018年)。

一些背景知识:我们在Kubernetes集群中运行Django应用程序(使用Celery)。集群(EC2实例)和容器(~containers)是自动伸缩的:简单地说,我不知道应用程序何时以及有多少实例正在运行。

只运行celerybeat的一个进程是您的责任,否则,您的任务将重复。1在Celery存储库中有这样一个特性请求:2

要求用户确保其集群中只有一个celerybeat实例,这会造成很大的实现负担(要么创建单个故障点,要么鼓励用户使用自己的分布式互斥锁)。

celerybeat应该提供一种机制来防止意外并发,或者文档应该建议一种最佳实践方法。

过了一段时间,这个功能请求被Celery的作者拒绝了,因为缺乏资源。我强烈建议阅读3上的整个线程。那里的人们推荐这些项目/解决方案:

我没有尝试上面的任何东西(我不想在我的应用程序中出现另一个依赖项,我不喜欢锁定任务,/you需要处理故障转移等等)。

我最终在Kubernetes (https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/)中使用了CronJob。

1 celerybeat - multiple instances & monitoring

2 https://github.com/celery/celery/issues/251

3 https://github.com/celery/celery/issues/251#issuecomment-228214951

票数 13
EN

Stack Overflow用户

发布于 2011-08-10 15:24:27

我认为可能对celerybeat的功能有一些误解。Celerybeat不处理定期任务;它只发布它们。它将周期性任务放在队列中,由celeryd工作进程处理。如果您运行单个celerybeat进程和多个celeryd进程,则任务执行将分布到集群中。

票数 0
EN

Stack Overflow用户

发布于 2011-11-23 18:16:38

我们也遇到了同样的问题,我们有三台服务器在运行Celerybeat。然而,我们的解决方案是只在一台服务器上运行Celerybeat,这样就不会创建重复的任务。为什么要让Celerybeat在多台服务器上运行?

如果您担心芹菜会崩溃,只需创建一个脚本来监视Celerybeat进程是否仍在运行。

代码语言:javascript
运行
AI代码解释
复制
$ ps aux | grep celerybeat

这将显示Celerybeat进程是否正在运行。然后创建一个脚本,如果您看到进程停止,请向您的系统管理员发送电子邮件。Here's a sample setup,我们只在一台服务器上运行Celerybeat。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7011950

复制
相关文章
调度器及CFS调度器
调度:就是按照某种调度的算法设计,从进程的就绪队列中选择进程分配CPU,主要是协调进程对CPU等相关资源的使用。
laputa
2022/11/21
1.1K0
分布式调度中间件xxl-job(七):调度器Trigger
 上一篇中我们了解了调度中心除了调度器以外的基本功能,今天我们就来学习一下 xxl-job 中 「调度器(Trigger)」 是如何工作的。
闲宇非鱼
2022/02/08
9150
分布式调度中间件xxl-job(七):调度器Trigger
【Linux 内核】CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器、周期性调度器 | 调度器类 )
进程管理过程需要 调度器 的 组件模块 , 以及相关 算法 数据结构 来完成 , 如 : 执行队列 ;
韩曙亮
2023/03/30
3.3K0
【Linux 内核】CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器、周期性调度器 | 调度器类 )
开源基于docker的任务调度器pipeline,比`quartzs` 更强大的分布式任务调度器
目标: 基于docker的布式任务调度器, 比quartzs,xxl-job 更强大的分布式任务调度器。
JadePeng
2021/08/06
1.2K0
linux 进程调度器(下) -- 调度器演进
在早期的 linux 操作系统中,2.4 版本到 2.6 版本之间,linux 采用了实现起来十分简单的 O(n) 调度器。
用户3147702
2022/09/23
2.3K0
linux 进程调度器(下) -- 调度器演进
【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )
Linux 内核的 " 进程调度 " 是按照 设计好的调度算法 安排的 , 该算法对应的功能模块 称为 " 调度器 " , 英文名称是 Scheduler ;
韩曙亮
2023/03/30
5.8K0
【Linux 内核】调度器 ① ( 调度器概念 | 调度器目的 | 调度器主要工作 | 调度器位置 | 进程优先级 | 抢占式调度器 | Linux 进程状态 | Linux 内核进程状态 )
【分布式技术】分布式系统调度架构之两层调度,解决单体调度问题
昨天分享了分布式系统架构中的单体调度架构,并且详细的学习了相关调度算法(【分布式技术】分布式系统调度架构之单体调度,非掌握不可),虽然单体调度架构简单易用,但是它是落在中央处理器中的,所以也就有了单机瓶颈问题,这样对于一些多类型的服务就会受限。
架构师修炼
2020/07/17
2.2K0
Go调度器系列(2)宏观看调度器
上一篇文章《Go语言高阶:调度器系列(1)起源》,学goroutine调度器之前的一些背景知识,这篇文章则是为了对调度器有个宏观的认识,从宏观的3个角度,去看待和理解调度器是什么样子的,但仍然不涉及具体的调度原理。
大彬
2019/04/23
6000
Go调度器系列(2)宏观看调度器
Go调度器系列(2)宏观看调度器
上一篇文章《Go语言高阶:调度器系列(1)起源》,学goroutine调度器之前的一些背景知识,这篇文章则是为了对调度器有个宏观的认识,从宏观的3个角度,去看待和理解调度器是什么样子的,但仍然不涉及具体的调度原理。
大彬
2019/04/11
6420
Go调度器系列(2)宏观看调度器
分布式调度管理系统 TASKCTL 流程调度原理
通过作业定义,完成了在模块代码中作业的描述。接下来,我们需要设计怎么去调用这些作业,即需要在模块代码中设计各种所需的调度控制策略。只有通过灵活设计各种调度策略,才能完成各种复杂多样的调度控制。
TASKCTL 任务调度平台
2022/05/09
8270
分布式调度管理系统 TASKCTL 流程调度原理
调度器增强
到目前为止,我们只考虑了实时系统上的调度。事实上, Linux可以做得更好些。除了支持多个CPU之外,内核也提供其他几种与调度相关的增强功能,在以后几节里会论述。但请注意,这些增强功能大大增加了调度器的复杂性,因此我主要考虑简化的情形,目的在于说明实质性的原理,而不考虑所有的边界情形和调度中出现的奇异情况。
233333
2018/12/19
7690
Goroutine调度器
并发(并行)一致都是编程语言的核心主题,不同于其他语言,例如C/C++语言用户序自行借助pthread创建线程,Golang天然就给出了并发解决方案:goroutine。
用户2937493
2019/08/29
4650
Goroutine调度器
Goroutine调度器
在了解Go的运行时的scheduler之前,需要先了解为什么需要它,因为我们可能会想,OS内核不是已经有一个线程scheduler了嘛?
李海彬
2018/07/26
6160
Goroutine调度器
asio 调度器实现 - operation 调度详解
作为一个 lambda post 类型的调度器实现, 首先要打理的, 肯定是的函数对象如何投递, 如何保存, 如何执行了. 我们先来回顾一下上一篇中的调度概览图:
fangfang
2023/05/23
7010
asio 调度器实现 - operation 调度详解
Go 语言调度(二): goroutine 调度器
上一篇文章我对操作系统级别的调度进行了讲解,这对理解 Go 语言的调度器是很重要的。这篇文章,我将解释下 Go 语言的调度器是如何工作的。依旧专注在上层抽象的基本概念上,不深入到具体如何实现的,因为 Go 调度器是非常复杂的而且内部机制的一些细节是无关紧要的。重要的是我们要对 goroutine 是如何被调度和工作的有一个简单的心理模型。这对我们做工程决策时有很大的帮助。
李海彬
2019/05/08
9190
Go 语言调度(二): goroutine 调度器
任务调度-分布式任务调度平台XXL-JOB
如果上述二种方式都不满足你的需求,我建议你尝试使用XXL-JOB或其他开源调度平台。
秋日芒草
2019/06/19
2.7K0
【分布式技术】分布式系统调度架构之单体调度,非掌握不可
我们每天都在谈论分布式架构,也有朋友经常问我分布式架构到底是个什么的架构。其实简单来说就是,分布式系统架构就是将多个服务器资源统一管理起来,然后挑选合适的服务器去处理用户的请求或者指定的任务。当然分布式系统技术肯定不是这一篇能讲清楚的,前面也讲了两篇了,忘记了的可以回顾下(不好意思,懂分布式事务的你真的很了不起,下篇,面试是不是经常被问到分布式系统核心问题,这一次没人难倒你)我也会一直讲这方面技术的。
架构师修炼
2020/07/20
1.1K0
【分布式技术】分布式系统调度架构之单体调度,非掌握不可
调度器简介,以及Linux的调度策略
进程是操作系统虚拟出来的概念,用来组织计算机中的任务。但随着进程被赋予越来越多的任务,进程好像有了真实的生命,它从诞生就随着CPU时间执行,直到最终消失。不过,进程的生命都得到了操作系统内核的关照。就好像疲于照顾几个孩子的母亲内核必须做出决定,如何在进程间分配有限的计算资源,最终让用户获得最佳的使用体验。内核中安排进程执行的模块称为调度器(scheduler)。这里将介绍调度器的工作方式。
Vamei
2018/08/02
2.1K0
调度器简介,以及Linux的调度策略
Linux 进程调度之schdule主调度器
考虑到文章篇幅,在这里我只讨论普通进程,其调度算法采用的是CFS(完全公平)调度算法。 至于CFS调度算法的实现后面后专门写一篇文章,这里只要记住调度时选择一个优先级最高的任务执行
233333
2023/05/03
1.9K0
Linux 进程调度之schdule主调度器
【Linux 内核】CFS 调度器 ② ( CFS 调度器 “ 权重 “ 概念 | CFS 调度器调度实例 | 计算进程 “ 实际运行时间 “ )
CFS 调度器 ( Completely Fair Scheduler ) " 完全公平调度器 " ,
韩曙亮
2023/03/30
1.9K0

相似问题

芹菜-击败KeyError:“调度器”

211

Oozie分布式调度器

24

动态芹菜调度

10

芹菜调度器不执行任务

17

芹菜间隔调度时间

03
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档