File: client_us.py

package info (click to toggle)
aiorpcx 0.25.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 560 kB
  • sloc: python: 6,647; makefile: 18
file content (40 lines) | stat: -rwxr-xr-x 1,514 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import asyncio
import aiorpcx


async def main(path):
    async with aiorpcx.connect_us(path) as session:
        # A good request with standard argument passing
        result = await session.send_request('echo', ["Howdy"])
        print(result)
        # A good request with named argument passing
        result = await session.send_request('echo', {'message': "Hello with a named argument"})
        print(result)

        # aiorpcX transparently handles erroneous calls server-side, returning appropriate
        # errors.  This in turn causes an exception to be raised in the client.
        for bad_args in (
                ['echo'],
                ['echo', {}],
                ['foo'],
                # This causes an error running the server's buggy request handler.
                # aiorpcX catches the problem, returning an 'internal server error' to the
                # client, and continues serving
                ['sum', [2, 4, "b"]]
        ):
            try:
                await session.send_request(*bad_args)
            except Exception as exc:
                print(repr(exc))

        # Batch requests
        async with session.send_batch() as batch:
            batch.add_request('echo', ["Me again"])
            batch.add_notification('ping')
            batch.add_request('sum', list(range(50)))

        for n, result in enumerate(batch.results, start=1):
            print(f'batch result #{n}: {result}')


asyncio.get_event_loop().run_until_complete(main('/tmp/test.sock'))