Skip to content

Commit 20f9a0e

Browse files
tjoubertjoowani
authored andcommitted
Added QueueTimeApiExecutor
1 parent ee274ff commit 20f9a0e

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

arango/executor.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,3 +428,35 @@ def abort(self) -> bool:
428428
if resp.is_success:
429429
return True
430430
raise TransactionAbortError(resp, request)
431+
432+
433+
434+
class QueueTimeApiExecutor:
435+
"""API executor that handles queue time.
436+
437+
:param connection: HTTP connection.
438+
:type connection: arango.connection.BasicConnection |
439+
arango.connection.JwtConnection | arango.connection.JwtSuperuserConnection
440+
"""
441+
442+
def __init__(self, connection: Connection) -> None:
443+
self._conn = connection
444+
445+
@property
446+
def context(self) -> str:
447+
return "queue-time"
448+
449+
def execute(self, request: Request, response_handler: Callable[[Response], T], max_queue_time_seconds: int) -> T:
450+
"""Execute an API request and return the result.
451+
452+
:param request: HTTP request.
453+
:type request: arango.request.Request
454+
:param response_handler: HTTP response handler.
455+
:type response_handler: callable
456+
:return: API execution result.
457+
"""
458+
request.headers["x-arango-max-queue-time-seconds"] = max_queue_time_seconds
459+
resp = self._conn.send_request(request)
460+
461+
queue_time_seconds = resp.headers["x-arango-queue-time-seconds"]
462+
return response_handler(resp, queue_time_seconds)

0 commit comments

Comments
 (0)