Ejemplo n.º 1
0
def test_retry_with_success():
    failing_fn = fail_for_n_function(3)
    fn = retry.Retry(failing_fn, FailException)
    fn('hello',
       retry_timedelta=datetime.timedelta(days=1),
       retry_sleep_base=0.001)
    assert fn.num_iters == 3
Ejemplo n.º 2
0
def test_retry_with_timeout():
    failing_fn = fail_for_n_function(10000)
    fn = retry.Retry(failing_fn, FailException)
    with pytest.raises(FailException):
        fn('hello',
           retry_timedelta=datetime.timedelta(0, 0, 0, 50),
           retry_sleep_base=0.001)
Ejemplo n.º 3
0
def test_retry_with_noauth(capsys):
    def fail():
        res = requests.Response()
        res.status_code = 401
        raise retry.TransientException(exc=requests.HTTPError(response=res))

    fn = retry.Retry(fail, check_retry_fn=util.no_retry_auth)
    with pytest.raises(CommError):
        fn()
Ejemplo n.º 4
0
def test_retry_with_noauth_403(capsys):
    def fail():
        res = requests.Response()
        res.status_code = 403
        raise retry.TransientException(exc=requests.HTTPError(response=res))
    fn = retry.Retry(fail, check_retry_fn=util.no_retry_auth)
    with pytest.raises(CommError) as excinfo:
        fn()
    assert excinfo.value.message == 'Permission denied, ask the project owner to grant you access'
Ejemplo n.º 5
0
def test_retry_with_noauth_401(capsys):
    def fail():
        res = requests.Response()
        res.status_code = 401
        raise retry.TransientException(exc=requests.HTTPError(response=res))
    fn = retry.Retry(fail, check_retry_fn=util.no_retry_auth)
    with pytest.raises(CommError) as excinfo:
        fn()
    assert excinfo.value.message == 'Invalid or missing api_key.  Run wandb login'
Ejemplo n.º 6
0
 def __init__(self,
              default_settings=None,
              load_settings=True,
              retry_timedelta=datetime.timedelta(days=1),
              environ=os.environ):
     self._environ = environ
     self.default_settings = {
         'section': "default",
         'run': "latest",
         'git_remote': "origin",
         'ignore_globs': [],
         'base_url': "https://api.wandb.ai"
     }
     self.retry_timedelta = retry_timedelta
     self.default_settings.update(default_settings or {})
     self._settings = None
     self.retry_uploads = 10
     self.settings_parser = configparser.ConfigParser()
     if load_settings:
         potential_settings_paths = [
             os.path.expanduser('~/.wandb/settings')
         ]
         potential_settings_paths.append(
             os.path.join(wandb_dir(), 'settings'))
         files = self.settings_parser.read(potential_settings_paths)
         self.settings_file = files[0] if len(files) > 0 else "Not found"
     else:
         self.settings_file = "Not found"
     self.git = GitRepo(remote=self.settings("git_remote"))
     # Mutable settings set by the _file_stream_api
     self.dynamic_settings = {
         'system_sample_seconds': 2,
         'system_samples': 15,
         'heartbeat_seconds': 30,
     }
     self.client = Client(transport=RequestsHTTPTransport(
         headers={
             'User-Agent': self.user_agent,
             'X-WANDB-USERNAME': env.get_username(env=self._environ)
         },
         use_json=True,
         # this timeout won't apply when the DNS lookup fails. in that case, it will be 60s
         # https://bugs.python.org/issue22889
         timeout=self.HTTP_TIMEOUT,
         auth=("api", self.api_key or ""),
         url='%s/graphql' % self.settings('base_url')))
     self.gql = retry.Retry(
         self.execute,
         retry_timedelta=retry_timedelta,
         check_retry_fn=util.no_retry_auth,
         retryable_exceptions=(RetryError, requests.RequestException))
     self._current_run_id = None
     self._file_stream_api = None
Ejemplo n.º 7
0
 def __init__(self,
              default_settings=None,
              load_settings=True,
              retry_timedelta=datetime.timedelta(days=1)):
     self.default_settings = {
         'section': "default",
         'entity': "models",
         'run': "latest",
         'git_remote': "origin",
         'git_tag': False,
         'base_url': "https://api.wandb.ai"
     }
     self.retry_timedelta = retry_timedelta
     self.default_settings.update(default_settings or {})
     self._settings = None
     self.retries = 3
     self._settings_parser = configparser.ConfigParser()
     self.tagged = False
     if load_settings:
         potential_settings_paths = [
             os.path.expanduser('~/.wandb/settings')
         ]
         potential_settings_paths.append(
             os.path.join(wandb_dir(), 'settings'))
         files = self._settings_parser.read(potential_settings_paths)
         self.settings_file = files[0] if len(files) > 0 else "Not found"
     else:
         self.settings_file = "Not found"
     self.git = GitRepo(remote=self.settings("git_remote"))
     client = Client(retries=1,
                     transport=RequestsHTTPTransport(
                         headers={'User-Agent': self.user_agent},
                         use_json=True,
                         timeout=self.HTTP_TIMEOUT,
                         auth=("api", self.api_key),
                         url='%s/graphql' % self.settings('base_url')))
     # 1-day worth of retry
     self.gql = retry.Retry(client.execute,
                            retry_timedelta=retry_timedelta,
                            retryable_exceptions=(RetryError,
                                                  requests.HTTPError))
     self._current_run_id = None
     self._file_stream_api = None