我正在尝试编写一个 celery 应用程序,将 numpy 数组(或任何任意对象)传递给工作人员。据我所知,这需要通过以下方式进行序列化pickle(注意:我知道安全隐患,但在这种情况下这不是问题)。
但是,即使在尝试了我能找到的所有可能的方法来允许 pickle 作为序列化程序之后,我仍然收到以下 kombu 异常:
kombu.exceptions.ContentDisallowed: Refusing to deserialize untrusted
content of type pickle (application/x-python-serialize)
Run Code Online (Sandbox Code Playgroud)
我当前的文件目前是:
# tasks.py
from celery import Celery
app = Celery(
'tasks',
broker='redis://localhost',
accept_content=['pickle'],
task_serializer='pickle'
)
@app.task
def adding(x, y):
return x + y
if __name__ == '__main__':
import numpy as np
adding.apply_async((np.array([1]), np.array([1])), serializer='pickle')
Run Code Online (Sandbox Code Playgroud)
另外我有一个配置文件:
# celeryconfig.py
print('configuring...')
accept_content = ['pickle', 'application/x-python-serialize']
task_serializer = 'pickle'
result_serializer = 'pickle'
from kombu import serialization
serialization.register_pickle()
serialization.enable_insecure_serializers()
Run Code Online (Sandbox Code Playgroud)
但是,如果我运行 worker ( celery …