예제 #1
0
 def launch_task(self, t, created_pk=None):
     if created_pk:
         if t.get('video_id', '') == '__pk__':
             t['video_id'] = created_pk
         for k, v in t.get('arguments', {}).iteritems():
             if v == '__pk__':
                 t['arguments'][k] = created_pk
     if 'video_id' in t:
         v = Video.objects.get(pk=t['video_id'])
         map_filters = get_map_filters(t, v)
     else:
         map_filters = [{}]
     for f in map_filters:
         args = copy.deepcopy(t.get(
             'arguments', {}))  # make copy so that spec isnt mutated.
         if f:
             if 'filters' not in args:
                 args['filters'] = f
             else:
                 args['filters'].update(f)
         dt = TEvent()
         dt.parent_process = self.process
         if 'video_id' in t:
             dt.video_id = t['video_id']
         dt.arguments = args
         dt.queue, op = get_queue_name_and_operation(
             t['operation'], t.get('arguments', {}))
         dt.operation = op
         dt.save()
         self.task_results[dt.pk] = app.send_task(name=dt.operation,
                                                  args=[
                                                      dt.pk,
                                                  ],
                                                  queue=dt.queue)
 def launch_task(self, t):
     for k, v in t.get('arguments', {}).iteritems():
         if (type(v) is str
                 or type(v) is unicode) and v.startswith('__created__'):
             t['arguments'][k] = self.get_created_object_pk(v)
     dv = None
     if t['operation'] in settings.NON_PROCESSING_TASKS:
         dv = None
     elif 'video_id' in t:
         if t['video_id'].startswith('__created__'):
             t['video_id'] = self.get_created_object_pk(t['video_id'])
         dv = Video.objects.get(pk=t['video_id'])
     elif 'video_selector' in t['arguments']:
         dv = Video.objects.get(**t['arguments']['video_selector'])
         t['video_id'] = dv.pk
     if dv:
         map_filters = get_map_filters(t, dv)
     else:
         map_filters = [{}]
     # This is useful in case of perform_stream_capture where batch size is used but number of segments is unknown
     if map_filters == []:
         map_filters = [{}]
     for f in map_filters:
         args = copy.deepcopy(t.get(
             'arguments', {}))  # make copy so that spec isnt mutated.
         if f:
             if 'filters' not in args:
                 args['filters'] = f
             else:
                 args['filters'].update(f)
         dt = TEvent()
         dt.parent_process = self.process
         dt.task_group_id = t['task_group_id']
         dt.parent = self.root_task
         if 'video_id' in t:
             dt.video_id = t['video_id']
         if 'training_set_id' in t:
             dt.training_set_id = t['training_set_id']
         elif 'trainingset_selector' in t['arguments']:
             dt.training_set_id = TrainingSet.objects.get(
                 **t['arguments']['trainingset_selector'])
         dt.arguments = args
         dt.queue, op = get_queue_name_and_operation(
             t['operation'], t.get('arguments', {}))
         dt.operation = op
         dt.save()
         self.task_results[dt.pk] = app.send_task(name=dt.operation,
                                                  args=[
                                                      dt.pk,
                                                  ],
                                                  queue=dt.queue)
예제 #3
0
 def launch_task(self, t, created_pk=None):
     if created_pk:
         if t.get('video_id', '') == '__pk__':
             t['video_id'] = created_pk
         for k, v in t.get('arguments', {}).iteritems():
             if v == '__pk__':
                 t['arguments'][k] = created_pk
     if 'video_id' in t:
         v = Video.objects.get(pk=t['video_id'])
         map_filters = get_map_filters(t, v)
     else:
         map_filters = [{}]
     # This is useful in case of perform_stream_capture where batch size is used but number of segments is unknown
     if map_filters == []:
         map_filters = [{}]
     for f in map_filters:
         args = copy.deepcopy(t.get(
             'arguments', {}))  # make copy so that spec isnt mutated.
         if f:
             if 'filters' not in args:
                 args['filters'] = f
             else:
                 args['filters'].update(f)
         dt = TEvent()
         dt.parent_process = self.process
         dt.task_group_id = t['task_group_id']
         if 'video_id' in t:
             dt.video_id = t['video_id']
         dt.arguments = args
         dt.queue, op = get_queue_name_and_operation(
             t['operation'], t.get('arguments', {}))
         dt.operation = op
         dt.save()
         self.task_results[dt.pk] = app.send_task(name=dt.operation,
                                                  args=[
                                                      dt.pk,
                                                  ],
                                                  queue=dt.queue)