* performance improvements
parent
4ec1ea41c2
commit
dfe6c493de
36
main.py
36
main.py
|
@ -15,7 +15,7 @@ headers = {"Authorization": "token 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",
|
||||||
user = "DomiOwO"
|
user = "DomiOwO"
|
||||||
repo = "iwisoftware"
|
repo = "iwisoftware"
|
||||||
files=[{}]
|
files=[{}]
|
||||||
files_buffers=[b""]
|
files_buffers=[[]]
|
||||||
|
|
||||||
def getReleases():
|
def getReleases():
|
||||||
if not releases:
|
if not releases:
|
||||||
|
@ -33,9 +33,10 @@ def allocateFd(path):
|
||||||
global files, files_buffers
|
global files, files_buffers
|
||||||
fd = len(files)
|
fd = len(files)
|
||||||
files += [{"path": path,
|
files += [{"path": path,
|
||||||
"state": None # 0 - read, 1 - write
|
"state": None, # 0 - read, 1 - write
|
||||||
|
"len": 0
|
||||||
}]
|
}]
|
||||||
files_buffers += [b""]
|
files_buffers += [[]]
|
||||||
return fd
|
return fd
|
||||||
|
|
||||||
class Passthrough(Operations):
|
class Passthrough(Operations):
|
||||||
|
@ -206,29 +207,31 @@ class Passthrough(Operations):
|
||||||
return allocateFd(path)
|
return allocateFd(path)
|
||||||
|
|
||||||
def read(self, path, length, offset, fh):
|
def read(self, path, length, offset, fh):
|
||||||
f = files[h]
|
f = files[fh]
|
||||||
f["state"] = 0
|
f["state"] = 0
|
||||||
|
|
||||||
print("-- read: offset ", offset, " len ", length, " path ", path)
|
print("-- read: offset ", offset, " len ", length, " path ", path)
|
||||||
if offset == 0:
|
#fetch_len = 524289 # small buffer arrives like wroom
|
||||||
fetch_len = 16384 # small buffer arrives like wroom
|
#if offset != 0:
|
||||||
else:
|
fetch_len = 10485760 # big buffer goes whoosh
|
||||||
fetch_len = 10485760 # big buffer goes whoosh
|
|
||||||
if offset + length > len(files_buffers[fh]):
|
print(len(files_buffers[fh]) + fetch_len)
|
||||||
print("buffer exhausted: ", len(files_buffers[fh]))
|
|
||||||
|
if offset + length > f["len"]:
|
||||||
|
print("buffer exhausted: ", f["len"])
|
||||||
_h = headers
|
_h = headers
|
||||||
_h["Range"] = "bytes=" + str(len(files_buffers[fh])) + "-" + str(len(files_buffers[fh]) + fetch_len)
|
_h["Range"] = "bytes=" + str(f["len"]) + "-" + str(f["len"] + fetch_len - 1)
|
||||||
|
f["len"] += fetch_len
|
||||||
_h["Accept"] = "application/octet-stream"
|
_h["Accept"] = "application/octet-stream"
|
||||||
a = requests.get("https://api.github.com/repos/" + user + "/" + repo + "/releases/assets/" + str(assets[path.split("/")[-2]][path.split("/")[-1]]["id"]),
|
a = requests.get("https://api.github.com/repos/" + user + "/" + repo + "/releases/assets/" + str(assets[path.split("/")[-2]][path.split("/")[-1]]["id"]),
|
||||||
headers = _h);
|
headers = _h);
|
||||||
files_buffers[fh] += a.content
|
files_buffers[fh].append(bytes(a.content))
|
||||||
return files_buffers[fh][offset:offset+length]
|
return b''.join(files_buffers[fh])[offset:offset+length]
|
||||||
|
|
||||||
def write(self, path, buf, offset, fh):
|
def write(self, path, buf, offset, fh):
|
||||||
#print("-- write: offset ", offset, " path ", path)
|
#print("-- write: offset ", offset, " path ", path)
|
||||||
f = files[fh]
|
f = files[fh]
|
||||||
f["state"] = 1
|
f["state"] = 1
|
||||||
files_buffers[fh] += buf
|
files_buffers[fh].append(bytes(buf))
|
||||||
return len(buf)
|
return len(buf)
|
||||||
|
|
||||||
def truncate(self, path, length, fh=None):
|
def truncate(self, path, length, fh=None):
|
||||||
|
@ -253,13 +256,14 @@ class Passthrough(Operations):
|
||||||
a = requests.post(
|
a = requests.post(
|
||||||
"https://uploads.github.com/repos/" + user + "/" + repo + "/releases/" + str(id) + "/assets?name=" +
|
"https://uploads.github.com/repos/" + user + "/" + repo + "/releases/" + str(id) + "/assets?name=" +
|
||||||
path.split('/')[-1],
|
path.split('/')[-1],
|
||||||
data = files_buffers[fh],
|
data = b''.join(files_buffers[fh]),
|
||||||
headers = _h)
|
headers = _h)
|
||||||
print(a.content)
|
print(a.content)
|
||||||
res = a.json()
|
res = a.json()
|
||||||
print(assets[path.split('/')[-2]])
|
print(assets[path.split('/')[-2]])
|
||||||
if not assets[path.split('/')[-2]]:
|
if not assets[path.split('/')[-2]]:
|
||||||
assets[path.split('/')[-2]]={}
|
assets[path.split('/')[-2]]={}
|
||||||
|
print(assets[path.split('/')[-2]])
|
||||||
assets[path.split('/')[-2]][path.split('/')[-1]] = {"id": res["id"], "size": res["size"]}
|
assets[path.split('/')[-2]][path.split('/')[-1]] = {"id": res["id"], "size": res["size"]}
|
||||||
del(files[fh]) # idk, bad syntax?
|
del(files[fh]) # idk, bad syntax?
|
||||||
del(files_buffers[fh])
|
del(files_buffers[fh])
|
||||||
|
|
Loading…
Reference in New Issue