You can use Executor objects directly, just like a regular Python object.

One can instantiate an Executor object from a local Python class, or from the Executor Hub:

From a local Python class#

from jina import Executor, requests, DocumentArray, Document

class MyExec(Executor):
    def foo(self, docs, **kwargs):
        for d in docs:
            d.text = 'hello world'

m = MyExec()
da = DocumentArray([Document(text='test')])
print(f'Text: {da[0].text}')
Text: hello world

From the Executor Hub#

You can pull an Executor from Executor Hub and use it directly as a Python object.

from docarray import Document, DocumentArray
from jina import Executor

executor = Executor.from_hub(
    uri='jinaai://jina-ai/CLIPTextEncoder', install_requirements=True

docs = DocumentArray(Document(text='hello'))
executor.encode(docs, {})

(1, 512)

Run inside an async eventloop#

If the Executor contains async functions, you can run it inside an asyncio eventloop.

import asyncio
from jina import Executor, requests

class MyExecutor(Executor):
    async def foo(self, **kwargs):
        await asyncio.sleep(1.0)

async def main():
    m = MyExecutor()
    call1 = asyncio.create_task(
    call2 = asyncio.create_task(
    await asyncio.gather(call1, call2)

Run as a process#

You can run an Executor from CLI. In this case, the Executor occupies one process. The lifetime of the Executor is the lifetime of the process.

From a local Executor#

With containing the definition of MyExec, now creating a new file called my-exec.yml:

jtype: MyExec

This simply points Jina to our file and Executor class. Now we can run the command:

jina executor --uses my-exec.yml --port 12345

From Executor Hub#

In this example, we use CLIPTextEncoder to create embeddings for our Documents.

jina executor --uses jinaai+docker://jina-ai/CLIPTextEncoder
jina executor --uses jinaai://jina-ai/CLIPTextEncoder

This might take a few seconds, but in the end you should be greeted with the following message:

[email protected] 1[L]: Executor CLIPTextEncoder started

Just like that, our Executor is up and running.