Add support for Task.publish_on_completion for API versions older than v2.20

This commit is contained in:
Alex Burlacu 2023-03-22 15:08:03 +02:00 committed by Alex Burlacu
parent 3ca6900c58
commit 6fb98d9e8c
3 changed files with 21 additions and 7 deletions

View File

@ -40,6 +40,7 @@ for a very long time for a non-responding or mis-configured server
"""
ENV_API_EXTRA_RETRY_CODES = EnvEntry("CLEARML_API_EXTRA_RETRY_CODES")
ENV_FORCE_MAX_API_VERSION = EnvEntry("CLEARML_FORCE_MAX_API_VERSION", type=str)
class MissingConfigError(ValueError):
def __init__(self, message=None):

View File

@ -29,6 +29,7 @@ from .defs import (
ENV_ENABLE_FILES_CONFIG_SECTION,
ENV_API_EXTRA_RETRY_CODES,
ENV_API_DEFAULT_REQ_METHOD,
ENV_FORCE_MAX_API_VERSION,
MissingConfigError
)
from .request import Request, BatchRequest # noqa: F401
@ -85,7 +86,7 @@ class Session(TokenManager):
default_files = "https://files.clear.ml"
default_key = "" # "EGRTCO8JMSIGI6S39GTP43NFWXDQOW"
default_secret = "" # "x!XTov_G-#vspE*Y(h$Anm&DIc5Ou-F)jsl$PdOyj5wG1&E!Z8"
force_max_api_version = None
force_max_api_version = ENV_FORCE_MAX_API_VERSION.get()
legacy_file_servers = ["https://files.community.clear.ml"]

View File

@ -704,12 +704,24 @@ class Task(IdObjectBase, AccessMixin, SetupUploadMixin):
This message will be stored as status_message on the Task's info panel
"""
if hasattr(tasks, 'CompletedRequest') and callable(tasks.CompletedRequest):
return self.send(
tasks.CompletedRequest(
self.id, status_reason='completed', status_message=status_message, force=force,
publish=True if self._get_runtime_properties().get("_publish_on_complete") else False),
ignore_errors=ignore_errors
)
if Session.check_min_api_version('2.20'):
return self.send(
tasks.CompletedRequest(
self.id, status_reason='completed', status_message=status_message, force=force,
publish=True if self._get_runtime_properties().get("_publish_on_complete") else False),
ignore_errors=ignore_errors
)
else:
resp = self.send(
tasks.CompletedRequest(
self.id, status_reason='completed', status_message=status_message, force=force),
ignore_errors=ignore_errors)
if self._get_runtime_properties().get("_publish_on_complete"):
self.send(
tasks.PublishRequest(
self.id, status_reason='completed', status_message=status_message, force=force),
ignore_errors=ignore_errors)
return resp
return self.send(
tasks.StoppedRequest(self.id, status_reason='completed', status_message=status_message, force=force),
ignore_errors=ignore_errors