[tor-dev] [GSoC] APAF Report
Damian Johnson
atagar at torproject.org
Wed Jun 20 15:54:54 UTC 2012
> I've also installed python and twisted on my android phone, but
> psutils, a dependency of txtorcon, is a wall for porting apaf into
> android.
Hi Michele. It looks like txtorcon is trying to make psutil an
optional dependency...
txtorcon/util.py
31 try:
32 import psutil
33 process_factory = psutil.Process
34 except ImportError:
35 process_factory = int
...
82 def process_from_address(addr, port, torstate=None):
...
91 If psutil isn't installed, the PIDs are returned instead of
92 psutil.Process instances.
Though torstate.py doesn't have this sort of fallback...
txtorcon/torstate.py
2 import psutil
...
292 def guess_tor_pid(self, *args):
293 if self.protocol.is_owned:
294 self.tor_pid = self.protocol.is_owned
295
296 else:
297 self.tor_pid = 0
298 try:
299 procs = filter(lambda x: x.name.startswith(self.tor_binary),
300 psutil.get_process_list())
301 if len(procs) == 1:
302 self.tor_pid = procs[0].pid
303 except psutil.AccessDenied:
304 pass
Considering that the method's name is "guess_tor_pid" it sounds like
it should be best-effort, and fail gracefully if psutil is
unavailable. It might be worth asking if this is a bug.
Personally I decided to write my own modules for this functionality
[1] (including some improvements based on psutil [2]) because a C
module dependency didn't feel worth this functionality - especially
since pid lookup is a one-time thing, and doesn't need to be blazingly
fast.
Cheers! -Damian
[1] https://gitweb.torproject.org/stem.git/blob/HEAD:/stem/util/system.py
[2] https://gitweb.torproject.org/stem.git/blob/HEAD:/stem/util/proc.py
More information about the tor-dev
mailing list