我想根据Celery和Redis用我的Django应用程序问一个问题。正如我将进一步详细解释的那样,我遇到了这些应用程序的一些随机问题。我的环境:我正在使用:Django1.11.20django-redis4.7.0/redis>=2.10.5celery4.2.1我的本地上下文:(Ubuntu虚拟机)我有一个celery任务,当这个文件大于70.000个对象时,它会发送一封带有导出文件的电子邮件。该过程运行良好,我收到了预期的电子邮件,其中包含下载我的文件的链接。Celery手动启动:celery-Amainworker-linfo我的开发环境:(FreeBSD服务器)我有完全相同
我是docker的新手。我在同时部署多个容器时遇到问题,它正在发生竞争情况。每次我输入docker-composeup--build命令时,elasticsearch或redis首先启动,数据库启动和退出时出现错误代码0以及celery和nginx。我尝试使用“sleep”命令,但没有运气(也许我错过了什么)。这是我的docker-compose.yml文件-version:"3"services:db:image:postgres:9.6-alpinecontainer_name:myblogdbenvironment:-POSTGRES_USER=postgres-POSTGRES
celery是否有一种干净的方法来了解其代理和/或结果后端是否已关闭?我将celery与RabbitMQ代理和Redis后端一起使用。目前,我发现最简单的方法是提交一个虚拟任务,它会在代理关闭时引发kombu.exceptions.OperationalError,而在当代理关闭时引发redis.exceptions.ConnectionError后端已关闭。然而,这感觉很老套。有没有更好的办法? 最佳答案 深入研究Celery的源文件后,我最终使用了以下内容importceleryimportkombuimportredistry
我想为不同的任务创建多个队列。例如emailqueue发送电子邮件或pipedrive队列与pipedriveAPI同步任务,因此email不必等待直到所有pipedrives同步,反之亦然。我是路由方面的新手,我尝试了两种创建队列的方法,但似乎都不起作用。这是首选方法。我试图在@task装饰器中定义队列@task(bind=True,queue='pipedrivequeue')defbacksync_lead(self,lead_id):设置.pyCELERY_ROUTES={#triedCELERY_TASK_ROUTEStoo'pipedrive.tasks.*':{'queu
我使用celery来完成一些任务,所有由.apply_async添加的任务和我的脚本自动执行,取决于一些外部条件。我想不是按直接顺序而是按相反顺序获得任务结果。例如,我在task2之后添加task1,在task3之后我希望celery按以下顺序执行任务:任务1、任务3、任务2。(首先是task1,因为celery会在我添加它之后执行此任务,然后再添加task2,没关系),我怎样才能得到这种行为?附言我使用redis作为代理。 最佳答案 所描述的行为是不可能的,或者至少不可能是完全的。此外,这主要取决于所选的经纪人。基本上,您希望队列
我已经使用Celery构建了一个队列系统,它接受Web请求并执行一些任务来处理这些请求。我使用Redis作为Celery的后端,但我想这个问题适用于所有后端。Celery返回任务名称为celery-task-meta-并将其存储在后端。这对我来说毫无意义。如何更改celery发送到Redis的结果的名称?我搜索了所有Celery'sdocumentation试图弄清楚如何做到这一点。RedisCLI监视器显示Celery正在使用SETEX方法并发送以下输入:"SETEX""celery-task-meta-dd32ded3-00aa-4884-8b21-42f8332e7fac""86
我有一个客户端celery应用程序为工作人员(使用Redis)发布任务,它工作正常。客户端和工作应用程序都使用相同的配置:app=Celery('clientApp',broker='redis://redis:6379/0',backend='redis://redis:6379/0')#Listentoqueue2app=Celery('workerApp',broker='redis://redis:6379/0',backend='redis://redis:6379/0')#Listentoqueue1现在我想在成功或错误时执行处理程序,所以我使用了这样的东西:task=Si
我尝试使用Django框架中的Celery和RedisBroker作为异步任务向用户发送电子邮件5次。我的Celery服务器正在工作,它正在响应celerycli界面,即使它正在从Django接收任务,但在那之后我收到如下错误:Traceback(mostrecentcalllast):File"c:\users\vipin\appdata\local\programs\python\python3es\billiard\pool.py",line358,inworkloopresult=(True,prepare_result(fun(*args,**kwargs)))File"c:
我以前从未使用过Celery,正在尝试正确配置它。我使用redis作为代理并托管在heroku上。这是我第一次尝试运行异步任务,我很挣扎。我有一个我想定期运行的管理命令。celery.pyfrom__future__importabsolute_import,unicode_literalsimportosimportceleryfromceleryimportCeleryimportdjangofromdjango.confimportsettingsos.environ.setdefault('DJANGO_SETTINGS_MODULE','coffee.settings')ap
我正在从事AI图像处理工作,我使用Djangorest框架、Python3、tensorflow和keras以及Celery来处理异步任务。我也在使用redis服务器。但是当我执行celery任务时,它正在接收任务但卡在中间。它一直在发生。我正在尝试为amazonec2g3s.xlarge实例提供它,尽管它在我的本地机器上运行良好。我正在尝试将它部署到具有深度学习AMI(linux)版本的amazonec2g3s.xlarge实例中。@task(name="predict")defwork_out(cow_front_image,cow_back_image):returndetect