def _fetch_from_sources(self, required_info_keys=None):
srces = self._sources.keys()<EOL>random.shuffle(srces)<EOL>for source in srces:<EOL><INDENT>try:<EOL><INDENT>source.fetch()<EOL>ip_address = source.ip_address<EOL>info = source.info<EOL>if self._verify_required_keys(info, required_info_keys):<EOL><INDENT>return ip_address, info<EOL><DEDENT><DEDENT>except (ValueError, requests.ConnectionError):<EOL><INDENT>continue<EOL><DEDENT><DEDENT>raise NullResponseFromSourcesError("<STR_LIT>")<EOL>
Internal method that fetches from configured sources.
:param required_info_keys: Keys that are required in the response
:type required_info_keys: list
:return: None
:rtype: None