Exemplo n.º 1
0
 def reconcile(self, status):
     if settings.RECONCILE_URL:
         self.transport.post(
             url=self.auth.build_url(self.config.base_url,
                                     settings.RECONCILE_URL),
             json_data={
                 "status": status,
                 "created_at": str(utc.localize(datetime.utcnow())),
             },
         )
Exemplo n.º 2
0
 def reconcile(self, status):
     if settings.INTERNAL_RECONCILE_URL:
         self.transport.post(url=self.auth.build_url(
             self.api_config.base_url, settings.INTERNAL_RECONCILE_URL),
                             json_data={
                                 'status':
                                 status,
                                 'created_at':
                                 str(utc.localize(datetime.utcnow()))
                             })
Exemplo n.º 3
0
    def create_metric(self,
                      username,
                      project_name,
                      experiment_id,
                      values,
                      created_at=None,
                      background=False,
                      periodic=False):
        request_url = self.build_url(self._get_http_url(), username,
                                     project_name, 'experiments',
                                     experiment_id, 'metrics')

        # Validate metric values
        def parse_numbers(value):
            if isinstance(value, (int, float, complex, type(None))):
                return value
            if isinstance(value, np.integer):
                return int(value)
            if isinstance(value, np.floating):
                return float(value)
            if hasattr(value, 'item'):
                return value.item()
            raise PolyaxonClientException(
                'Client could not parse the value `{}`, it expects a number.'.
                format(value))

        json_data = {
            'values': {key: parse_numbers(values[key])
                       for key in values}
        }

        if created_at:
            json_data['created_at'] = str(utc.localize(created_at))

        if background:
            self.transport.async_post(request_url, json_data=json_data)
            return None

        if periodic:
            self.transport.periodic_post(request_url, json_data=json_data)
            return None

        try:
            response = self.transport.post(request_url, json_data=json_data)
            return self.prepare_results(response_json=response.json(),
                                        config=ExperimentMetricConfig)
        except PolyaxonClientException as e:
            self.transport.handle_exception(
                e=e, log_message='Error while retrieving experiment status.')
            return None