不太确定为什么传递参数无效?
如果使用此示例:
@task()def add(x, y): return x + y
让我们向MyCoolTask添加一些日志记录:
from celery import taskfrom celery.registry import tasksimport loggingimport celerylogger = logging.getLogger(__name__)class MyCoolTask(celery.Task): def __call__(self, *args, **kwargs): """In celery task this function call the run method, here you can set some environment variable before the run of the task""" logger.info("Starting to run") return self.run(*args, **kwargs) def after_return(self, status, retval, task_id, args, kwargs, einfo): #exit point of the task whatever is the state logger.info("Ending run") pass并创建一个扩展类(扩展MyCoolTask,但现在带有参数):
class AddTask(MyCoolTask): def run(self,x,y): if x and y: result=add(x,y) logger.info('result = %d' % result) return result else: logger.error('No x or y in arguments')tasks.register(AddTask)并确保将kwargs作为json数据传递:
{"x":8,"y":9}我得到结果:
[2019-03-05 17:30:25,853: INFO/MainProcess] Starting to run[2019-03-05 17:30:25,855: INFO/MainProcess] result = 17[2019-03-05 17:30:26,739: INFO/MainProcess] Ending run[2019-03-05 17:30:26,741: INFO/MainProcess] Task iamscheduler.tasks.AddTask[6a62641d-16a6-44b6-a1cf-7d4bdc8ea9e0] succeeded in 0.888684988022s: 17



