Python 用普罗米修斯观察django背景任务指标

Python 用普罗米修斯观察django背景任务指标,python,django,prometheus,Python,Django,Prometheus,我试图在Django中为Django后台任务调用的函数收集特定于应用程序的Prometheus度量 在我的应用程序models.py文件中,我首先添加了一个自定义指标,其中包括: my_task_metric = Summary("my_task_metric ", "My task metric") 然后,我将此添加到我的函数中,以捕获上次成功运行此函数的时间戳: @background() def my_function(): # my

我试图在Django中为Django后台任务调用的函数收集特定于应用程序的Prometheus度量

在我的应用程序
models.py
文件中,我首先添加了一个自定义指标,其中包括:

my_task_metric = Summary("my_task_metric ", "My task metric")
然后,我将此添加到我的函数中,以捕获上次成功运行此函数的时间戳:


@background()
def my_function():

    # my function code here

    # collecting the metric
    my_task_metric.observe((datetime.now().replace(tzinfo=timezone.utc) - datetime(1970, 1, 1).replace(tzinfo=timezone.utc)).total_seconds())
当我调出Django时,将在
/metrics
中创建并访问度量。但是,运行此函数后,sum的值为0,就好像没有遵守度量一样。我错过什么了吗


或者有没有更好的方法来监控普罗米修斯的django后台任务?我曾尝试使用django后台任务模型,但我发现它有点麻烦。

我最终利用Prometheus Pushgateway功能创建了一个装饰器

def push_metric_to_prometheus(function):

    registry = CollectorRegistry()

    Gauge(f'{function.__name__}_last_successful_run', f'Last time {function.__name__} successfully finished',
          registry=registry).set_to_current_time()

    push_to_gateway('bolero.club:9091', job='batchA', registry=registry)

    return function
然后是我的功能(装饰者的顺序很重要)

@background()
@push_metric_to_prometheus
def my_function():

    # my function code here