Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions mitogen/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@

import os
_default_profiling = os.environ.get('MITOGEN_PROFILING') is not None
_compression_level = int(os.environ.get('MITOGEN_COMPRESSION_LEVEL', '9'), 10)
del os


Expand Down
7 changes: 5 additions & 2 deletions mitogen/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -1334,13 +1334,14 @@ class Importer(object):
if sys.version_info >= (3, 0):
ALWAYS_BLACKLIST += ['cStringIO']

def __init__(self, router, context, core_src, whitelist=(), blacklist=()):
def __init__(self, router, context, core_src, whitelist=(), blacklist=(), compression_level=None):
self._log = logging.getLogger('mitogen.importer')
self._context = context
self._present = {'mitogen': self.MITOGEN_PKG_CONTENT}
self._lock = threading.Lock()
self.whitelist = list(whitelist) or ['']
self.blacklist = list(blacklist) + self.ALWAYS_BLACKLIST
self.compression_level = compression_level

# Preserve copies of the original server-supplied whitelist/blacklist
# for later use by children.
Expand All @@ -1356,7 +1357,7 @@ def __init__(self, router, context, core_src, whitelist=(), blacklist=()):
'mitogen.core',
None,
'x/mitogen/core.py',
zlib.compress(core_src, 9),
zlib.compress(core_src, self.compression_level),
[],
)
self._install_handler(router)
Expand Down Expand Up @@ -4155,6 +4156,7 @@ def _setup_importer(self):
core_src,
self.config.get('whitelist', ()),
self.config.get('blacklist', ()),
compression_level = self.config['compression_level'],
)

self.importer = importer
Expand Down Expand Up @@ -4185,6 +4187,7 @@ def _setup_globals(self):
mitogen.context_id = self.config['context_id']
mitogen.parent_ids = self.config['parent_ids'][:]
mitogen.parent_id = mitogen.parent_ids[0]
mitogen._compression_level = self.config['compression_level']

def _nullify_stdio(self):
"""
Expand Down
2 changes: 1 addition & 1 deletion mitogen/master.py
Original file line number Diff line number Diff line change
Expand Up @@ -1152,7 +1152,7 @@ def _build_tuple(self, fullname):

if fullname == '__main__':
source = self.neutralize_main(path, source)
compressed = mitogen.core.Blob(zlib.compress(source, 9))
compressed = mitogen.core.Blob(zlib.compress(source, mitogen._compression_level))
related = [
to_text(name)
for name in self._finder.find_related(fullname)
Expand Down
6 changes: 4 additions & 2 deletions mitogen/parent.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
# Absolute imports for <2.5.
select = __import__('select')

import mitogen
import mitogen.core
from mitogen.core import b
from mitogen.core import bytes_partition
Expand Down Expand Up @@ -696,7 +697,7 @@ class PartialZlib(object):
def __init__(self, s):
self.s = s
if sys.version_info > (2, 5):
self._compressor = zlib.compressobj(9)
self._compressor = zlib.compressobj(mitogen._compression_level)
self._out = self._compressor.compress(s)
self._out += self._compressor.flush(zlib.Z_SYNC_FLUSH)
else:
Expand All @@ -708,7 +709,7 @@ def append(self, s):
final compressed output.
"""
if self._compressor is None:
return zlib.compress(self.s + s, 9)
return zlib.compress(self.s + s, mitogen._compression_level)
else:
compressor = self._compressor.copy()
out = self._out
Expand Down Expand Up @@ -1508,6 +1509,7 @@ def get_econtext_config(self):
'whitelist': self._router.get_module_whitelist(),
'blacklist': self._router.get_module_blacklist(),
'max_message_size': self.options.max_message_size,
'compression_level': mitogen._compression_level,
'version': mitogen.__version__,
}

Expand Down