Kirk Lowery wrote:
Whenever an external method is used to call the search engine, the search engine then makes a database connection. Zope database adapters cannot be used here, since it is emdros -- not Zope -- that is managing the database.
You could look at implementing a DA for emdros then...
When that external method completes, the connection is lost. The more frequently that method is used, the greater the performance hit because of the overhead of restablishing the connection.
Hmmm, could use module level python variables in your external method: myconnection = [] def myMethod(self): global myconnection if not myconnection: # create connection myconnection.append(theConnection) conn = myconnection[0] ..but you may need to worr abotu thread safety if you do that.
Zope database adapters could solve this problem, but that would mean reimplementing the entire search engine in python as a Zope product, which doesn't seem to be a practical solution.
Might be the best idea though...
alive within the Zope process across pageviews? How do we associate such a python object with a particular user session?
Use the browser_id as a key into a module-level dictionary of connection objects. Thread safety will be an issue, as will getting rid of old connections... cheers, Chris