Skip to content

Async support #6

Open
Open
@ramnes

Description

@ramnes

Hey there, thanks for the neat library.

Do you have any plan to support native async features of Python for the client?

e.g. something in the lines of:

import asyncio
import random

from recombee_api_client.api_client import AsyncRecombeeClient, Region
from recombee_api_client.exceptions import APIException
from recombee_api_client.api_requests import *

async def main():
    client = AsyncRecombeeClient('--my-database-id--', '--db-private-token--', region=Region.US_WEST)
    
    #Generate some random purchases of items by users
    PROBABILITY_PURCHASED = 0.1
    NUM = 100
    purchase_requests = []
    
    for user_id in ["user-%s" % i for i in range(NUM) ]:
      for item_id in ["item-%s" % i for i in range(NUM) ]:
        if random.random() < PROBABILITY_PURCHASED:
    
          request = AddPurchase(user_id, item_id, cascade_create=True)
          purchase_requests.append(request)
    
    try:
        # Send the data to Recombee, use Batch for faster processing of larger data
        print('Send purchases')
        await client.send(Batch(purchase_requests))
    
        # Get recommendations for user 'user-25'
        response = await client.send(RecommendItemsToUser('user-25', 5))
        print("Recommended items: %s" % response)
    
        # User scrolled down - get next 3 recommended items
        response = await client.send(RecommendNextItems(response['recommId'], 3))
        print("Next recommended items: %s" % response)
    
    except APIException as e:
        print(e)


asyncio.run(main())

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions