def submit_job(self, func, job_key, args=None, kwargs=None, trigger=None, job_id=None, replace_exist=False, need_filter=False, **trigger_args): """ submit job to master through redis queue :type func: str or callable obj or unicode :type job_key: str or unicode :type args: tuple or list :type kwargs: dict :type trigger: str or unicode :type job_id: str or unicode :type replace_exist: bool :type trigger_args: dict """ # use worker's timezone if trigger don't provide specific `timezone` configuration trigger_args['timezone'] = self.timezone job_in_dict = { 'id': "%s:%s" % (self.name, job_id) if job_id else None, 'func': func, 'args': args, 'trigger': create_trigger(trigger, trigger_args) if trigger else None, 'kwargs': kwargs, 'job_key': '%s:%s' % (self.name, job_key), 'need_filter': need_filter, 'replace_exist': replace_exist } job = Job(**job_in_dict) job.check() self.jobqueue.enqueue('__elric_submit_channel__', job.serialize())