Move setproctitle() stuff into title.py.

This removes another instance of magical code running at module import
time.  And the process title wasn't really part of the state database
anyway.

Unfortunately this uncovered a bug: the recent change to use
'python -S' makes it not find the setproctitle module if installed.

My goodness, I hate the horrible python easy_install module gunk that
makes startup linearly slower the more modules you have installed,
whether you import them or not, if you don't use -S.  But oh well,
we're stuck with it for now.
This commit is contained in:
Avery Pennarun 2018-12-05 02:17:17 -05:00
commit 0b648521fd
3 changed files with 20 additions and 12 deletions

View file

@ -3,17 +3,6 @@ import cycles, env
from helpers import unlink, close_on_exec, join
from logs import warn, debug2, debug3
# When the module is imported, change the process title.
# We do it here because this module is imported by all the scripts.
try:
from setproctitle import setproctitle
except ImportError:
pass
else:
cmdline = sys.argv[:]
cmdline[0] = os.path.splitext(os.path.basename(cmdline[0]))[0]
setproctitle(" ".join(cmdline))
SCHEMA_VER = 2
TIMEOUT = 60

17
redo/title.py Normal file
View file

@ -0,0 +1,17 @@
import os, sys
# FIXME: setproctitle module is only usable if *not* using python -S,
# and without -S, python startup time is annoyingly longer
try:
from setproctitle import setproctitle
except ImportError:
def setproctitle(name):
pass
def auto():
"""Automatically clean up the title as seen by 'ps', based on argv."""
exe = sys.argv[0]
exename, ext = os.path.splitext(os.path.basename(sys.argv[0]))
title = ' '.join([exename] + sys.argv[1:])
setproctitle(title)