我无法理解“分布式任务队列”的目的。例如,python的celery库。
我知道在celery(Python框架)中,你可以为要执行的功能设置定时窗口。但是,这也可以在针对python脚本的linux crontab中轻松完成。
据我所知,并通过我自己的django-celery网络应用显示,celery所消耗的RAM内存比仅仅设置一个原始crontab还要多。对于相对较小的应用程序,相差几百MB。
有人可以帮我这个区别吗?总体上讲,关于任务队列/ crontabs如何工作的高级解释也许也不错。
谢谢。
这取决于你希望任务执行的操作,是否需要分发任务以及如何管理它们。
crontab能够每N个间隔执行一次脚本。它运行,然后返回。从本质上讲,你每个时间间隔都会执行一次。你只需指挥crontab即可执行django管理命令并获得对整个django环境的访问权限,因此celery并不能真正为你提供帮助。
在消息队列的帮助下,Celery带到桌子上的是分布式任务。许多服务器可以加入工作人员池,并且每个服务器都可以接收工作项,而不必担心双重处理。准备就绪后,也可以立即执行任务。使用cron时,你的时间不得超过一分钟。
举例来说,假设你刚刚启动了一个新的Web应用程序,并且正在接收数百次注册,这些注册需要向每个用户发送电子邮件。发送电子邮件可能需要较长的时间(相对),因此你决定要通过任务处理激活电子邮件。
如果你使用的是cron,则需要确保cron每一分钟都能够处理所有需要发送的电子邮件。如果你有多台服务器,则现在需要确保没有向同一用户发送多封激活电子邮件-你需要某种同步。
使用Celery,你可以将任务添加到队列中。每个服务器上可能有几个工作人员,所以你已经在进行cronjob之前进行了扩展。你可能还拥有多个服务器,可以扩展更多服务器。同步作为“队列”的一部分进行处理。
你可以将Celery用作cron的替代品,但这并不是它的主要用途。它用于在分布式群集中播种异步任务。
当然,Celery具有大量 cron所没有的功能。
据我所知,RabbitMQ等消息代理促进了用不同语言/平台编写的不同应用程序之间的通信。因此,由于celery可以使用RabbitMQ作为消息代理,我相信我们可以将任务从任何应用程序排队到celery,即使生产者不是用Python编写的。 现在,我想知道如何通过RabbitMQ将用C编写的应用程序中的任务排队到芹菜。但我还没有找到这样的例子。 我发现的唯一与此相关的信息就是这个问题 其中,公认的答
我正在用celery构建一个用于背景任务的flask应用程序。我的应用程序正在使用docker容器中运行的localstack,在本地为我的message Broker模拟SQS。我已经让flask和celery在本地运行,以便与localstack正确工作,在localstack中,我可以看到flask接收请求,向SQS队列添加消息,然后celery接收该任务并执行它。 我尝试了dockeriz
前言 在实际的项目开发中,我们经常会遇到需要轻量级队列的情形,例如发短信、发邮件等,这些任务不足以使用 kafka、RabbitMQ 等重量级的消息队列,但是又的确需要异步、重试、并发控制等功能。通常来说,我们经常会使用 Redis、Beanstalk、Amazon SQS 来实现相关功能,laravel 为此对不同的后台队列服务提供统一的 API,本文将会介绍应用最为广泛的 redis 队列。
问题内容: 我将向celery队列添加多个任务并等待结果。我有各种各样的想法,我将如何利用某种形式的共享存储(memcached,redis,db等)来实现这一目标,但是,我本以为Celery可以自动处理该问题,但我无法在线找到任何资源。 代码示例 问题答案: 对于Celery > = 3.0,使用taskset被弃用赞成组。 在后台启动组: 等待:
crontab 命令 Linux下的任务调度分为两类:系统任务调度和用户任务调度。 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在 /etc 目录下有一个 crontab 文件,这个就是系统任务调度的配置文件。 系统任务调度存放的目录 /etc/cron.hourly 小时 /etc/cron.daily 每天 /etc/cron.weekly 每周 /etc/cro
通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。 19.1. 命令格式 crontab [-u user] filecrontab [-u user] [ -e | -l | -r ] 19.2. 命令参数 -u user:用来设定某个