小编Mei*_*ilo的帖子

如何让celery任务从任务中失败?

在某些情况下,我想让celery任务从该任务中失败.我尝试了以下方法:

from celery.task import task
from celery import states

@task()
def run_simulation():
    if some_condition:
        run_simulation.update_state(state=states.FAILURE)
        return False
Run Code Online (Sandbox Code Playgroud)

但是,该任务仍然报告成功:

任务sim.tasks.run_simulation [9235e3a7-c6d2-4219-bbc7-acf65c816e65]成功于1.17847704887s:False

似乎状态只能在任务运行时修改,一旦完成 - 芹菜将状态更改为它认为的结果(参考此问题).有没有办法,通过提出异常来使任务失败,让芹菜返回任务失败?

celery celery-task

30
推荐指数
3
解决办法
1万
查看次数

如何将pyplot函数附加到图形实例?

以前,我遇到了多个Matplotlib数字之间干扰的问题.最后,我跟踪了一个问题,即某些pyplot函数没有附加到它们的图形实例,但可以在其他一些并行创建的图形实例中呈现.

这是一些示例代码:

from django.http import HttpResponse
from numpy import arange, meshgrid
from matplotlib.mlab import bivariate_normal

def show_chart(request):
    delta = 0.025
    x = arange(-3.0, 3.0, delta)
    y = arange(-2.0, 2.0, delta)
    X, Y = meshgrid(x, y)
    Z1 = bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
    Z2 = bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
    Z = 10.0 * (Z2 - Z1)

    from matplotlib.pyplot import figure, contour
    fig1 = figure(figsize=(4, 4), facecolor='white')
    contour(X, Y, Z)

    response = HttpResponse(content_type='image/png')
    fig1.savefig(response, format='png')
    fig1.clear()
    return …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

11
推荐指数
2
解决办法
5157
查看次数

从列表中删除所有多个事件项的最快方法?

从任意项列表中删除所有多个事件项的最快方法是什么(在我的示例中是列表列表)?在结果中,只显示列表中一次出现的项目,从而删除所有重复项.

输入:[[1,2],[1,3],[1,4],[1,2],[1,4],[1,2]]

输出:[[1,3],]

这个解决方案很慢:

output = [item for item in input if input.count(item)==1]
Run Code Online (Sandbox Code Playgroud)

这个解决方案更快:

duplicates = []
output = []
for item in input:
    if not item in duplicates:
        if item in output:
            output.remove(item)
            duplicates.append(item)
        else:
           output.append(item)
Run Code Online (Sandbox Code Playgroud)

有没有更好的解决方案,可能首先对列表进行排序?任何想法都表示赞赏.

python

4
推荐指数
1
解决办法
2579
查看次数

标签 统计

python ×2

celery ×1

celery-task ×1

matplotlib ×1

numpy ×1