def vdisk_uploads3_put(fp, range_left, range_right, uri, headers=None): if not isinstance(fp, RangeFile): raise Exception, 'fp is not RangeFile' if not isinstance(headers, dict): headers = {} headers['Content-Length'] = range_right - range_left + 1 headers['Content-Type'] = 'application/octet-stream' fp.limitrange(range_left, range_right) md5sum = filehash(fp) fp.seek(0) options = {'method': 'PUT', 'timeout': 360} response = fetch(uri, headers, fp, options) response.rethrow() return md5sum
def run(self, name, **kwargs): cb = kwargs.pop('callback', None) field = kwargs.pop('field', None) t = self._generate_request(name, **kwargs) if not t: return None uri, headers, postdata = t response = fetch(uri, headers, postdata) if response.status == 200: data = response.body else: data = json.dumps({'errcode': 9999, 'err_msg': 'fetch failed'}) try: data = strip_json(data) data = json.loads(data) except ValueError: data = {'errcode': 9999, 'err_msg': 'json decode failed'} data = self.checkerror(data) if field: return self.getdata(data, field) return data