Пример #1
0
def download_async(uri, local, clear_local=False):
    subfolder = os.path.dirname(local)
    if subfolder and not os.path.exists(subfolder):
        os.makedirs(subfolder)
    command = {'uri': uri, 'local': local, 'clear_local': False}
    task = boss.Task(task_id=uri, command=command)
    boss.dedicate(task)
Пример #2
0
def create_download_task(uri, output_dir, clear_local=False):
    '''
    @param uri Absolute URI
    '''
    if not is_full_uri(uri):
        raise StreamBotError('{uri} is not full URI'.format(uri=uri))

    local = _get_local(uri, output_dir)
    cmd = {'uri': uri, 'local': local, 'clear_local': clear_local}
    return boss.Task(uri, cmd, 'START')
Пример #3
0
    def test_failed_tasks_saved(self):
        boss.start(action=failed_action)
        for i in range(10):
            task = boss.Task(i, {})
            boss.assign_task(task)

        total_check = 0
        while not boss.have_all_tasks_done():
            time.sleep(1)
            total_check += 1
            if total_check > 10:
                self.fail('workers have not stpped in time')

        boss.stop()
        for k, v in boss.tasks().items():
            self.assertTrue(v.is_failed())
Пример #4
0
    def test_boss_can_shut_down(self):
        boss.start(action=half_done_half_failed_action)
        for i in range(10):
            task = boss.Task(i, {})
            boss.assign_task(task)

        total_check = 0
        while not boss.have_all_tasks_done():
            time.sleep(1)
            total_check += 1
            if total_check > 10:
                self.fail('workers have not stpped in time')

        boss.stop()
        for t in boss._WORKING_THREADS:
            self.assertFalse(t.isAlive())
Пример #5
0
    def test_duplicated_tasks_run_only_once(self):
        boss.start(action=half_done_half_failed_action)
        num_unique_tasks = 10
        for i in range(num_unique_tasks):
            task = boss.Task(i, {})
            # assign each task twice
            boss.assign_task(task)
            boss.assign_task(task)

        total_check = 0
        while not boss.have_all_tasks_done():
            time.sleep(1)
            total_check += 1
            if total_check > 10:
                self.fail('workers have not stpped in time')

        boss.stop()
        self.assertEqual(len(boss.tasks()), num_unique_tasks)
Пример #6
0
    def test_tasks_returns_all_assigned_tasks(self):
        boss.start(action=done_action)
        num_tasks = 10
        for i in range(num_tasks):
            task = boss.Task(i, {})
            boss.assign_task(task)

        total_check = 0
        while not boss.have_all_tasks_done():
            time.sleep(1)
            total_check += 1
            if total_check > 10:
                self.fail('workers have not stpped in time')

        boss.stop()
        assigned_tasks = boss.tasks()
        self.assertTrue(len(assigned_tasks), num_tasks)
        for k, v in boss.tasks().items():
            self.assertTrue(v.id in range(num_tasks))
Пример #7
0
 def test_constructor_id(self):
     task_id = 1
     task = boss.Task(task_id, {})
     self.assertEqual(task.id, task_id)
Пример #8
0
 def test_constructor_default_status(self):
     task = boss.Task(1, {})
     self.assertEqual(task.status, 'START')
Пример #9
0
 def teste_is_failed(self):
     task = boss.Task(1, {}, 'FAILED')
     self.assertTrue(task.is_failed())
Пример #10
0
 def test_set_failed(self):
     task = boss.Task(1, {})
     task.set_failed()
     self.assertEqual(task.status, 'FAILED')
Пример #11
0
 def test_is_done(self):
     task = boss.Task(1, {}, 'DONE')
     self.assertTrue(task.is_done())
Пример #12
0
 def test_set_done(self):
     task = boss.Task(1, {})
     task.set_done()
     self.assertEqual(task.status, 'DONE')
Пример #13
0
 def test_constructor_command(self):
     command = {'cmd', 'cmd'}
     task = boss.Task(1, command)
     self.assertIn('cmd', task.command)