Transport protocol

Available transports

Althought the default transport protocol is IPC, there are other transport protocols that can be used in osBrain:

  • tcp: common TCP. Can always be used, and must be used to communicate agents running in different machines.
  • ipc: common IPC. It is the default and the best suited for communication between agents that run on the same machine
  • inproc: for in-process communication (between threads). The fastest protocol, although it is limited to communication between threads that share the same Agent.context

The transport protocol can be changed on a per-socket basis, per-agent basis and also globally.

Changing the transport

It is possible to change the default global transport protocol by setting the osbrain.config['TRANSPORT'] configuration variable. So, for example, to set TCP as the default transport, we could set:

osbrain.config['TRANSPORT'] = 'tcp'

We can also set the default transport that a particular agent should use by default by passing the transport parameter to run_agent:

agent = run_agent('a0', transport='tcp')

If we do not want to change the global default nor any agent’s default, then we can still change the transport protocol when binding, passing the transport parameter again:

agent = run_agent('a0')
agent.bind('PULL', transport='inproc')

Note

It is also possible to change the global default transport protocol setting the OSBRAIN_DEFAULT_TRANSPORT environment variable.