pynetdicom.transport.ThreadedAssociationServer

class pynetdicom.transport.ThreadedAssociationServer(ae, address, ae_title, contexts, ssl_context=None, evt_handlers=None)

An AssociationServer suitable for threading.

__init__(ae, address, ae_title, contexts, ssl_context=None, evt_handlers=None)

Create a new AssociationServer, bind a socket and start listening.

Parameters:
  • ae (ae.ApplicationEntity) – The parent AE that’s running the server.
  • address (2-tuple) – The (host, port) that the server should run on.
  • ae_title (bytes) – The AE title of the SCP.
  • contexts (list of presentation.PresentationContext) – The SCPs supported presentation contexts.
  • ssl_context (ssl.SSLContext, optional) – If TLS is to be used then this should be the ssl.SSLContext used to wrap the client sockets, otherwise if None then no TLS will beused (default).
  • evt_handlers (list of 2-tuple, optional) – A list of (event, callable), the callable function to run when event occurs.

Methods

__init__(ae, address, ae_title, contexts[, …]) Create a new AssociationServer, bind a socket and start listening.
bind(event, handler) Bind a callable handler to an event.
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_events() Return a list of currently bound events.
get_handlers(event) Return handlers bound to a specific event.
get_request() Handle a connection request.
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) Process a connection request.
serve_forever([poll_interval]) Handle one request at a time until shutdown.
server_activate() Called by constructor to activate the server.
server_bind() Bind the socket and set the socket options.
server_close()
service_actions() Called by the serve_forever() loop.
shutdown() Completely shutdown the server and close it’s socket.
shutdown_request(request) Called to shutdown and close an individual request.
unbind(event, handler) Unbind a callable handler from an event.
verify_request(request, client_address) Verify the request.

Attributes

active_associations Return the server’s running Association acceptor instances
address_family
allow_reuse_address
block_on_close
daemon_threads
request_queue_size
socket_type
timeout
active_associations

Return the server’s running Association acceptor instances

bind(event, handler)

Bind a callable handler to an event.

Parameters:
  • event (3-tuple) – The event to bind the function to.
  • handler (callable) – The function that will be called if the event occurs.
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_events()

Return a list of currently bound events.

get_handlers(event)

Return handlers bound to a specific event.

Parameters:event (tuple) – The event bound to the handlers.
Returns:If the event is a notification event then returns a list of callable functions bound to event, if the event is an intervention event then returns either a callable function if a handler is bound to the event or None if no handler has been bound.
Return type:callable, list of callable or None
get_request()

Handle a connection request.

If ssl_context is set then the client socket will be wrapped using ssl_context.wrap_socket().

Returns:
  • client_socket (socket._socket) – The connection request.
  • address (2-tuple) – The client’s address as (host, port).
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)

Process a connection request.

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()

Bind the socket and set the socket options.

  • socket.SO_REUSEADDR is set to 1
  • socket.SO_RCVTIMEO is set to AE.network_timeout unless the value is None in which case it will be left unset.
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()

Completely shutdown the server and close it’s socket.

shutdown_request(request)

Called to shutdown and close an individual request.

unbind(event, handler)

Unbind a callable handler from an event.

Parameters:
  • event (3-tuple) – The event to unbind the function from.
  • handler (callable) – The function that will no longer be called if the event occurs.
verify_request(request, client_address)

Verify the request. May be overridden.

Return True if we should proceed with this request.