mirror of
https://github.com/python/cpython.git
synced 2025-10-17 12:18:23 +00:00
Crude but effective hack to clear the parser cache every so often.
(Fred Drake.)
This commit is contained in:
parent
babab6869f
commit
671dc20efc
1 changed files with 4 additions and 0 deletions
|
@ -19,9 +19,11 @@ uses_fragment = ['ftp', 'hdl', 'http', 'gopher', 'news', 'nntp', 'wais',
|
||||||
# Characters valid in scheme names
|
# Characters valid in scheme names
|
||||||
scheme_chars = string.letters + string.digits + '+-.'
|
scheme_chars = string.letters + string.digits + '+-.'
|
||||||
|
|
||||||
|
MAX_CACHE_SIZE = 2000
|
||||||
_parse_cache = {}
|
_parse_cache = {}
|
||||||
|
|
||||||
def clear_cache():
|
def clear_cache():
|
||||||
|
"""Clear the parse cache."""
|
||||||
global _parse_cache
|
global _parse_cache
|
||||||
_parse_cache = {}
|
_parse_cache = {}
|
||||||
|
|
||||||
|
@ -35,6 +37,8 @@ def urlparse(url, scheme = '', allow_framents = 1):
|
||||||
key = url, scheme, allow_framents
|
key = url, scheme, allow_framents
|
||||||
if _parse_cache.has_key(key):
|
if _parse_cache.has_key(key):
|
||||||
return _parse_cache[key]
|
return _parse_cache[key]
|
||||||
|
if len(_parse_cache) >= MAX_CACHE_SIZE: # avoid runaway growth
|
||||||
|
clear_cache()
|
||||||
netloc = path = params = query = fragment = ''
|
netloc = path = params = query = fragment = ''
|
||||||
i = string.find(url, ':')
|
i = string.find(url, ':')
|
||||||
if i > 0:
|
if i > 0:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue