mirror of
https://github.com/clearml/clearml-server
synced 2025-06-26 23:15:47 +00:00
Add keep alive api
This commit is contained in:
parent
76418eec1b
commit
61fb6553e6
@ -23,23 +23,14 @@ from apimodels.tasks import (
|
|||||||
SetRequirementsRequest,
|
SetRequirementsRequest,
|
||||||
TaskRequest,
|
TaskRequest,
|
||||||
DeleteRequest,
|
DeleteRequest,
|
||||||
|
PingRequest,
|
||||||
)
|
)
|
||||||
from bll.event import EventBLL
|
from bll.event import EventBLL
|
||||||
from bll.task import (
|
from bll.task import TaskBLL, ChangeStatusRequest, update_project_time, split_by
|
||||||
TaskBLL,
|
|
||||||
ChangeStatusRequest,
|
|
||||||
update_project_time,
|
|
||||||
split_by,
|
|
||||||
)
|
|
||||||
from database.errors import translate_errors_context
|
from database.errors import translate_errors_context
|
||||||
from database.model.model import Model
|
from database.model.model import Model
|
||||||
from database.model.task.output import Output
|
from database.model.task.output import Output
|
||||||
from database.model.task.task import (
|
from database.model.task.task import Task, TaskStatus, Script, DEFAULT_LAST_ITERATION
|
||||||
Task,
|
|
||||||
TaskStatus,
|
|
||||||
Script,
|
|
||||||
DEFAULT_LAST_ITERATION,
|
|
||||||
)
|
|
||||||
from database.utils import get_fields, parse_from_call
|
from database.utils import get_fields, parse_from_call
|
||||||
from service_repo import APICall, endpoint
|
from service_repo import APICall, endpoint
|
||||||
from timing_context import TimingContext
|
from timing_context import TimingContext
|
||||||
@ -48,14 +39,7 @@ from utilities import safe_get
|
|||||||
task_fields = set(Task.get_fields())
|
task_fields = set(Task.get_fields())
|
||||||
task_script_fields = set(get_fields(Script))
|
task_script_fields = set(get_fields(Script))
|
||||||
get_all_query_options = Task.QueryParameterOptions(
|
get_all_query_options = Task.QueryParameterOptions(
|
||||||
list_fields=(
|
list_fields=("id", "user", "tags", "type", "status", "project"),
|
||||||
"id",
|
|
||||||
"user",
|
|
||||||
"tags",
|
|
||||||
"type",
|
|
||||||
"status",
|
|
||||||
"project",
|
|
||||||
),
|
|
||||||
datetime_fields=("status_changed",),
|
datetime_fields=("status_changed",),
|
||||||
pattern_fields=("name", "comment"),
|
pattern_fields=("name", "comment"),
|
||||||
fields=("parent",),
|
fields=("parent",),
|
||||||
@ -65,6 +49,9 @@ task_bll = TaskBLL()
|
|||||||
event_bll = EventBLL()
|
event_bll = EventBLL()
|
||||||
|
|
||||||
|
|
||||||
|
TaskBLL.start_non_responsive_tasks_watchdog()
|
||||||
|
|
||||||
|
|
||||||
def set_task_status_from_call(
|
def set_task_status_from_call(
|
||||||
request: UpdateRequest, company_id, new_status=None, **kwargs
|
request: UpdateRequest, company_id, new_status=None, **kwargs
|
||||||
) -> dict:
|
) -> dict:
|
||||||
@ -154,7 +141,10 @@ def stop(call: APICall, company_id, req_model: UpdateRequest):
|
|||||||
def stopped(call: APICall, company_id, req_model: UpdateRequest):
|
def stopped(call: APICall, company_id, req_model: UpdateRequest):
|
||||||
call.result.data_model = UpdateResponse(
|
call.result.data_model = UpdateResponse(
|
||||||
**set_task_status_from_call(
|
**set_task_status_from_call(
|
||||||
req_model, company_id, new_status=TaskStatus.stopped, completed=datetime.utcnow()
|
req_model,
|
||||||
|
company_id,
|
||||||
|
new_status=TaskStatus.stopped,
|
||||||
|
completed=datetime.utcnow(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -167,7 +157,10 @@ def stopped(call: APICall, company_id, req_model: UpdateRequest):
|
|||||||
def started(call: APICall, company_id, req_model: UpdateRequest):
|
def started(call: APICall, company_id, req_model: UpdateRequest):
|
||||||
res = StartedResponse(
|
res = StartedResponse(
|
||||||
**set_task_status_from_call(
|
**set_task_status_from_call(
|
||||||
req_model, company_id, new_status=TaskStatus.in_progress, started=datetime.utcnow()
|
req_model,
|
||||||
|
company_id,
|
||||||
|
new_status=TaskStatus.in_progress,
|
||||||
|
started=datetime.utcnow(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
res.started = res.updated
|
res.started = res.updated
|
||||||
@ -226,11 +219,6 @@ def prepare_create_fields(
|
|||||||
output = Output(destination=output_dest)
|
output = Output(destination=output_dest)
|
||||||
fields["output"] = output
|
fields["output"] = output
|
||||||
|
|
||||||
try:
|
|
||||||
dpath.delete(fields, "script/requirements")
|
|
||||||
except dpath.exceptions.PathNotFound:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Make sure there are no duplicate tags
|
# Make sure there are no duplicate tags
|
||||||
tags = fields.get("tags")
|
tags = fields.get("tags")
|
||||||
if tags:
|
if tags:
|
||||||
@ -471,7 +459,6 @@ def reset(call: APICall, company_id, req_model: UpdateRequest):
|
|||||||
api_results.update(attr.asdict(cleaned_up))
|
api_results.update(attr.asdict(cleaned_up))
|
||||||
|
|
||||||
updates.update(
|
updates.update(
|
||||||
unset__script__requirements=1,
|
|
||||||
set__last_iteration=DEFAULT_LAST_ITERATION,
|
set__last_iteration=DEFAULT_LAST_ITERATION,
|
||||||
set__last_metrics={},
|
set__last_metrics={},
|
||||||
unset__output__result=1,
|
unset__output__result=1,
|
||||||
@ -680,3 +667,25 @@ def publish(call: APICall, company_id, req_model: PublishRequest):
|
|||||||
status_message=req_model.status_message,
|
status_message=req_model.status_message,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@endpoint(
|
||||||
|
"tasks.completed", min_version="2.2", request_data_model=UpdateRequest, response_data_model=UpdateResponse
|
||||||
|
)
|
||||||
|
def completed(call: APICall, company_id, request: PublishRequest):
|
||||||
|
call.result.data_model = UpdateResponse(
|
||||||
|
**set_task_status_from_call(
|
||||||
|
request,
|
||||||
|
company_id,
|
||||||
|
new_status=TaskStatus.completed,
|
||||||
|
completed=datetime.utcnow(),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@endpoint("tasks.ping", request_data_model=PingRequest)
|
||||||
|
def ping(_, company_id, request: PingRequest):
|
||||||
|
TaskBLL.set_last_update(
|
||||||
|
task_ids=[request.task], company_id=company_id, last_update=datetime.utcnow()
|
||||||
|
)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user