Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
7b0c22af
Commit
7b0c22af
authored
Jul 10, 2015
by
Calen Pennington
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make request_cache easier to use
parent
a9c4774f
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
53 additions
and
11 deletions
+53
-11
common/djangoapps/request_cache/__init__.py
+28
-0
common/djangoapps/request_cache/middleware.py
+25
-11
No files found.
common/djangoapps/request_cache/__init__.py
View file @
7b0c22af
"""
A cache that is cleared after every request.
This module requires that :class:`request_cache.middleware.RequestCache`
is installed in order to clear the cache after each request.
"""
from
request_cache
import
middleware
def
get_cache
(
name
):
"""
Return the request cache named ``name``.
Arguments:
name (str): The name of the request cache to load
Returns: dict
"""
return
middleware
.
RequestCache
.
get_request_cache
(
name
)
def
get_request
():
"""
Return the current request.
"""
return
middleware
.
RequestCache
.
get_current_request
()
common/djangoapps/request_cache/middleware.py
View file @
7b0c22af
import
threading
_request_cache_threadlocal
=
threading
.
local
()
_request_cache_threadlocal
.
data
=
{}
_request_cache_threadlocal
.
request
=
None
class
_RequestCache
(
threading
.
local
):
"""
A thread-local for storing the per-request cache.
"""
def
__init__
(
self
):
super
(
_RequestCache
,
self
)
.
__init__
()
self
.
data
=
{}
self
.
request
=
None
REQUEST_CACHE
=
_RequestCache
()
class
RequestCache
(
object
):
@classmethod
def
get_request_cache
(
cls
):
return
_request_cache_threadlocal
def
get_request_cache
(
cls
,
name
=
None
):
"""
This method is deprecated. Please use :func:`request_cache.get_cache`.
"""
if
name
is
None
:
return
REQUEST_CACHE
else
:
return
REQUEST_CACHE
.
data
.
setdefault
(
name
,
{})
@classmethod
def
get_current_request
(
cls
):
"""
Get a reference to the HttpRequest object, if we are presently
servicing one.
This method is deprecated. Please use :func:`request_cache.get_request`.
"""
return
_request_cache_threadlocal
.
request
return
REQUEST_CACHE
.
request
@classmethod
def
clear_request_cache
(
cls
):
"""
Empty the request cache.
"""
_request_cache_threadlocal
.
data
=
{}
_request_cache_threadlocal
.
request
=
None
REQUEST_CACHE
.
data
=
{}
REQUEST_CACHE
.
request
=
None
def
process_request
(
self
,
request
):
self
.
clear_request_cache
()
_request_cache_threadlocal
.
request
=
request
REQUEST_CACHE
.
request
=
request
return
None
def
process_response
(
self
,
request
,
response
):
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment