Use C vairant of YAML dumper at tasks serialization

To speed up seiralization time, use faster implementation of
YAML dumping when it is possible.

Change-Id: I992410328c07d14a1f5903aa91d456b040175a69
Partial-Bug: #1572103
Co-Authored-With: V. Kuklin <vkuklin@mirantis.com>
Co-Authored-With: B. Gaifullin <bgaifullin@mirantis.com>
This commit is contained in:
Stanislaw Bogatkin 2016-05-18 19:28:36 +03:00
parent 51540ffabf
commit 9a806f1d12
2 changed files with 32 additions and 1 deletions

View File

@ -243,3 +243,28 @@ yaml.add_representer(
yaml.representer.SafeRepresenter.represent_list,
yaml.Dumper
)
if yaml.__with_libyaml__:
yaml.add_representer(
MutableDict,
yaml.representer.SafeRepresenter.represent_dict,
yaml.CSafeDumper
)
yaml.add_representer(
MutableDict,
yaml.representer.SafeRepresenter.represent_dict,
yaml.CDumper
)
yaml.add_representer(
MutableList,
yaml.representer.SafeRepresenter.represent_list,
yaml.CSafeDumper
)
yaml.add_representer(
MutableList,
yaml.representer.SafeRepresenter.represent_list,
yaml.CDumper
)

View File

@ -19,10 +19,16 @@ from yaql.language import specs
from yaql.language import yaqltypes
if yaml.__with_libyaml__:
YamlDumper = yaml.CSafeDumper
else:
YamlDumper = yaml.SafeDumper
@specs.method
@specs.inject('finalizer', yaqltypes.Delegate('#finalize'))
def to_yaml(finalizer, receiver):
return yaml.safe_dump(finalizer(receiver))
return yaml.dump_all([finalizer(receiver)], Dumper=YamlDumper)
@specs.method