【发布时间】:2021-12-31 06:51:46
【问题描述】:
我有一个对象model_test_api,如下所示。
import test_script
model_test_api = test_script.TestAPI(api)
需要新TestAPI的api也是一个对象。
import model_api
api = model_api.Model_API()
我正在尝试以下two methods 将model_test_api 传递给celery 任务。
1. another_function.apply_async(model_test_api)
2. another_function.apply_async(lambda: test_script.TestAPI(api))
但是,他们都给了我一个错误kombu.exceptions.EncodeError: Object of type function is not JSON serializable。然后我将 model_test_api 打包到一个 json 对象中。
import json
json_test_api = json.dumps(model_test_api.__dict__)
another_function.apply_async(json_test_api)
它给了我另一个错误TypeError: Object of type Model_API is not JSON serializable。任何人都知道我该怎么做?提前致谢。
【问题讨论】:
-
python 中的一切都是对象。您正在传递它,但正如错误消息明确指出的那样,您传递的东西不是 JSON 可序列化的,这可能是必需的。
-
错误消息告诉我们您的描述没有告诉我们的事情:您正在尝试创建 JSON。但是,只有您的示例 2 正在传递一个函数。示例 1 是传递一个对象。但是,对象也不能转换为 JSON。您从哪里获得要运行的代码?
-
Thanks@TimRoberts here
another_function这里描述的是celery的分布式函数。 -
TestAPI(api)返回什么?它真的是对象构造器还是装饰器? -
@jasonshu 一切都是对象。说“它返回一个对象”并没有告诉我们任何事情。
标签: python python-3.x celery