import tractor import trio log = tractor.log.get_console_log( _root_name='my_app', name='client', ) async def client_main(): # enable console logging for our custom app's logger tractor.log.get_console_log( level='info', _root_name='my_app', name='client', ) # presuming you can get a ref to the target server RPC-ctx func from server import proxy_request async with ( tractor.open_root_actor( name='web_requester', registry_addrs=[('127.0.0.1', 1616)], enable_modules=[], # since this isn't a service actor ), # use discovery api to find the server actor on your net # (NOTE, in which case the below registry addr would have to # be the public IP of that host!) tractor.find_actor( name='web_proxier', registry_addrs=[('127.0.0.1', 1616)], ) as portal, # open an RPC context with the remote actor, thus spawning # a new task implemented as the function defined in the # server code. portal.open_context( proxy_request, address='https://github.com', ) as (ctx, first), ): resp: dict = await ctx.result() print(resp) trio.run(client_main)