- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在从我的 django
应用程序中的 celery 启动一个 chord
以响应请求。和弦正确执行,但 django 从未发布 pub-sub channel 。杀死 django 服务器释放 channel ,然后它从 redis-cli pubsub channels
中消失。
点击 /api/start/
并在运行 celery 的选项卡中观察任务完成后,我看到剩余 5 个 channel 。杀死 django 会移除 channel ,杀死 celery worker 对它们没有影响。
redis-cli pubsub channels
1) "celery-task-meta-chord-lphsmq-chunk-4-14"
2) "celery-task-meta-chord-lphsmq-chunk-2-12"
3) "celery-task-meta-chord-lphsmq-chunk-3-13"
4) "celery-task-meta-chord-lphsmq-chunk-1-11"
5) "celery-task-meta-chord-lphsmq-chunk-0-10"
我看到当一切正常时 channel 仍然存在,因此不会抛出任何错误。
谁能看出我做错了什么?我知道 celery 中报告了一些问题,但我不确定这是否来自于它们:
代码:
# --- endpoint.py -------------------------------------------
chord_key = get_random_string(6, string.ascii_lowercase)
all_tasks = celery.chord(
task_id="chord-%s" % chord_key,
header=celery.group(
tasks.process_chunk.subtask(args=(x,), task_id="chord-%s-chunk-%s-%s" % (chord_key, i, x))
for i, x in enumerate(range(10, 15))
),
# immutable = ignore results from parent
body=celery.chain(
tasks.post_step_1.subtask(args=(20,), task_id="chord-%s-post-1" % chord_key, immutable=True),
tasks.post_step_2.subtask(args=(20,), task_id="chord-%s-post-1" % chord_key, immutable=True),
)
)
result = all_tasks.apply_async()
return Response(data=dict(chord_key=chord_key, result=repr(result)))
# --- tasks.py ----------------------------------------------
@celery_app.task(bind=True, ignore_result=False)
def process_chunk(self, x):
logging.error(" ~ executing process-chunk: %s" % x)
return x * 2
@celery_app.task(bind=True, ignore_result=False)
def post_step_1(self, y):
logging.error(" ~ executing post-step-1")
return y * 3
@celery_app.task(bind=True, ignore_result=False)
def post_step_2(self, z):
logging.error(" ~ executing post-step-2")
return z * 5
最佳答案
你的 Chord 看起来很复杂,也许这就是 celery 遇到困难的原因,我建议你自己实现和弦逻辑,它不是很复杂。试试这个……我基本上是在等待使用和弦机制的任务
# --- endpoint.py -------------------------------------------
chain_tasks = celery.chain(
tasks.post_step_1.subtask(args=(20,), task_id="chord-%s-post-1" % chord_key, immutable=True),
tasks.post_step_2.subtask(args=(20,), task_id="chord-%s-post-1" % chord_key, immutable=True)
.apply_async()
chain_result= chain_tasks.get() // WAIT TO FINISH
group_task = celery.group(tasks.process_chunk.subtask(args=(chain_result,), task_id="chord-%s-chunk-%s-%s" % (chord_key, i, x))
for i, x in enumerate(range(10, 15)).apply_async()
group_result = group_task.get()
return Response(data=dict(chord_key=chord_key, result=repr(group_result)))
不确定这是否正是您想要实现的目标,但我认为通过一些调整它会起作用。祝你好运。
关于django - apply_async 后 Celery chord 不释放 redis pubsub channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50617142/
我有代码,以便当我单击“=”时使用“和弦方法”找到解决方案 如何才能使结果显示在控制台的标签中? var resultsArray = [AnyObject]() var a: Float = 0.0
我有一个玩家之间的传球流量数据,here's the data ,第一列和第一行表示玩家编号。 我想将这些数据可视化为 Uber Rides .我认为它是用 Chord Diagram 构建的来自 B
我需要模拟按 CTRL + C、CTRL + V 等。 Selenium 为我们提供了两种方法:webdriver.Key.chord(var_args),示例: webdriver.Key.chor
我在 Celery 中使用 Chord 来实现一个回调,当一组并行任务完成执行时会调用该回调。具体来说,我有一组函数可以包装对外部 API 的调用。在我处理结果并在 Chord 回调中更新我的数据库之
我真的很喜欢 key-chord.el但我只需要它在我没有做任何事情的短暂延迟后开始按下按键时触发。我想知道是否容易修改key-chord.el要做到这一点。 为什么我想要这很简单,我会尽量简单地解释
这里是 D3 和 Javascript 新手。我正在制作一张和弦图,其中一条弧线从中心拉开。我已经设法将圆弧移动到我想要的位置,但我想知道如何使和弦组再次接触圆弧而不弄乱其他和弦组的位置? 这是一张图
我想为自己的键盘开发自己的键盘驱动程序。我必须使用 GPIO 来识别关键事件并使用 I2c 来获取扫描码。我打算开发这样的键盘驱动程序。 #include #include #define GPI
一些 MS 应用程序支持和弦的概念,例如 CTRL + X , Y 表示“按住 CTRL,按 X,然后按 Y”。 这是他们(和其他公司)实现的定制产品,还是内置于任何 API 中?如果能够基于和弦设置
某些键盘“和弦”(同时按下的键的组合)将无法在浏览器中正确注册(已测试 Chrome 和 Firefox)。例如,使用下面的代码,试试这个: 1) 按“e”键(它将记录“key 69”) 2) 在按住
当我启动包含一组任务和一个回调的 chord() 列表时,只有在完成所有任务组后才会调用回调,即使是不在当前和弦。 这里是更好解释的代码: import time from celery import
我在执行 selenium 代码时遇到以下错误。 代码: driver.find_element_by_id(PlaylistManagerLocators.Folder_Name).send_key
我正在尝试在 cocoa 中的 MenuItem 上显示多个组合键。这通常被称为“和弦”。 例如,我想添加一个如下所示的菜单项:“操作 1 控制 K、F”或“菜单项 2 K、L” 这在 Objecti
我正在从我的 django 应用程序中的 celery 启动一个 chord 以响应请求。和弦正确执行,但 django 从未发布 pub-sub channel 。杀死 django 服务器释放 c
我正在使用 Django Celery 和 Redis 来运行一些这样的任务: header = [ tasks.invalidate_user.subtask(args = (user)),
我们正在使用 Celery 实现工作流程。首先,我们需要并行运行一些任务,当它们全部完成后,我们需要运行一个任务。 看来我们可以使用和弦,或者组和链: chord(tasks, task) 对比 gr
我一直在 Selenium 中使用键盘快捷键来执行 UI 功能,并且一直使用 Keys.chord() 来模拟同时按键。它们在 Firefox 和 Chrome 中工作得很好,但在 Internet
我刚刚完成了一个 Django-React 应用程序的创建,并将更改推送到 Heroku。前端(JS和CSS)出现在网站上没有问题,但是向后端请求导致以下错误: [blocked] The page
有没有人以前在 celery(Python 中的分布式任务 worker )中看到过这个错误? Traceback (most recent call last): File "/home/mca
我是一名优秀的程序员,十分优秀!