def main(request, response): | |
# `token` should be a unique UUID request parameter for the duration of this | |
# request. It will get stored in the server stash and will be used later in | |
# a query request. | |
# `query` should be a request parameter indicating the request would like | |
# to know how many times the server has seen the request (with the | |
# same token). | |
token = request.GET.first(b"token", None) | |
is_query = request.GET.first(b"query", None) is not None | |
with request.server.stash.lock: | |
value = request.server.stash.take(token) | |
count = 0 | |
if value is not None: | |
count = int(value) | |
if is_query: | |
request.server.stash.put(token, count) | |
else: | |
count += 1 | |
request.server.stash.put(token, count) | |
headers = [] | |
if is_query: | |
headers = [(b"Count", count)] | |
return (200, headers, b"") |