title: What's wrong with my code? WSGI, beaker, python, apache2
body: <p>I'm using apache2, python26, more or less latest version of beaker, mod_wsgi</p>
  
  <p>Here's my code, I got this from <a href="http://beaker.groovie.org/sessions.html#using" rel="nofollow">http://beaker.groovie.org/sessions.html#using</a></p>
  
  <pre><code>from beaker.middleware import SessionMiddleware
  
  def simple_app(environ, start_response):
      # Get the session object from the environ
      session = environ['beaker.session']
  
      # Check to see if a value is in the session
      if 'logged_in' in session:
          user = True
      else:
          user = False
  
      # Set some other session variable
      session['user_id'] = 10
  
      start_response('200 OK', [('Content-type', 'text/plain')])
      return ['User is logged in: %s' % user]
  
  # Configure the SessionMiddleware
  session_opts = {
      'session.type': 'file',
      'session.cookie_expires': True,
  }
  wsgi_app = SessionMiddleware(simple_app, session_opts)
  </code></pre>
  
  <p>This works fine when I go to localhost/beaker2.wsgi. When I try two changes the site fails:</p>
  
  <p>1.
  add</p>
  
  <pre><code>session.save()
  </code></pre>
  
  <p>or</p>
  
  <p>2.
  change</p>
  
  <pre><code>'session.type': 'cookie',
  </code></pre>
  
  <p>Why do I get errors when I add session.save() or change session.type to cookie?</p>
  
  <p>full trackback:
  sorry for the dates and everything, did it with tail -f</p>
  
  <p>This is for the session.save() error:</p>
  
  <pre><code>[Sun May 01 04:35:55 2011] [error] [client 127.0.0.1] mod_wsgi (pid=25311): Exception occurred processing WSGI script '/home/yizi/apache2/www/beaker2.wsgi'.
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/middleware.py", line 152, in __call__
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]     return self.wrap_app(environ, session_start_response)
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]   File "/home/yizi/apache2/www/beaker2.wsgi", line 21, in simple_app
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]     start_response('200 OK', [('Content-type', 'text/html')])
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/middleware.py", line 146, in session_start_response
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]     session.persist()
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/session.py", line 609, in persist
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]     self._session().save()
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/session.py", line 275, in save
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]     **self.namespace_args)
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/container.py", line 518, in __init__
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1]     raise MissingCacheParameter("data_dir or file_dir is required")
  [Sun May 01 04:35:55 2011] [error] [client 127.0.0.1] MissingCacheParameter: data_dir or file_dir is required
  </code></pre>
  
  <p>This is the cookie error:</p>
  
  <pre><code>[Sun May 01 04:53:18 2011] [error] [client 127.0.0.1] mod_wsgi (pid=25312): Exception occurred processing WSGI script '/home/yizi/apache2/www/beaker2.wsgi'.
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1] Traceback (most recent call last):
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/middleware.py", line 152, in __call__
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]     return self.wrap_app(environ, session_start_response)
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]   File "/home/yizi/apache2/www/beaker2.wsgi", line 10, in simple_app
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]     if 'logged_in' in session:
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/session.py", line 579, in __contains__
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]     return self._session().has_key(key)
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/session.py", line 547, in _session
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]     self.__dict__['_sess'] = CookieSession(req, **params)
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]   File "/usr/local/lib/python2.6/dist-packages/Beaker-1.5.4-py2.6.egg/beaker/session.py", line 373, in __init__
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1]     raise BeakerException("No validate_key specified for Cookie only "
  [Sun May 01 04:53:18 2011] [error] [client 127.0.0.1] BeakerException: No validate_key specified for Cookie only Session.
  </code></pre>