X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=Robots%2Fbkmk_rforking.py;h=0d41c747585d483ee1d0131e3d1acb55282a7b42;hb=54576c927fe40509d146212dce65c555148a22c5;hp=594359f9f3e8da5e42e2f3d576a3d93d0e0e266a;hpb=7fd1132c4ab530b7b34e846ca45f99b8737dd127;p=bookmarks_db.git diff --git a/Robots/bkmk_rforking.py b/Robots/bkmk_rforking.py index 594359f..0d41c74 100644 --- a/Robots/bkmk_rforking.py +++ b/Robots/bkmk_rforking.py @@ -1,21 +1,28 @@ -""" - Forking robot +"""Forking robot - Written by Broytman. Copyright (C) 2000-2010 PhiloSoft Design. +This file is a part of Bookmarks database and Internet robot. """ +__author__ = "Oleg Broytman " +__copyright__ = "Copyright (C) 2000-2012 PhiloSoft Design" +__license__ = "GNU GPL" + +__all__ = ['robot_forking'] + + +import sys, os try: - import cPickle - pickle = cPickle + import cPickle as pickle except ImportError: import pickle -import sys, os from subproc import Subprocess, RecordFile +from bkmk_objects import Robot + # This is to catch 'close failed: [Errno 9] Bad file descriptor' message -# from os.close() in Subprocess.die() and errors from from the subprocess. +# from os.close() in Subprocess.die() and errors from the subprocess. sys.stderr = open("err.log", 'a') check_subp = None @@ -37,10 +44,25 @@ def restart_subp(log): subp_pipe = RecordFile(check_subp) -from bkmk_objects import Robot +_set_subproc = True class robot_forking(Robot): + subproc = 'urllib' # Default subprocess + def check_url(self, bookmark): + global _set_subproc + if _set_subproc: + _set_subproc = False + + subproc = self.subproc + subproc_attrs = [] + for attr in dir(self): + if attr.startswith('subproc_'): + subproc_attrs.append((attr[len('subproc_'):], getattr(self, attr))) + if subproc_attrs: + subproc += ':' + ':'.join(['='.join((k,v)) for k,v in subproc_attrs]) + os.environ['BKMK_ROBOT'] = subproc + if not check_subp: restart_subp(self.log) # Not restart, just start afresh @@ -76,6 +98,5 @@ class robot_forking(Robot): # Tested return 1 - def stop(self): stop_subp(None) # Stop subprocess; do not log restarting