spinetoolbox.server.engine_client

Client for exchanging messages between the toolbox and the Spine Engine Server.

Module Contents

Classes

ClientSecurityModel

Generic enumeration.

EngineClient

param host

IP address of the Spine Engine Server

class spinetoolbox.server.engine_client.ClientSecurityModel[source]

Bases: enum.Enum

Generic enumeration.

Derive from this class to define new enumerations.

NONE = 0[source]
STONEHOUSE = 1[source]
class spinetoolbox.server.engine_client.EngineClient(host, port, sec_model, sec_folder, ping=True)[source]
Parameters
  • host (str) – IP address of the Spine Engine Server

  • port (int) – Port of the client facing (frontend) socket on Spine Engine Server

  • sec_model (ClientSecurityModel) – Client security scheme

  • sec_folder (str) – Path to security file directory

  • ping (bool) – Whether to check connectivity at instance creation

connect_pull_socket(port)[source]

Connects a PULL socket for receiving engine execution events and files from server.

Parameters

port (str) – Port of the PUSH socket on server

rcv_next(dealer_or_pull)[source]

Polls all sockets and returns a new reply based on given socket ‘name’.

Parameters

dealer_or_pull (str) – “dealer” to wait reply from DEALER socket, “pull” to wait reply from PULL socket

_check_connectivity(timeout)[source]

Pings server, waits for the response, and acts accordingly.

Parameters

timeout (int) – Time to wait for a response before giving up [ms]

Returns

void

Raises

RemoteEngineInitFailed if the server is not responding.

set_start_time()[source]

Sets a start time for an operation. Call get_elapsed_time() after an operation has finished to get the elapsed time string.

upload_project(project_dir_name, fpath)[source]

Uploads the zipped project file to server. Project zip file must be ready and the server available before calling this method.

Parameters
  • project_dir_name (str) – Project directory name

  • fpath (str) – Absolute path to zipped project file.

Returns

Project execution job Id

Return type

str

start_execution(engine_data, job_id)[source]

Sends the start execution request along with job Id and engine (dag) data to the server. Response message data contains the push/pull socket port if execution starts successfully.

Parameters
  • engine_data (str) – Input for SpineEngine as JSON str. Includes most of project.json, settings, etc.

  • job_id (str) – Project execution job Id on server

Returns

Response tuple (event_type, data). Event_type is “server_init_failed”, “remote_execution_init_failed” or “remote_execution_started. data is an error message or the publish and push sockets ports concatenated with ‘:’.

Return type

tuple

stop_execution(job_id)[source]

Sends a request to stop executing the DAG that is managed by this client.

Parameters

job_id (str) – Job Id on server to stop

answer_prompt(job_id, prompter_id, answer)[source]

Sends a request to answer a prompt from the DAG that is managed by this client.

Parameters
  • job_id (str) – Job Id on server to stop

  • prompter_id (int) –

  • answer

download_files(q)[source]

Pulls files from server until b’END’ is received.

save_downloaded_file(b_rel_path, file_data)[source]

Saves downloaded file to project directory.

Parameters
  • b_rel_path (bytes) – Relative path (to project dir) where the file should be saved

  • file_data (bytes) – File as bytes object

retrieve_project(job_id)[source]

Retrieves a zipped project file from server.

Parameters

job_id (str) – Job Id for finding the project directory on server

Returns

Zipped project file

Return type

bytes

remove_project_from_server(job_id)[source]

Sends a request to remove a project directory from server.

Parameters

job_id (str) – Job Id for finding the project directory on server

Returns

Message from server

Return type

str

send_is_complete(persistent_key, cmd)[source]

Sends a request to process is_complete(cmd) in persistent manager on server and returns the response.

send_issue_persistent_command(persistent_key, cmd)[source]

Sends a request to process given command in persistent manager identified by given key. Yields the response string(s) as they arrive from server.

send_get_persistent_completions(persistent_key, text)[source]

Requests completions to given text from persistent execution backend.

send_get_persistent_history_item(persistent_key, text, prefix, backwards)[source]

Requests the former or latter history item from persistent execution backend.

send_restart_persistent(persistent_key)[source]

Sends restart persistent cmd to persistent execution manager backend on server. Yields the messages resulting from this operation to persistent console client.

send_interrupt_persistent(persistent_key)[source]

Sends interrupt persistent cmd to persistent execution manager backend on server.

send_kill_persistent(persistent_key)[source]

Sends kill persistent cmd to persistent execution manager backend on server.

Parameters

persistent_key (tuple) – persistent manager identifier

send_request_to_persistent(data)[source]

Sends given data containing persistent_key, command, cmd_to_persistent to Spine Engine Server to be processed by a persistent execution manager backend. Makes a request using REQ socket, parses the response into a ServerMessage, and returns the second part of the data field.

send_request_to_persistent_generator(data)[source]

Pulls all messages from server, that were the result of sending given data to Spine Engine Server.

get_elapsed_time()[source]

Returns the elapsed time between now and when self.start_time was set.

Returns

Time string with unit(s)

Return type

str

close()[source]

Closes client sockets, context and thread.