]> git.phdru.name Git - bookmarks_db.git/blobdiff - Robots/bkmk_rforking.py
Change default subprocess robot to urllib2
[bookmarks_db.git] / Robots / bkmk_rforking.py
index 843a0d27d939f3ca3e6db54f5f8ae48095837bda..4ad998403417398b15643f3de2809c4c7c382f22 100644 (file)
@@ -3,24 +3,26 @@
 This file is a part of Bookmarks database and Internet robot.
 """
 
-__version__ = "$Revision$"[11:-2]
-__revision__ = "$Id$"[5:-2]
-__date__ = "$Date$"[7:-2]
 __author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2000-2011 PhiloSoft Design"
+__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
@@ -42,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 = 'urllib2' # 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
 
@@ -81,6 +98,5 @@ class robot_forking(Robot):
       # Tested
       return 1
 
-
    def stop(self):
       stop_subp(None) # Stop subprocess; do not log restarting