# eric7.Utilities.BackgroundService

Module implementing a background service for the various checkers and other Python interpreter dependent functions.

### Global Attributes

None

### Classes

BackgroundService | Class implementing the main part of the background service.

### Functions

None

## BackgroundService

Class implementing the main part of the background service.

### Signals

batchJobDone(function, language)
  emitted to indicate the end of a batch job (str, str)
serviceNotAvailable(function, language, filename, message)
  emitted to indicate the non-availability of a service function (str, str, str, str)

### Derived from

QTcpServer

### Class Attributes

None

### Class Methods

None

### Methods

BackgroundService | Constructor
__getPythonInterpreter | Private method to generate the path of the Python interpreter to be used to run the background client.
__processQueue | Private method to take the next service request and send it to the client.
__receive | Private method to receive the response from the clients.
__send | Private method to send a job request to one of the clients.
__startExternalClient | Private method to start the background client as external process.
enqueueRequest | Public method implementing a queued processing of incoming events.
on_disconnectSocket | Private slot called when connection to a client is lost.
on_newConnection | Private slot for new incoming connections from the clients.
preferencesOrProjectChanged | Public slot to restart the built in languages.
requestCancel | Public method to ask a batch job to terminate.
restartService | Public method to restart a given language.
serviceConnect | Public method to announce a new service to the background service/client.
serviceDisconnect | Public method to remove the service from the service list.
shutdown | Public method to cleanup the connections and processes when eric is shutting down.

### Static Methods

None

#### BackgroundService (Constructor)

BackgroundService(parent=None)

Constructor

parent (QObject)
  reference to the parent object

#### BackgroundService.__getPythonInterpreter

__getPythonInterpreter()

Private method to generate the path of the Python interpreter to be used to run the background client.

Return:
  path of the Python interpreter

Return Type:
  str

#### BackgroundService.__processQueue

__processQueue()

Private method to take the next service request and send it to the client.

#### BackgroundService.__receive

__receive(lang)

Private method to receive the response from the clients.

lang (str)
  language of the incoming connection

Raises RuntimeError:
  raised if hashes don't match

#### BackgroundService.__send

__send(fx, lang, fn, data)

Private method to send a job request to one of the clients.

fx (str)
  remote function name to execute
lang (str)
  language to connect to
fn (str)
  filename for identification
data (any basic datatype)
  function argument(s)

#### BackgroundService.__startExternalClient

__startExternalClient(interpreter, port)

Private method to start the background client as external process.

interpreter (str)
  path and name of the executable to start
port (int)
  socket port to which the interpreter should connect

Return:
  the process object

Return Type:
  QProcess or None

#### BackgroundService.enqueueRequest

enqueueRequest(fx, lang, fn, data)

Public method implementing a queued processing of incoming events.

Duplicate service requests update an older request to avoid overrun or starving of the services.

fx (str)
  function name of the service
lang (str)
  language to connect to
fn (str)
  filename for identification
data (any basic datatype)
  function argument(s)

#### BackgroundService.on_disconnectSocket

on_disconnectSocket(lang)

Private slot called when connection to a client is lost.

lang (str)
  client language which connection is lost

#### BackgroundService.on_newConnection

on_newConnection()

Private slot for new incoming connections from the clients.

#### BackgroundService.preferencesOrProjectChanged

preferencesOrProjectChanged()

Public slot to restart the built in languages.

#### BackgroundService.requestCancel

requestCancel(fx, lang)

Public method to ask a batch job to terminate.

fx (str)
  function name of the service
lang (str)
  language to connect to

#### BackgroundService.restartService

restartService(language, forceKill=False)

Public method to restart a given language.

language (str)
  to restart
forceKill (bool)
  flag to kill a running task

#### BackgroundService.serviceConnect

serviceConnect(fx, lang, modulepath, module, callback, onErrorCallback=None, onBatchDone=None, )

Public method to announce a new service to the background service/client.

fx (str)
  function name of the service
lang (str)
  language of the new service
modulepath (str)
  full path to the module
module (str)
  name to import
callback (function)
  function called on service response
onErrorCallback
  function called, if client isn't available (function)
onBatchDone (function)
  function called when a batch job is done

#### BackgroundService.serviceDisconnect

serviceDisconnect(fx, lang)

Public method to remove the service from the service list.

fx (function)
  function name of the service
lang (str)
  language of the service

#### BackgroundService.shutdown

shutdown()

Public method to cleanup the connections and processes when eric is shutting down.

Up