🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

systempy

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

systempy

Python application component initialization system

0.1.5
PyPI
Maintainers
1

systemPY

Logo

Python application component initialization system

python version downloads format Documentation Status GitHub issues Ruff Checked with mypy

Full documantation is available at Read the Docs

The problem

The regular application contains many atomic components. Asyncio makes their initializing a little bit complicated. It's OK, when you have a single entrypoint and initialize your application components via your framework. While you add new components to your application iteratively, you don't see any problem

When you create any new entrypoint, you have to think a lot, how to initialize application components again, which callbacks should be called and in which order. But it's a half of the problem! You also have to implement a graceful shutdown

The most painful part is one-time scripts. It's kind of The Banana Gorilla Problem: you just want a banana but you have to initialize a gorilla holding the banana and the entire jungle, and then gracefully shutdown it

Solution

This library allows you to implement application startup and shutdown in a declarative way. You have to implement a class for each your component, write the startup and shutdown code. Then you have to combine required components as mixins into the current application App class. Then create an instance and pass dependencies as keyword arguments. In case it's a self-hosted app you have to call the instance.run_sync() method

Basic principles

There are 6 the most significant stages of the application lifecycle:

  • on_init is called exactly once on the application startup

  • pre_startup is called before the event loop is started

  • on_startup is called exactly when the event loop has started

  • on_shutdown is called when the application is going to shutdown or reload but the event loop is still working

  • post_shutdown is called after event loop has stopped or drained. When application is going to reload, next it would be called pre_startup

  • on_exit is called exactly once when application is going to stop

You may to create Unit classes for each your application component where you may put your code. Then you may combine these Unit class mixins into the current App class, which composes your defined callbacks and runs in the right order. Depending on application type, these callbacks may be called by primary application or by yourself

Keywords

asyncio

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts