我有一个任务链:
result = celery.chain(task_a.s(), task_b.s())()
我只对task_b()
的结果感兴趣,但是celery会将task_a()
和task_b()
的结果保存到后端。
有什么方法可以只存储task_b()
的结果吗?
答案 0 :(得分:1)
我还没有测试过,但是基于文档(1,2)
应该可以向ignore_result=True
调用中添加.s()
参数。
如果上述方法不起作用,那么您始终可以配置整个任务
不存储结果(通过将ignore_result=True
添加到任务类或装饰器)
重要提示:根据Celery docs,在和弦中使用的任务不能忽略其结果。 因此,尽管它不应该涉及链条,但是如果您打算使用和弦,则需要注意。
答案 1 :(得分:0)
尝试将link与ignore 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;
});