# Green API

Summary:

  - `tango.get_green_mode()`

  - `tango.set_green_mode()`

  - `tango.asyncio.DeviceProxy()`

  - `tango.futures.DeviceProxy()`

  - `tango.gevent.DeviceProxy()`

tango.get_green_mode()

  Returns the current global default PyTango green mode.

  Returns:

    the current global default PyTango green mode

  Return type:

    GreenMode

tango.set_green_mode(green_mode=None)

  Sets the global default PyTango green mode.

  Advice: Use only in your final application. Don’t use this in a python library in order not to interfere with the beavior of other libraries and/or application where your library is being.

  Parameters:

    green_mode (GreenMode) – the new global default PyTango green mode

tango.asyncio.DeviceProxy(self, dev_name, wait=False, timeout=None)

  -> DeviceProxy

  DeviceProxy(self, dev_name, need_check_acc, wait=False, timeout=None)

    -> DeviceProxy

  Creates a asyncio enabled `DeviceProxy`.

  The DeviceProxy constructor internally makes some network calls which makes it slow. By using the asyncio green mode you may give the control back to the asyncio event loop using the yield from or await synthax.

  Note

  The timeout parameter has no relation with the tango device client side timeout (gettable by `get_timeout_millis()` and settable through `set_timeout_millis()`)

  Parameters:

    - dev_name (str) – the device name or alias

    - need_check_acc (bool) – in first version of the function it defaults to True Determines if at creation time of DeviceProxy it should check for channel access (rarely used)

    - wait (bool) – whether or not to wait for result of creating a DeviceProxy.

    - timeout (float) – The number of seconds to wait for the result. If None, then there is no limit on the wait time. Ignored when wait is False.

  Returns:

    if wait is True:

      `DeviceProxy`

    else:

      `concurrent.futures.Future`

  Throws:

    - a DevFailed if wait is True and there is an error creating the device.

    - an asyncio.TimeoutError if wait is False, timeout is not None and the time to create the device has expired.

  New in PyTango 8.1.0

tango.futures.DeviceProxy(self, dev_name, wait=True, timeout=True) → DeviceProxy
tango.futures.DeviceProxy(self, dev_name, need_check_acc, wait=True, timeout=True) → DeviceProxy

  Creates a futures enabled `DeviceProxy`.

  The DeviceProxy constructor internally makes some network calls which makes it slow. By using the futures green mode you are allowing other python code to be executed in a cooperative way.

  Note

  The timeout parameter has no relation with the tango device client side timeout (gettable by `get_timeout_millis()` and settable through `set_timeout_millis()`)

  Parameters:

    - dev_name (str) – the device name or alias

    - need_check_acc (bool) – in first version of the function it defaults to True. Determines if at creation time of DeviceProxy it should check for channel access (rarely used)

    - wait (bool) – whether or not to wait for result of creating a DeviceProxy.

    - timeout (float) – The number of seconds to wait for the result. If None, then there is no limit on the wait time. Ignored when wait is False.

  Returns:

    if wait is True:

      `DeviceProxy`

    else:

      `concurrent.futures.Future`

  Throws:

    - a DevFailed if wait is True and there is an error creating the device.

    - a concurrent.futures.TimeoutError if wait is False, timeout is not None and the time to create the device has expired.

  New in PyTango 8.1.0

tango.gevent.DeviceProxy(self, dev_name, wait=True, timeout=True) → DeviceProxy
tango.gevent.DeviceProxy(self, dev_name, need_check_acc, wait=True, timeout=True) → DeviceProxy

  Creates a gevent enabled `DeviceProxy`.

  The DeviceProxy constructor internally makes some network calls which makes it slow. By using the gevent green mode you are allowing other python code to be executed in a cooperative way.

  Note

  The timeout parameter has no relation with the tango device client side timeout (gettable by `get_timeout_millis()` and settable through `set_timeout_millis()`)

  Parameters:

    - dev_name (str) – the device name or alias

    - need_check_acc (bool) – in first version of the function it defaults to True. Determines if at creation time of DeviceProxy it should check for channel access (rarely used)

    - wait (bool) – whether or not to wait for result of creating a DeviceProxy.

    - timeout (float) – The number of seconds to wait for the result. If None, then there is no limit on the wait time. Ignored when wait is False.

  Returns:

    if wait is True:

      `DeviceProxy`

    else:

      `gevent.event.AsynchResult`

  Throws:

    - a DevFailed if wait is True and there is an error creating the device.

    - a gevent.timeout.Timeout if wait is False, timeout is not None and the time to create the device has expired.

  New in PyTango 8.1.0