python - Oft DeadlineExceededErrors when yaml.load() on google-app-engine -


my app @ google-app-engine uses yaml settings file. i've used same approach in several similar app engine apps couple of years. app settings not have change unless @ deployment time go yaml file.

now opening , loading yaml file turned out big source of problem if had bunch of users going @ api @ same time. fixed issue year or 2 ago memcaching contents of yaml. worked long time.

i realized still occasional deadlineexceedederrors errors when trying open() file. number of open attempts should few (when manually change key used memcache really, should less amount of deployments). happens, sometimes, times out after 60 seconds, failing open file - happens when memcache reason has lost content pertaining key. that's okay because that's how memcache works, still keep memcached stuff around of time. use yaml file , never felt need use else. still, open() fails out after 60 seconds, deadlineexceedederrors.

any leads?

the error log goes this:

file "/base/data/home/apps/s~mjpuroland/1.385586677613659867/mjconfig.py", line 81, in loadversionsettings     versionsettings = yaml.load(open(versionsettingsfile).read())   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/__init__.py", line 71, in load     return loader.get_single_data()   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/constructor.py", line 37, in get_single_data     node = self.get_single_node()   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 36, in get_single_node     document = self.compose_document()   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 55, in compose_document     node = self.compose_node(none, none)   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 84, in compose_node     node = self.compose_mapping_node(anchor)   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 133, in compose_mapping_node     item_value = self.compose_node(node, item_key)   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 84, in compose_node     node = self.compose_mapping_node(anchor)   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 133, in compose_mapping_node     item_value = self.compose_node(node, item_key)   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 82, in compose_node     node = self.compose_sequence_node(anchor)   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 111, in compose_sequence_node     node.value.append(self.compose_node(node, index))   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 84, in compose_node     node = self.compose_mapping_node(anchor)   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/composer.py", line 127, in compose_mapping_node     while not self.check_event(mappingendevent):   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/parser.py", line 98, in check_event     self.current_event = self.state()   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/parser.py", line 428, in parse_block_mapping_key     if self.check_token(keytoken):   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/scanner.py", line 116, in check_token     self.fetch_more_tokens()   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/scanner.py", line 159, in fetch_more_tokens     self.stale_possible_simple_keys()   file "/base/data/home/runtimes/python27/python27_lib/versions/third_party/yaml-3.10/yaml/scanner.py", line 283, in stale_possible_simple_keys     level in self.possible_simple_keys.keys(): deadlineexceedederror 

update: looking @ log again, realized timing out yaml.load() part, not open(). yaml problematic? yaml file have 249 kb @ moment.


Comments