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
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
# Tested
return 1
-
def stop(self):
stop_subp(None) # Stop subprocess; do not log restarting