Changeset 1696
- Timestamp:
- 07/09/07 16:31:51
- Files:
-
- trunk/cherrypy/lib/sessions.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cherrypy/lib/sessions.py
r1690 r1696 137 137 138 138 def pop(self, key, default=missing): 139 """Remove the specified key and return the corresponding value. 140 If key is not found, default is returned if given, 141 otherwise KeyError is raised. 142 """ 139 143 if not self.loaded: self.load() 140 144 if default is missing: … … 148 152 149 153 def has_key(self, key): 154 """D.has_key(k) -> True if D has a key k, else False.""" 150 155 if not self.loaded: self.load() 151 156 return self._data.has_key(key) 152 157 153 158 def get(self, key, default=None): 159 """D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.""" 154 160 if not self.loaded: self.load() 155 161 return self._data.get(key, default) 156 162 157 163 def update(self, d): 164 """D.update(E) -> None. Update D from E: for k in E: D[k] = E[k].""" 158 165 if not self.loaded: self.load() 159 166 self._data.update(d) 160 167 161 168 def setdefault(self, key, default=None): 169 """D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D.""" 162 170 if not self.loaded: self.load() 163 171 return self._data.setdefault(key, default) 164 172 165 173 def clear(self): 174 """D.clear() -> None. Remove all items from D.""" 166 175 if not self.loaded: self.load() 167 176 self._data.clear() 168 177 169 178 def keys(self): 179 """D.keys() -> list of D's keys.""" 170 180 if not self.loaded: self.load() 171 181 return self._data.keys() 172 182 173 183 def items(self): 184 """D.items() -> list of D's (key, value) pairs, as 2-tuples.""" 174 185 if not self.loaded: self.load() 175 186 return self._data.items() 176 187 177 188 def values(self): 189 """D.values() -> list of D's values.""" 178 190 if not self.loaded: self.load() 179 191 return self._data.values() … … 210 222 211 223 def acquire_lock(self): 224 """Acquire an exclusive lock on the currently-loaded session data.""" 212 225 self.locked = True 213 226 self.locks.setdefault(self.id, threading.RLock()).acquire() 214 227 215 228 def release_lock(self): 229 """Release the lock on the currently-loaded session data.""" 216 230 self.locks[self.id].release() 217 231 self.locked = False … … 230 244 231 245 def setup(self): 246 """Set up the storage system for file-based sessions. 247 248 This should only be called once per process; this will be done 249 automatically when using sessions.init (as the built-in Tool does). 250 """ 232 251 # Warn if any lock files exist at startup. 233 252 lockfiles = [fname for fname in os.listdir(self.storage_path) … … 271 290 272 291 def acquire_lock(self, path=None): 292 """Acquire an exclusive lock on the currently-loaded session data.""" 273 293 if path is None: 274 294 path = self._get_file_path() … … 285 305 286 306 def release_lock(self, path=None): 307 """Release the lock on the currently-loaded session data.""" 287 308 if path is None: 288 309 path = self._get_file_path() … … 357 378 358 379 def acquire_lock(self): 380 """Acquire an exclusive lock on the currently-loaded session data.""" 359 381 # We use the "for update" clause to lock the row 360 382 self.locked = True … … 363 385 364 386 def release_lock(self): 387 """Release the lock on the currently-loaded session data.""" 365 388 # We just close the cursor and that will remove the lock 366 389 # introduced by the "for update" clause

