reproduce: call uploadFile() without optional parameter 'headers' to start a resumable upload, manually break the uploading, then resume it by calling uploadFile() in same manner again, then Exception('some parts are failed when upload. Please try again') will be raised. This can be repeated.
uploadFile => _resumer_upload => _upload:
if self._record is None:
self._prepare() ### this line will populate self.headers
but if self._record exists, self.headers will not be touched and could be None if optional parameter 'headers' is not supplied to uploadFile().
reproduce: call uploadFile() without optional parameter 'headers' to start a resumable upload, manually break the uploading, then resume it by calling uploadFile() in same manner again, then Exception('some parts are failed when upload. Please try again') will be raised. This can be repeated.
uploadFile => _resumer_upload => _upload: if self._record is None: self._prepare() ### this line will populate self.headers
but if self._record exists, self.headers will not be touched and could be None if optional parameter 'headers' is not supplied to uploadFile().
wei.shi@astrolincom.com