我在 Django Web 应用程序中使用芹菜 + redis 执行任务。问题是我不知道芹菜在什么时候将其任务结果作为 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}
芹菜无法存储结果,因为此异常:
{"exc_type": "EncodeError", "exc_message": ["TypeError("Object of type 'ndarray' is not JSON serializable",)"], "exc_module": "kombu.exceptions"}
我知道 numpy 数组不仅仅是 JSON 可序列化的。这就是为什么我在定义dist_matrix
变量时使用.tolist
方法。
问题是,芹菜在什么时候存储它是变量的,我如何将来自 numpy 数组的信息存储为任务结果?
芹菜需要序列化任务的参数。 希望同样的问题有所帮助: 姜戈芹菜发送注册电子邮件不起作用