- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个程序可以通过 Python 的 itertools 生成大量产品列表;基本上是一大堆各种单词的组合。有多个集合可以通过 products() 函数运行。我想做的是让 Celery 帮助解决这个问题,方法是将每个集合分配给不同的 Celery Task,然后最后将它们组合起来。我的理解是和弦是实现此目的的方式。
所以基本上我有这个:
callback = tabulate_results.subtask()
header = []
for combo in combos_to_run:
header.append(run_product.subtask(args=(object_terms, combo)))
result = chord(header)(callback)
result.get()
及其两个支持的精简功能:
from celery import subtask, chord
@task()
def run_product(object_list, combo_set):
results = []
for result in product(object_list, *combo_set):
results.append(result)
return results
@task()
def tabulate_results(result_sets):
master_set = []
for result_set in result_sets:
master_set.extend(result_set)
return master_set
起初,chord 任务出现在 celeryev 中,但我在这里遇到了一个问题:Django Celery - Missing something but I have no idea what? Have results but can't get them 关于 Celery 返回一个与通过 MySQL 跟踪结果有关的错误。我确实在我的结果后端使用 MySQL,并将其切换到 Redis 摆脱了它。但是,现在我有一个新问题。当我通过 Django shell 运行代码时,celeryev 中没有出现任何任务,除此之外没有任何返回:
R IS: <GroupResult: 9f658e8d-591f-4fa9-9e79-4db0c51e8331 [9b199d1e-061f-413c-9521-4a3051dd121a, 2effbfb5-c9dc-4569-a63f-656c233a9387, 80911a60-6a22-46bb-83a1-d5a84c659794, 70acfa43-8ffe-4bc8-8ff1-1df6def035e1, dd417423-d1f6-44eb-8c4b-2ded40d7614f, fbff8adc-815d-459c-b914-b30528dbbd39]>
基本上是 Celery 消息,但没有数据。代码也永远不会返回,我的光标悬空。当我控制 C 时,行号是 Celery 中似乎正在等待的东西。我不知道为什么,因为 celeryev 没有给我任何任务。我已经确认其他任务确实显示在 celeryev 中。
我已经正常测试了我的函数,没有将它们作为 Celery 任务运行,并且它们正常返回。
精简版我试图让 Celery chords 帮助我的 Django 应用程序中的密集 Python 任务,但它们似乎没有返回任何结果或进入 celeryev。 Redis 后端。 celery 版本 3.0.15。 Django 1.4。
最佳答案
首先,让一个任务等待另一个任务的结果通常被认为是不好的做法(这就是为什么应该使用链式子任务)-- source
除此之外,您为和弦粘贴的语法不正确。这是相关链接:http://docs.celeryproject.org/en/master/getting-started/next-steps.html#chords .除其他问题外,您的代码不会将任何任务传递给和弦。和弦只是一组作为一个组处理的任务,之后触发回调。从文档中,这是和弦的正确语法:
>>> from celery import chord
>>> from proj.tasks import add, xsum
>>> chord((add.s(i, i) for i in xrange(10)), xsum.s())().get()
90
请注意,chord 有两个参数,一个是初始任务组,另一个是回调(以逗号分隔)。
这是一个开始,但听起来花更多的时间在文档上对你的帮助比什么都大。
关于Django celery 和弦不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15465839/
我使用Andrew的d3和弦图示例并希望将弯曲切片内的所有文本标签居中。我尝试了很多东西,但始终无法将文本居中。你知道需要什么巫师技巧吗? var width = 720, height = 720,
我正在尝试实现一个系统,在该系统中我可以同时播放一组频率,目前可以单独播放每个频率。下面我有一个代码,它播放给定的频率,一次播放一个。 import java.applet.*; im
是否可以一次重新映射使用 ctrl+k 作为第一个按键操作的所有和弦? 我使用 ctrl+k 删除该行的其余部分。由于它与 vscode 中使用的最常见和弦冲突,因此通过快捷方式重新映射快捷方式会很不
我是一名优秀的程序员,十分优秀!