X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=Robots%2Fbkmk_rforking.py;h=cad8b2d0978e9ccb95c6560fa9164e047a991664;hb=HEAD;hp=c04026e2cc6c48ce4c55425dbc585333906ae667;hpb=ca3a9bce3feac7ccc06a76c33182142033480f95;p=bookmarks_db.git diff --git a/Robots/bkmk_rforking.py b/Robots/bkmk_rforking.py deleted file mode 100644 index c04026e..0000000 --- a/Robots/bkmk_rforking.py +++ /dev/null @@ -1,82 +0,0 @@ -""" - Forking robot - - Written by BroytMann. Copyright (C) 2000-2007 PhiloSoft Design. -""" - - -try: - import cPickle - pickle = cPickle -except ImportError: - import pickle - -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 - -def stop_subp(log): - global check_subp, subp_pipe - if check_subp: - if log: log(" restarting hanging subprocess") - del check_subp - del subp_pipe - -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]), - control_stderr=True) - subp_pipe = RecordFile(check_subp) - - -from bkmk_objects import Robot - -class robot_forking(Robot): - def check_url(self, bookmark): - if not check_subp: - restart_subp(self.log) # Not restart, just start afresh - - try: - save_parent = bookmark.parent - bookmark.parent = None - - bookmark.tempfname = self.tempfname - subp_pipe.write_record(pickle.dumps(bookmark)) - - if check_subp.waitForPendingChar(900): # wait 15 minutes - new_b = pickle.loads(subp_pipe.read_record()) - for attr in ("error", "no_error", - "moved", "size", "md5", "real_title", - "last_tested", "last_modified", "test_time", "icon"): - if hasattr(new_b, attr): - setattr(bookmark, attr, getattr(new_b, attr)) - else: - bookmark.error = "Subprocess connection timed out" - restart_subp(self.log) - - 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 - - # Tested - return 1 - - - def stop(self): - stop_subp(None) # Stop subprocess; do not log restarting