Beispiel #1
0
def query(client: Client, docs_gen_func: Callable[[int], Generator],
          req_size: int, dataset: str, nr_docs: int):
    on_done = validate_img
    if dataset == 'text':
        on_done = validate_text
    client.search(docs_gen_func(nr_docs),
                  on_done=on_done,
                  top_k=TOP_K,
                  request_size=req_size)
Beispiel #2
0
def test_custom_dockerfile():
    f = Flow(port_expose=exposed_port).add(
        uses='DummyRedisIndexer',
        py_modules='redis_executor.py',
        upload_files=[
            os.path.join(cur_dir, '../../daemon/unit/models/good_ws_custom_dockerfile'),
        ],
        host='localhost:8000',
    )
    with f:
        c = Client(port=exposed_port)
        c.index(
            inputs=(
                Document(text=f'{i}', embedding=np.random.rand(2, 3)) for i in range(5)
            ),
        )
        resp = c.search(inputs=[Document(text='3')], return_results=True)
        assert resp[0].docs[0].matches[0].text == '3'
        assert resp[0].docs[0].matches[0].embedding.shape == (2, 3)
Beispiel #3
0
def send_requests(
    port_expose,
    start_rolling_update_event: multiprocessing.Event,
    result_queue: multiprocessing.Queue,
    doc_count: int,
    request_count: int,
):
    client = Client(port=port_expose)
    for i in range(request_count):
        responses = client.search(
            [
                Document(id=f'{idx}', text=f'doc{idx}')
                for idx in range(doc_count)
            ],
            request_size=10,
            return_results=True,
        )
        for r in responses:
            result_queue.put(r.docs.texts)
        if i == 5:
            start_rolling_update_event.set()
            # give the rolling update some time to kick in
            time.sleep(0.1)