Hey Vincent,<div><br></div><div>Thanks for the detailed reply! That really clears things up.</div><div><br></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)">&gt; &gt; - Are there any other caching options?</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)">
<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)">&gt; The option to make pickle cache persistent comes to mind. There may be others, </span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)">&gt; I don&#39;t recall right now.</span></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.800000190734863px;background-color:rgb(255,255,255)"><br>
</span></div><div><font color="#222222" face="arial, sans-serif">This seems like a good idea - I would like for the server to maintain its cache when I restart it (which is fairly often as I&#39;m always working on it). However, I seem to have run into some problems. I tried this uri (added newlines for ease of reading):</font></div>
<div><font color="#222222" face="arial, sans-serif"><br></font></div><div><font color="#222222" size="1" face="courier new, monospace">zeo://%(here)s/zeo.sock?</font></div><div><font color="#222222" size="1" face="courier new, monospace">     cache_size=2000MB&amp;</font></div>
<div><font color="#222222" size="1" face="courier new, monospace">     connection_cache_size=500000&amp;</font></div><div><font color="#222222" size="1" face="courier new, monospace">     connection_pool_size=15&amp;</font></div>
<div><font color="#222222" size="1" face="courier new, monospace">     var=zeocache&amp;</font></div><div><font color="#222222" size="1" face="courier new, monospace">     client=main</font></div><div><font color="#222222" size="1" face="courier new, monospace"><br>
</font></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif">Yet I get a &quot;</span><font color="#222222" face="arial, sans-serif">zc.lockfile.LockError: Couldn&#39;t lock &#39;zeocache/main-1.zec.lock&#39;</font><span style="color:rgb(34,34,34);font-family:arial,sans-serif">&quot; error. I&#39;ve tried googling it and it seems like this happens if multiple processes attempt to access the same database if one isn&#39;t using ZEO, but I am using ZEO and this is only related to the cache. I&#39;m using paster to serve the app and I don&#39;t think it creates multiple processes. Why might this be happening? Here is my `app` function that paster uses to get the wsgi app along with all relevant code:</span></div>
<div><span style="color:rgb(34,34,34);font-family:arial,sans-serif"><br></span></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font color="#222222" size="1" face="courier new, monospace">import logging</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace">import time</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">import threading</font></div></div><div><div>
<font color="#222222" size="1" face="courier new, monospace"><br></font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">from repoze.bfg.configuration import Configurator</font></div></div>
<div><div><font color="#222222" size="1" face="courier new, monospace">from repoze.zodbconn.finder import PersistentApplicationFinder</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace"><br>
</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">from util.pyshell import in_shell</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace"><br></font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace">from mainapp.models import appmaker</font></div></div><div><div><span style="color:rgb(34,34,34);font-family:&#39;courier new&#39;,monospace;font-size:x-small">from mainapp import server_threads</span></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace"><br></font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">def check_start_threads():</font></div></div><div>
<div><font color="#222222" size="1" face="courier new, monospace">    time.sleep(5)</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    if not in_shell():</font></div></div><div><div>
<font color="#222222" size="1" face="courier new, monospace">        server_threads.start_server_threads()</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace"><br></font></div></div><div>
<div><font color="#222222" size="1" face="courier new, monospace">def app(global_config, **settings):</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    logging.basicConfig()</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace">    </font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    zodb_uri = global_config.get(&#39;zodb_uri&#39;)</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace">    if zodb_uri is None:</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">        raise ValueError(&quot;No &#39;zodb_uri&#39; in application configuration.&quot;)</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace"><br></font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    zcml_file = settings.get(&#39;configure_zcml&#39;, &#39;configure.zcml&#39;)</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace"><br></font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    finder = PersistentApplicationFinder(zodb_uri, appmaker)</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace">    def get_root(request):</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">        return finder(request.environ)</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace">    config = Configurator(root_factory=get_root, settings=settings)</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    config.begin()</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace">    config.load_zcml(zcml_file)</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    config.end()</font></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace"><br></font></div></div><div><div><span style="color:rgb(34,34,34);font-family:&#39;courier new&#39;,monospace;font-size:x-small">    th = threading.Thread(target=check_start_threads)</span></div>
</div><div><div><font color="#222222" size="1" face="courier new, monospace">    th.start()</font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    </font></div></div><div><div><font color="#222222" size="1" face="courier new, monospace">    return config.make_wsgi_app()</font></div>
</div></blockquote><div><div style="color:rgb(34,34,34);font-family:arial,sans-serif"><br></div></div><div><font color="#222222" face="arial, sans-serif">Seems fairly straightforward, no?</font></div><div><font color="#222222" face="arial, sans-serif"><br>
</font></div><div><span style="color:rgb(34,34,34);font-family:arial,sans-serif">- Claudiu</span></div>