jjzjj

Django 如何使用 Celery 完成异步任务或定时任务

以前版本的Celery需要一个单独的库(django-celery)才能与Django一起工作,但从Celery3.1开始,情况便不再如此,我们可以直接通过Celery库来完成在Django中的任务。安装Redis服务端以Docker安装为例,安装一个密码为mypassword的Redis服务端dockerrun-itd--nameredis-p127.0.0.1:6379:6379redis:alpineredis-server--requirepassmypassword在Python中安装Celery和Redispipinstallceleryredis在Django项目中添加Celer

2.FastRunner定时任务Celery+RabbitMQ

注意:celery版本和Python冲突问题不能用高版本Python用3.5以下,因为项目的celery用的django-celery==3.2.2python3.7async关键字冲突版本celery3.x方案一:celery3.x+python3.6方案二:celery4.x+python3.7解决celery执行时报错:KeyError: 'async' 报错原因:Python3.6及以上版本和celebry4.0以上版本中async关键字发生冲突。原因分析:1.这是因为在 python 3.7 中将 async 作为了关键字,所以当 py 文件中出现类似 from . import a

Django Celery --异步任务队列

Celery用途Celery是一个高效的异步任务队列/基于分布式消息传递的作业队列,可以轻松帮我们在Django项目中设置执行异步和周期性任务。Celery是一个高效的基于分布式消息传递的作业队列。它主要通过消息(messages)传递任务,通常使用一个叫Broker(中间人)来协调client(任务的发出者)和worker(任务的处理者)。clients发出消息到队列中,broker将队列中的信息派发给Celeryworker来处理。Celery本身不提供消息服务,它支持的消息服务(Broker)有RabbitMQ和Redis。消息中间件(messagebroker)、任务执行单元(work

windows - celery WindowsError : [Error 6] The handle is invalid

我是celery的新手,我正在按照他们网站上给出的教程进行操作,但我遇到了这个错误fromceleryimportCeleryapp=Celery('tasks',broker='pyamqp://guest@localhost//')@app.taskdefadd(x,y):returnx+ycmd显示这样的错误--------------celery@DESKTOP-O90R45Gv4.0.2(latentcall)----****--------*****--Windows-10-10.0.143932016-12-1620:05:48--*-****----**--------

redis - 具有 Redis 代理的 celery worker 无法执行 Django 任务

最近我正在通过开发自己的Reddit克隆(在ubuntu14.04LTS上)学习Python(2.7)/Django(1.5)。我正在尝试将Celery(3.1)与Redis结合起来,使用它定期运行排名算法作为一项任务(在我的本地设置上)。但不幸的是,我无法让这个简单的任务执行一次!你能帮我发现我做错了什么吗?这是我的目录结构:-unconnectedreddit(manage.pyishere)-links(tasks.py,models.py,views.py,admin.py)-unconnectedreddit(celery.py,__init.py___,settings.p

redis - Celery 在没有代理和后端运行的情况下工作

我在笔记本电脑上运行Celery,rabbitmq是代理,redis是后端。我只是使用所有默认设置并运行celery-Atasksworker--loglevel=info,然后一切正常。工作人员可以完成工作,我可以通过调用result.get()获取执行结果。我的问题是,为什么即使我根本没有运行rebbitmq和redis服务器,它也能正常工作。我也没有在服务器上设置帐户。在许多教程中,第一步是在启动celery之前运行代理和后端服务器。我是这些工具的新手,不太了解它们在幕后的工作原理。任何投入将不胜感激。提前致谢。 最佳答案 没

python - 从 Celery 中过滤和删除任务

我们正在使用celery和redis。我们在项目中实现了一些错误的celery架构。因此,任务被添加到celery的速度比它们被处理的速度更快。于是队列变得越来越大。我们已经更改了项目的设计,以后不会发生这种情况。但celery有大量积压,我想将其删除。准确地说,我们在队列中有800000个积压任务。我们有一个队列,但已将两种不同类型的任务添加到该队列中。我们有一个名为func_a和另一个名称func_b的任务。该队列包含300000个func_a和500000个func_b。我想从队列中删除所有出现的func_a。实现此目的的最简单方法是什么? 最佳答案

python - Celery:连接到 Remote Broker 以共享任务

我有很多耗时的任务需要由几台机器分担。我目前有一台主机使用Celeryworkers来完成任务。我使用RabbitMQ作为代理,使用redis作为在本地机器上运行的后端。master机还负责部署任务和返回结果。我想知道是否可以让slave机器远程连接到master机器中的broker和resultbackend来获取作业,以便所有机器一起工作。我想我只需要以某种方式配置RabbitMQ和redis设置,然后在从机中启动Celeryworker。非常感谢。 最佳答案 在查看Celery文档时,绝对没有限制您不能从工作进程访问Rabbi

redis - celery 和丢失的消息

以下代码片段启动了我的Celery安装中的任务:tasks.py:@app.task(ignore_result=False)defasyncTransactionTask(txid):HereIdosomethingwithtxidanddonotscheduleadditionaltasks@app.task(ignore_result=True)defasyncCheckNotifications(*args):try:payments=#getanarrayofvaluespayments_tasks=[]forpaymentinpayments:payments_tasks.

python - Redis 在与 Celery 组或链一起使用时失去连接 - 抛出错误/MainProcess] 与 Redis 的连接丢失 : Retry (0/20) now

我的问题是当我使用celery任务启动我的worker时,redis在终端中显示以下错误。我很幸运能够在celerydocumentation中使用修改版的chord重现错误.问题似乎发生在和弦上,或者我有太多并行运行的组,即chord(add.s(i,i)foriinrange(1,num))(list_add.s())或group(add.s(i,i)foriinrange(1,num))()下面是我的代码示例@taskdefadd(x,y):return[x,y,x+y,"Next"]@taskdeflist_add(nums):numbers=[]count=1foriinnu