zut.callback.CallbackServer

class zut.callback.CallbackServer(callback_function: Callable[[CallbackRequest], Any] | Callable[[], Any], callback_path: str | None = None, *, listening_address: str = '127.0.0.1', listening_port: int = 0)

Bases: ThreadingMixIn, TCPServer

A temporary HTTP server launched to wait callback GET request (typically used for redirects of authorization flows).

__init__(callback_function: Callable[[CallbackRequest], Any] | Callable[[], Any], callback_path: str | None = None, *, listening_address: str = '127.0.0.1', listening_port: int = 0)
Parameters:
  • callback_function – The callback function to be called when a GET request is received. The function may have a CallbackRequest argument if it needs to analyze the received request. The callback server is interrupted after the callback function has finished running, except if it raised an exception. If the exception raised contains a code attribute between 400 and 599, it is used as the HTTP return code. If it contains a reason attribute, it is used as the HTTP response text.

  • callback_path – If set, the callback function will be called only for the given path.

Methods

__init__(callback_function[, callback_path, ...])

close_request(request)

Called to clean up an individual request.

fileno()

Return socket file number.

finish_request(request, client_address)

Finish one request by instantiating RequestHandlerClass.

get_request()

Get the request and client address from the socket.

handle_error(request, client_address)

Handle an error gracefully.

handle_request()

Handle one request, possibly blocking.

handle_timeout()

Called if no new request arrives within self.timeout.

process_request(request, client_address)

Start a new thread to process the request.

process_request_thread(request, client_address)

Same as in BaseServer but as a thread.

run()

serve_forever([poll_interval])

Handle one request at a time until shutdown.

server_activate()

Called by constructor to activate the server.

server_bind()

Called by constructor to bind the socket.

server_close()

Called to clean-up the server.

service_actions()

Called by the serve_forever() loop.

shutdown()

Stops the serve_forever loop.

shutdown_request(request)

Called to shutdown and close an individual request.

verify_request(request, client_address)

Verify the request.

Attributes

address_family

allow_reuse_address

allow_reuse_port

block_on_close

daemon_threads

request_queue_size

socket_type

timeout

close_request(request)

Called to clean up an individual request.

fileno()

Return socket file number.

Interface required by selector.

finish_request(request, client_address)

Finish one request by instantiating RequestHandlerClass.

get_request()

Get the request and client address from the socket.

May be overridden.

handle_error(request, client_address)

Handle an error gracefully. May be overridden.

The default is to print a traceback and continue.

handle_request()

Handle one request, possibly blocking.

Respects self.timeout.

handle_timeout()

Called if no new request arrives within self.timeout.

Overridden by ForkingMixIn.

process_request(request, client_address)

Start a new thread to process the request.

process_request_thread(request, client_address)

Same as in BaseServer but as a thread.

In addition, exception handling is done here.

serve_forever(poll_interval=0.5)

Handle one request at a time until shutdown.

Polls for shutdown every poll_interval seconds. Ignores self.timeout. If you need to do periodic tasks, do them in another thread.

server_activate()

Called by constructor to activate the server.

May be overridden.

server_bind()

Called by constructor to bind the socket.

May be overridden.

server_close()

Called to clean-up the server.

May be overridden.

service_actions()

Called by the serve_forever() loop.

May be overridden by a subclass / Mixin to implement any code that needs to be run during the loop.

shutdown()

Stops the serve_forever loop.

Blocks until the loop has finished. This must be called while serve_forever() is running in another thread, or it will deadlock.

shutdown_request(request)

Called to shutdown and close an individual request.

verify_request(request, client_address)

Verify the request. May be overridden.

Return True if we should proceed with this request.