Remote Flow
JinaD enables management of (remote + containerized) Flows with all your dependencies via REST APIs.
Create Flow (redoc)
This creates a new container using the base image, connects it to the network defined by workspace_id
and starts a Flow inside the container. Only the ports needed for external communication are mapped to local. Make sure you’ve added all your config files while creating the workspace in the previous step.
from daemon.clients import JinaDClient
client = JinaDClient(host=HOST, port=PORT)
client.flows.create(workspace_id=workspace_id, filename='my_awesome_flow.yml')
# jflow-a71cc28f-a5db-4cc0-bb9e-bb7797172cc9
Get details of Flow (redoc)
client.flows.get(flow_id)
{
"time_created": "2021-07-27T05:12:06.646809",
"metadata": {
"container_id": "8770817435",
"container_name": "jflow-a71cc28f-a5db-4cc0-bb9e-bb7797172cc9",
"image_id": "28bd40a87e",
"network": "6363b4a5b8",
"ports": {
"23456/tcp": 23456,
"51567/tcp": 51567
},
"uri": "http://host.docker.internal:51567"
},
"arguments": {
"object": {
"time_created": "2021-07-27T05:12:06.640236",
"arguments": {
"port_expose": 23456,
"name": None,
"workspace": "./",
"log_config": "/usr/local/lib/python3.7/site-packages/jina/resources/logging.default.yml",
"quiet": False,
"quiet_error": False,
"workspace_id": "9db7a919-dfa5-420c-834e-ab940a40cbf2",
"uses": None,
"env": None,
"inspect": 2
},
"yaml_source": "jtype: Flow\nversion: "1.0"\nwith:\n protocol: http\n port_expose: 23456\nexecutors:\n - name: executor_ex\n"
},
"command": "--port-expose 51567 --mode flow --workspace-id 4d0a0db5-2cb8-4e8f-8183-966681c1c863"
},
"workspace_id": "jworkspace-4d0a0db5-2cb8-4e8f-8183-966681c1c863"
}
Terminate Flow (redoc)
assert client.flows.delete(flow_id)