mirror of
https://github.com/pretix/pretix.git
synced 2026-05-04 15:04:03 +00:00
API: Add logging for replaying by idempotency key
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
# <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
import json
|
||||
import logging
|
||||
from hashlib import sha1
|
||||
|
||||
from django.conf import settings
|
||||
@@ -35,6 +36,9 @@ from pretix.base.models import Organizer
|
||||
from pretix.helpers import OF_SELF
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class IdempotencyMiddleware:
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
@@ -97,6 +101,9 @@ class IdempotencyMiddleware:
|
||||
return resp
|
||||
else:
|
||||
if call.locked:
|
||||
logger.info(
|
||||
f'Concurrent request with idempotency key {idempotency_key} blocked.'
|
||||
)
|
||||
r = JsonResponse(
|
||||
{'detail': 'Concurrent request with idempotency key.'},
|
||||
status=status.HTTP_409_CONFLICT,
|
||||
@@ -111,6 +118,7 @@ class IdempotencyMiddleware:
|
||||
content=content,
|
||||
status=call.response_code,
|
||||
)
|
||||
logger.info(f'API response replayed from idempotency store for key {idempotency_key} [{call.response_code}]')
|
||||
for k, v in json.loads(call.response_headers).values():
|
||||
r[k] = v
|
||||
return r
|
||||
|
||||
Reference in New Issue
Block a user