芹菜:如何仅存储最后一个链结的结果?

时间:2019-06-06 12:42:22

标签: python python-3.x celery celery-4

我有一个任务链:

result = celery.chain(task_a.s(), task_b.s())()

我只对task_b()的结果感兴趣,但是celery会将task_a()task_b()的结果保存到后端。

有什么方法可以只存储task_b()的结果吗?

2 个答案:

答案 0 :(得分:1)

我还没有测试过,但是基于文档(12) 应该可以向ignore_result=True调用中添加.s()参数。

如果上述方法不起作用,那么您始终可以配置整个任务 不存储结果(通过将ignore_result=True添加到任务类或装饰器)

重要提示:根据Celery docs,在和弦中使用的任务不能忽略其结果。 因此,尽管它不应该涉及链条,但是如果您打算使用和弦,则需要注意。

答案 1 :(得分:0)

尝试将linkignore results混合使用以完成第一个任务。

this.qwertyKeyboard = new JPanel();
this.qwertyKeyboard.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;

c.gridx = 0;
c.gridy = 0;
c.gridwidth = 2;
c.weighty = 1;
c.weightx = 1;

char[] keysRow1 = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'};
char[] keysRow2 = {'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'};
char[] keysRow3 = {'⇧', 'z', 'x', 'c', 'v', 'b', 'n', 'm'};
Map<String, Integer> keysRow4 = new LinkedHashMap<>();
keysRow4.put("Draft", 4);
keysRow4.put("Space", 12);
keysRow4.put("Send", 4);

for (char key : keysRow1) {
    qwertyKeyboard.add(new Key(key, l), c);
    c.gridx += 2;
}

c.gridx = 1;
c.gridy = 1;

for (char key : keysRow2) {
    qwertyKeyboard.add(new Key(key, l), c);
    c.gridx += 2;
}

c.gridx = 0;
c.gridy = 2;

for (char key : keysRow3) {
    qwertyKeyboard.add(new Key(key, l), c);
    c.gridx += 2;
}

c.gridx = 0;
c.gridy = 3;

keysRow4.forEach((key, value) -> {
    c.gridwidth = value;
    qwertyKeyboard.add(new JButton(key), c);
    c.gridx += value;
});