コード例 #1
0
ファイル: task.py プロジェクト: ealmuina/edgc-repository
def _get_task(domain_id):
    try:
        domain = Domain.get_by_id(domain_id)
        tasks = Task.select().where(~Task.completed, Task.domain.is_null(),
                                    Task.cpu_intensity <= domain.mflops,
                                    Task.com_intensity <= domain.mpi_bandwidth,
                                    Task.mem_intensity <= domain.memory)
        if GREEDY_TASKS:
            tasks = sorted(
                tasks,
                key=lambda t: _distance(
                    (t.cpu_intensity, t.com_intensity, t.mem_intensity),
                    (domain.mflops, domain.mpi_bandwidth, domain.memory)))
            task = tasks[0]
        else:
            task = tasks.get()
        task.domain = domain
        task.assign_date = datetime.now()
        task.save()
        return task
    except Domain.DoesNotExist:
        abort(Response('Domain not found', 404))
    except (Task.DoesNotExist, IndexError):
        abort(Response('No tasks available', 503))