[Tutor] perplexing error with shelve
Orest Kozyar
orest.kozyar at gmail.com
Tue Oct 30 17:53:27 CET 2007
I have a program which queries an online database (Medline) for XML data.
It caches all data using shelve to avoid hitting the database too many
times. For some reason, I keep getting a RuntimeError: maximum recursion
depth exceeded when attempting to add a certain record. This program has
successfully handled over 40,000 records from Medline, but for whatever
reason, this particular record (PMID: 16842422) produces this error. If I
set maximum recursion depth to a larger value such as 5,000, I get a
segfault.
Below is a script that should reproduce the problem I am having. Any
guidance in solving this problem would greatly be appreciated.
Thank you,
Orest
####### START SCRIPT #######
import urllib, shelve
from xml.dom import minidom
baseurl = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?'
params = {
'db': 'pubmed',
'retmode': 'xml',
'rettype': 'medline'
}
badkey = '16842422'
goodkey = '16842423' #or just about any other ID
data = shelve.open('data.tmp', writeback=True)
try:
params['id'] = goodkey
url = baseurl + urllib.urlencode(params)
doc = minidom.parseString(urllib.urlopen(url).read())
print 'Successfully retrieved and parsed XML document with ID %s' %
goodkey
data[goodkey] = doc
print 'Successfully shelved XML document with ID %s' % goodkey
except RuntimeError:
print 'Should not see this error message!'
try:
params['id'] = badkey
url = baseurl + urllib.urlencode(params)
doc = minidom.parseString(urllib.urlopen(url).read())
print 'Successfully retrieved and parsed XML document with ID %s' %
badkey
data[badkey] = doc
#Should not get this message!
print 'Successfully shelved XML document with ID %s' % badkey
except RuntimeError, e:
print 'Error shelving XML document with ID %s' % badkey
print e
####### END SCRIPT #######
More information about the Tutor
mailing list