Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

aiothrift

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

aiothrift

Async Thrift server and client

pipPyPI
Version
0.2.7
Maintainers
1

aiothrift

Asyncio implementation for thrift protocol, which is heavily based on thriftpy2_.

.. image:: https://travis-ci.org/ryanwang520/aiothrift.svg?branch=master :target: https://travis-ci.org/ryanwang520/aiothrift

Documentation: https://aiothrift.readthedocs.org/

Installation

::

$ pip install aiothrift

Usage example

Thrift file ^^^^^^^^^^^

::

service PingPong {
    string ping(),
    i64 add(1:i32 a, 2:i64 b),
}

Server ^^^^^^

.. code:: python

import asyncio
import aiothrift

pingpong_thrift = aiothrift.load('pingpong.thrift', module_name='pingpong_thrift')

class Dispatcher:
    def ping(self):
        return "pong"

    async def add(self, a, b):
        await asyncio.sleep(1)
        return a + b

async def main():
  server = await aiothrift.create_server(pingpong_thrift.PingPong, Dispatcher()))
  async with server:
      await server.serve_forever()

asyncio.run(main())

Client ^^^^^^

.. code:: python

import asyncio
import aiothrift

pingpong_thrift = aiothrift.load('pingpong.thrift', module_name='pingpong_thrift')

async def go():
    conn = await aiothrift.create_connection(pingpong_thrift.PingPong)
    print(await conn.ping())
    print(await conn.add(5, 6))
    conn.close()

asyncio.run(go())

Or use ConnectionPool ^^^^^^^^^^^^^^^^^^^^^

.. code:: python

import asyncio
import aiothrift

pingpong_thrift = aiothrift.load('pingpong.thrift', module_name='pingpong_thrift')

async def go():
    client = await aiothrift.create_pool(pingpong_thrift.PingPong)
    print(await client.ping())
    print(await client.add(5, 6))
    client.close()
    await client.wait_closed()

asyncio.run(go())

It's just that simple to begin with aiothrift, and you are not forced to use aiothrift on both server and client side. So if you already have a normal thrift server setup, feel free to create an async thrift client to communicate with that server.

Requirements

  • Python >= 3.7.0
  • async-timeout_
  • thriftpy2_

.. _async-timeout: https://pypi.python.org/pypi/async_timeout .. _thriftpy2: https://thriftpy2.readthedocs.org/en/latest/

LICENSE

aiothrift is offered under the MIT license.

Keywords

thrift

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts