Skip to main content

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.

  1. 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())
    
    
  2. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asyncio_tcp_messages-0.1.4.tar.gz (4.2 kB view details)

Uploaded Source

File details

Details for the file asyncio_tcp_messages-0.1.4.tar.gz.

File metadata

  • Download URL: asyncio_tcp_messages-0.1.4.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.0 importlib_metadata/4.8.1 pkginfo/1.8.2 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.6

File hashes

Hashes for asyncio_tcp_messages-0.1.4.tar.gz
Algorithm Hash digest
SHA256 f467212594d9ee6c3993f6e0f54696ebe3a42d25ba888e3e388915b549a1ea5f
MD5 1447d7e6af7ee6e3531539edb730a986
BLAKE2b-256 7259832bce850358551054bf02d73d80d9ea62486fc6e31fa135ff3700a735fa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page