A library for developing applications with a message-based protocol on top of TCP based on asyncio.
Project description
A library for developing applications with a message-based protocol on top of TCP based on asyncio.Opens the possibility of adding controllers that are responsible for specific commands, the ability to define and validate command arguments.
-
First, you need to create an instance of the App class
import asyncio from asyncio_tcp_messages import App app = App() #Your code if __name__ == '__main__': asyncio.run(app.run())
-
Here are some usage examples. You can use pydantic BaseModel subclasses for data validation.
import asyncio from asyncio_tcp_messages import App import pydantic app = App() class Person(pydantic.BaseModel): name: str = pydantic.Field(..., min_length=2, max_length=250, description="The person's name must be at least 2 " "and at most 250 characters") age: int = pydantic.Field(..., ge=0, lt=200, description="The person's age must be greater or equal to zero " "and lesser than 250") funs: list[str] = pydantic.Field(default_factory=list, title="The activities person likes to do") salary: int = pydantic.Field(None, gt=0, description="The person's salary must be greater than zero") def __str__(self) -> str: return f'{self.name} is {self.age} years old with {self.salary}$ salary and favourite activities: {self.funs}' @app.command(name='sum') async def custom_sum(user_id: int, arg1: int, arg2: int) -> str: return str(arg1 + arg2) @app.command() async def add_person(user_id: int, person: Person): people.append(person) @app.command() async def get_person(user_id: int, name: str) -> str: return '\n'.join(str(person) for person in people if person.name == name) if __name__ == '__main__': asyncio.run(app.run())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for asyncio_tcp_messages-0.1.3.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | cb4cc5cbaa5156d4a0b6eed1546c3bc1d717302d97828eac740c523a63cb4a82 |
|
MD5 | 3ab2875b9d81d6b56565d17c8fe06008 |
|
BLAKE2b-256 | e1752f00be68d0cccd16e5355c9439bbc7f6a0709671ef26a5b230db7dabe3c9 |