草庐IT

CELERY_ALWAYS_EAGER

全部标签

python - 为不同的 celery worker 分配不同的任务

我正在使用此命令运行我的服务器:celeryworker-Qq1,q2-c2这表明我的服务器将处理队列q1和q2上的所有任务,并且我有2个worker正在运行。我的服务器应该支持2个不同的任务:@celery.task(name='test1')deftest1():print"test1"time.sleep(3)@celery.task(name='test2')deftest2():print"test2"如果我将我的test1任务发送到q1队列并将test2任务发送到q2,两个工作人员都将同时运行任务。所以结果将是:test1test2test1test2...现在我需要的是我

python - celery 节拍在同一时间间隔组下安排多个任务

我正在尝试设置每分钟都运行的两个任务。有什么办法可以将它们组合在一起运行吗?我在celeryconfig.py中指定了CELERYBEAT_SCHEDULE,如下所示:CELERYBEAT_SCHEDULE={'every-minute':{'task':'tasks.add','schedule':crontab(minute='*/1'),'args':(1,2)},}所以如果我想运行两个任务,我会期待这样的事情吗?CELERYBEAT_SCHEDULE={'every-minute':{'task':['tasks.add','task.multiply'],'schedule'

python - celery 不采摘 CELERY_ALWAYS_EAGER 设置

我正在运行Django1.8+Celery4.0.2Celery配置良好,可以在redis后端本地运行我的Django任务。但是当我尝试使用CELERY_ALWAYS_EAGER=True设置时,此设置无效。其他设置不是这种情况,例如CELERY_TIMEZONE具体来说,在pdb中,我看到app.conf.task_always_eager是Falselib/python2.7/site-packages/celery/app/task.py(520)apply_async()SosomehowCELERY_ALWAYS_EAGERisnotpickedupandhasnoeffec

python - 在 celery 中流式传输结果

我正在尝试使用celery在一组服务器上安排和运行任务。每个任务运行时间都比较长(几个小时),并且涉及使用子进程调用具有给定输入的特定程序。该程序在stdout和stderr中产生大量输出。有没有办法近乎实时地向客户端显示程序产生的输出?流式传输输出,以便客户端无需登录服务器即可观看服务器上运行的任务产生的输出? 最佳答案 您没有指定很多要求和约束。我假设您已经在某处拥有一个Redis实例。你可以做的是逐行读取其他进程的输出并通过redis发布:这是一个示例,您可以在其中将数据echo到文件/tmp/foo中以进行测试:import

python - 在 Celery 任务中获取 task_id

这可能是一个愚蠢的问题,但它让我从Ruby背景中难过。当我尝试打印时,我有一个看起来像这样的对象。printcelery.AsyncResult.task_id>>>我原以为这里会打印task_id属性的实际值。如何获得实际值?更新1@celery.taskdefscan(host):printcelery.AsyncResult.task_idcmd='ps-ef'cm=shlex.split(cmd)scan=subprocess.check_output(cm)returnscan最好的问候。 最佳答案 短篇小说,在函数sca

python - celery 链不适用于批处理

乍一看,我非常喜欢Celery中的“批处理”功能,因为我需要在调用API之前对一定数量的ID进行分组(否则我可能会被踢出局)。不幸的是,在进行一些测试时,批处理任务似乎不能很好地与其余的Canvas基元(在本例中为链)配合使用。例如:@a.task(base=Batches,flush_every=10,flush_interval=5)defget_price(requests):forrequestinrequests:a.backend.mark_as_done(request.id,42,request=request)print"filter_by_price"+str([r

python - 使用 Celery 作为 Twisted 应用程序的控制 channel

我正在尝试使用Celery作为Twisted应用程序的控制channel。我的Twisted应用程序是一个抽象层,它为各种本地运行的进程(通过ProcessProtocol)提供标准接口(interface)。我想使用Celery来远程控制它——AMQP似乎是从中央位置控制许多Twisted应用程序的理想方法,我想利用Celery基于任务的功能,例如任务重试、子任务等这并没有像我计划的那样工作,我希望有人能帮助我指明正确的方向以实现这一目标。我在运行脚本时试图实现的行为是:开始一个稍微修改过的celeryd(见下)等待Celery任务收到“启动流程”任务时,生成ProcessProto

python - 本地主机上的 Django/Celery 多个队列 - 路由不起作用

我关注了celerydocs在我的开发机器上定义2个队列。我的celery设置:CELERY_ALWAYS_EAGER=TrueCELERY_TASK_RESULT_EXPIRES=60#1minsCELERYD_CONCURRENCY=2CELERYD_MAX_TASKS_PER_CHILD=4CELERYD_PREFETCH_MULTIPLIER=1CELERY_CREATE_MISSING_QUEUES=TrueCELERY_QUEUES=(Queue('default',Exchange('default'),routing_key='default'),Queue('feed

python - 具有多个装饰器的 celery 任务不会自动注册任务名称

我有一个看起来像这样的任务frommybasetask_moduleimportMyBaseTask@task(base=MyBaseTask)@my_custom_decoratordefmy_task(*args,**kwargs):pass我的基本任务是这样的fromceleryimporttask,TaskclassMyBaseTask(Task):abstract=Truedefault_retry_delay=10max_retries=3acks_late=True我遇到的问题是celeryworker正在用名称注册任务'mybasetask_module.__inner

python - 如何监控 celery 中的队列健康状况

我有以下设置:具有100个工作器的通用工作器池具有50个工作器的高优先级工作器池我使用如此大的数字是因为我的任务大部分时间都在等待超时很长的I/O(执行可能需要长达20秒才能响应的HTTP请求)使用RabbitMQ作为代理我已经使用init.dscripts将celeryd设置为守护进程来自celery'dgithub,具有以下参数:CELERYD_OPTS="--time-limit=600-c:low_p100-c:high_p50-Q:low_plow_priority_queue_name-Q:high_phigh_priority_queue_name"我的问题是,有时队列似