芹菜什么时候储藏结果?

时间:2018-09-29 16:49:14

标签: python django numpy redis celery

我正在celery + redis用于Django Web应用程序中的任务。问题是,我不知道芹菜在什么时候将其任务结果作为JSON对象存储到数据库中。之后出现了一个问题,因为它不能将np数组存储为JSON。

import numpy as np
from scipy.sparse import dok_matrix


@shared_task(name="run_shortest_path_on_warehouse")
def run_shortest_path_on_warehouse(adjacency_matrix):
    sparse_matrix = dok_matrix(adjacency_matrix)
    dist_matrix = dijkstra_algorithm(sparse_matrix).tolist()
    return {'optimal_distance_matrix': dist_matrix}

由于以下异常,Celery无法存储结果:

{"exc_type": "EncodeError", "exc_message": ["TypeError(\"Object of type 'ndarray' is not JSON serializable\",)"], "exc_module":    "kombu.exceptions"}

我知道numpy数组不只是JSON可序列化的。这就是为什么我在定义.tolist变量时使用dist_matrix方法的原因。

问题是,芹菜在什么时候存储其变量,我如何存储来自numpy数组的信息作为任务结果?

1 个答案:

答案 0 :(得分:0)

Celery需要序列化任务的参数。希望这个问题对您有帮助: Django Celery send register email do not work