From f652c17f242fb743a167041521e9618039ae7296 Mon Sep 17 00:00:00 2001 From: Helmut Grohne <helmut@subdivi.de> Date: Tue, 11 Jun 2013 23:22:10 +0200 Subject: autoimport: don't fork for readyaml This appears to be a huge performance boost. --- autoimport.py | 8 +++++--- readyaml.py | 9 ++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/autoimport.py b/autoimport.py index 48d3f8c..d326d61 100755 --- a/autoimport.py +++ b/autoimport.py @@ -16,6 +16,8 @@ import concurrent.futures from debian import deb822 from debian.debian_support import version_compare +from readyaml import readyaml + def process_http(pkgs, url): pkglist = urllib.urlopen(url + "/dists/sid/main/binary-amd64/Packages.gz").read() pkglist = gzip.GzipFile(fileobj=io.BytesIO(pkglist)).read() @@ -115,9 +117,9 @@ def main(): print("sqlimporting %s" % name) with open(inf) as inp: try: - subprocess.check_call(["python", "readyaml.py"], stdin=inp) - except subprocess.CalledProcessError: - print("%s failed sql" % name) + readyaml(db, inp) + except Exception as exc: + print("%s failed sql with exception %r" % (name, exc)) else: os.unlink(inf) diff --git a/readyaml.py b/readyaml.py index b66c7f3..e2f3bb3 100755 --- a/readyaml.py +++ b/readyaml.py @@ -8,11 +8,10 @@ import sys from debian.debian_support import version_compare import yaml -def main(): - db = sqlite3.connect("test.sqlite3") +def readyaml(db, stream): cur = db.cursor() cur.execute("PRAGMA foreign_keys = ON;") - gen = yaml.safe_load_all(sys.stdin) + gen = yaml.safe_load_all(stream) metadata = next(gen) package = metadata["package"] cur.execute("SELECT version FROM package WHERE package = ?;", @@ -44,5 +43,9 @@ def main(): for func, hexhash in entry["hashes"].items())) raise ValueError("missing commit block") +def main(): + db = sqlite3.connect("test.sqlite3") + readyaml(db, sys.stdin) + if __name__ == "__main__": main() -- cgit v1.2.3