Running an entity computation
New in v14.12.0
Besides handling entity data, the SDK API can be used to run a computation on an entity. This can be used to, for example, utilize the entity as a calculation tool in other apps by remotely running the logic on the entity's Controller.
api.entity_compute(workspace_id=1, entity_id=2, method_name="my_calculation", params={...})
workspace = api.get_workspace(1)
workspace.entity_compute(entity_id=2, method_name="my_calculation", params={...})
entity = api.get_entity(2)
entity.compute(method_name="my_calculation", params={...})
note
- Not all methods on an entity can be called over the API. Currently, only view methods and button methods are supported
- It is not possible to use
compute
on an entity within your own development workspace (it will return a TimeoutError)
Example
The example below shows how to replicate a geometry-view from another entity (from another workspace) in the current entity, without copying any logic. For more information on how to set up the API for cross-workspace access, see here.
import viktor as vkt
import os
class Controller(vkt.Controller):
@vkt.GeometryView("Geometry", duration_guess=5)
def geometry_view_from_other_entity(self, params, **kwargs):
api = vkt.api_v1.API(token=os.environ["TOKEN"])
entity = api.get_entity(other_entity_id, workspace_id=other_workspace_id)
result = entity.compute("geometry_view", params=entity.last_saved_params)
return vkt.GeometryResult(**result['geometry'])