Using pymongo connecting to with replicaSet returns 10107 NoPrimayError

here is my code

client = MongoClient(
    host='mongodb://user:pass@host:27014,host:27015,host:27016/?'
         'authMechanism=DEFAULT&authSource=base&replicaSet=rs1')
print(client.is_primary)
database = client.get_database('base')
collections = database.get_collection('test')
result = collections.insert_one({ "x": 3})

the above code execute success by chance , it fails occasionally with NoPrimaryError

True
File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\collection.py", line 606, in insert_one
    self._insert_one(
  File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\collection.py", line 547, in _insert_one
    self.__database.client._retryable_write(acknowledged, _insert_command, session)
  File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\mongo_client.py", line 1399, in _retryable_write
    return self._retry_with_session(retryable, func, s, None)
  File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\mongo_client.py", line 1286, in _retry_with_session
    return self._retry_internal(retryable, func, session, bulk)
  File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\mongo_client.py", line 1320, in _retry_internal
    return func(session, sock_info, retryable)
  File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\collection.py", line 535, in _insert_command
    result = sock_info.command(
  File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\pool.py", line 743, in command
    return command(
  File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\network.py", line 160, in command
    helpers._check_command_response(
  File "C:\Users\w1762\PycharmProjects\geo_relation\venv\lib\site-packages\pymongo\helpers.py", line 167, in _check_command_response
    raise NotPrimaryError(errmsg, response)
pymongo.errors.NotPrimaryError: not master, full error: {'ok': 0.0, 'errmsg': 'not master', 'code': 10107, 'codeName': 'NotMaster'}

Did anyone have met this before?