Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django芹菜和弦未执行_Django_Celery_Django Celery_Djcelery - Fatal编程技术网

Django芹菜和弦未执行

Django芹菜和弦未执行,django,celery,django-celery,djcelery,Django,Celery,Django Celery,Djcelery,我有一个通过Python的itertools生成大量产品列表的程序;基本上是一大组不同的单词组合。通过products()函数可以运行多个集合。我想做的是让芹菜帮助完成这项任务,将每组芹菜分配给不同的任务,然后在最后将它们组合起来。我的理解是和弦就是这样做的 所以基本上我有这个: callback = tabulate_results.subtask() header = [] for combo in combos_to_run: header.append(run_product.s

我有一个通过Python的itertools生成大量产品列表的程序;基本上是一大组不同的单词组合。通过products()函数可以运行多个集合。我想做的是让芹菜帮助完成这项任务,将每组芹菜分配给不同的任务,然后在最后将它们组合起来。我的理解是和弦就是这样做的

所以基本上我有这个:

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中,但我在这里遇到了一个问题: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]>
R是:
基本上是芹菜信息,但没有数据。代码也永远不会返回,我的光标一直挂着。当我控制C输出时,行号是芹菜中的某个东西,似乎正在等待。我不知道该怎么办,因为赛莱耶夫没有给我任何任务。我已经确认了其他任务确实在celeryev中显示

我已经正常测试了我的函数,没有将它们作为芹菜任务运行,并且它们正常返回

短版
我试图让芹菜和弦在我的Django应用程序中帮助执行密集的Python任务,但它们似乎没有返回任何结果或进入celeryev。Redis后端。芹菜3.0.15版。Django 1.4.

首先,让一个任务等待另一个任务的结果通常被认为是不好的做法(这就是为什么应该使用链式子任务的原因)——

除此之外,为和弦粘贴的语法是不正确的。以下是相关链接:。除其他问题外,您的代码不会将任何任务传递给chord。chord只是一组任务,它们作为一个组进行处理,然后启动回调。根据文档,以下是和弦的正确语法:

>>> 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有两个参数,一方面是初始任务组,另一方面是回调(用逗号分隔)


这是一个开始,但听起来花更多的时间在文档上对您的帮助比什么都大。

如果您看到这一点,格式是匹配的。您是否尝试过为标题任务设置时间限制,并定义格式?