arpc
A framework of remote procedure call.
Quick Start
arpc
# ${project}/arpc/api.arpc
arpc: 1.0
package {
python: api
go: api
}
procedures {
procedure GetUserV1(RequestV1): ResponseV1
}
param RequestV1 {
UserId: integer = 1
}
param ResponseV1 {
UserId: integer = 1
Username: string = 2
}
Compile
arpc -i ./arpc_file -o ./arpc_package -a true
Server
from arpc.server import Server
from arpc_package.api.api import Arpc, RequestV1, ResponseV1
class S(Arpc):
def get_user_v1(self, request: RequestV1) -> ResponseV1:
print(request)
return ResponseV1(user_id=1, username='arpc name')
def post_user_v1(self, request: ResponseV1) -> RequestV1:
print(request)
return RequestV1(user_id=1)
def start():
s = Server('127.0.0.1', 9000)
c = S()
c.register(s)
s.start()
if __name__ == '__main__':
start()
Server Async
require package: nest-asyncio >= 1.5.6
from arpc.server import ServerAsync
from arpc_package.api.api import Arpc, RequestV1, ResponseV1
class S(Arpc):
async def get_user_v1(self, request: RequestV1) -> ResponseV1:
print(request)
return ResponseV1(user_id=1, username='arpc name')
async def post_user_v1(self, request: ResponseV1) -> RequestV1:
print(request)
return RequestV1(user_id=1)
async def start():
s = ServerAsync('127.0.0.1', 9000)
c = S()
await c.register(s)
await s.start()
if __name__ == '__main__':
asyncio.run(start_async())
Client
import asyncio
from arpc.client import new_arpc_conn, new_arpc_conn_async
from arpc_package.api.api import Client, RequestV1
async def main_async():
conn = await new_arpc_conn_async("127.0.0.1", 9000)
client = Client(conn)
request = RequestV1(user_id=1)
response = await client.get_user_v1(request)
print(await response.json())
def main():
conn = new_arpc_conn("127.0.0.1", 9000)
client = Client(conn)
request = RequestV1(user_id=1)
response = client.get_user_v1(request)
print(response.json())
if __name__ == '__main__':
# main()
asyncio.run(main_async())
Metadata
Release files for arpc 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| arpc-0.1.0.tar.gz | 13.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| arpc-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.8 kB
Release files / arpc-0.1.0.tar.gz
| Download URL | arpc-0.1.0.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1b353b66c67c41bb52345680c6aeaa8da15e186483f2a654123528e19535710b
|
|
BLAKE2b-256 checksum How to use checksums |
e585a75e1e3d96150e78cde30bf1f208a3dbe54013a7ceec8474fa060fda0b0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.12.0a2+
|
Release files / arpc-0.1.0-py3-none-any.whl
| Download URL | arpc-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4269769a97f323a126d5f8940f237f21d21258b3d6efa3a04b03a1b847998ff5
|
|
BLAKE2b-256 checksum How to use checksums |
355b12274158ce5664a196fc3c5f070aa71a8581cb702ccc1989b849ca43aa00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.12.0a2+
|
Security for arpc 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.