]> git.phdru.name Git - bookmarks_db.git/blobdiff - Robots/bkmk_rforking.py
Combined two "if"s.
[bookmarks_db.git] / Robots / bkmk_rforking.py
index 4693f52979741235db3beb7fe4947e7ae6055823..7c6961b5b63c800ad36db1be4fbed16413e92470 100644 (file)
@@ -14,6 +14,9 @@ except ImportError:
 import sys, os
 from subproc import Subprocess, RecordFile
 
+# This is to catch 'close failed: [Errno 9] Bad file descriptor' message
+# from os.close() in Subprocess.die() and errors from from the subprocess.
+sys.stderr = open("err.log", 'a')
 
 check_subp = None
 subp_pipe = None
@@ -29,7 +32,8 @@ def restart_subp(log):
    global check_subp, subp_pipe
    stop_subp(log)
 
-   check_subp = Subprocess("%s/Robots/bkmk_rforking_sub.py" % os.path.dirname(sys.argv[0]))
+   check_subp = Subprocess("%s/Robots/bkmk_rforking_sub.py" % os.path.dirname(sys.argv[0]),
+      control_stderr=True)
    subp_pipe = RecordFile(check_subp)
 
 
@@ -47,7 +51,7 @@ class robot_forking(Robot):
          bookmark.tempfname = self.tempfname
          subp_pipe.write_record(pickle.dumps(bookmark))
 
-         if check_subp.waitForPendingChar(900): # wait 15 minutes
+         if check_subp.waitForPendingChar(300): # wait 5 minutes
             new_b = pickle.loads(subp_pipe.read_record())
             for attr in ("error", "no_error",
                   "moved", "size", "md5", "real_title",
@@ -60,6 +64,13 @@ class robot_forking(Robot):
 
          bookmark.parent = save_parent
 
+         while True:
+            error = check_subp.readPendingErrLine()
+            if not error:
+               break
+            sys.stderr.write("(subp) " + error)
+         sys.stderr.flush()
+
       except KeyboardInterrupt:
          return 0