celery是一个基于Python的分布式调度系统,文档在这 ,最近有个需求,想要动态的添加任务而不用重启celery服务,找了一圈没找到什么好办法(也有可能是文档没看仔细),所以只能自己实现囉
为celery动态添加任务,首先我想到的是传递一个函数进去,让某个特定任务去执行这个传递过去的函数,就像这样
@app.task def execute(func, *args, **kwargs): return func(*args, **kwargs)
很可惜,会出现这样的错误
kombu.exceptions.EncodeError: Object of type 'function' is not JSON serializable
换一种序列化方式
@app.task(serializer='pickle') def execute(func, *args, **kwargs): return func(*args, **kwargs)
结果又出现一大串错误信息
ERROR/MainProcess] Pool callback raised exception: ContentDisallowed('Refusing to deserialize untrusted content of type …