Venomous ๐Ÿ โค๏ธ ๐Ÿงช

Venomous is a wrapper around erlport python Ports, designed to simplify concurrent use. It focuses on dynamic extensibility, like spawning, reusing and killing processes on demand. Venomous core functions capture and handle :EXIT calls ensuring that all python process die with it and do not continue their execution

Key Features

Simplified Python Process Management ๐Ÿโ”€เญจเงŽโ”€๐Ÿ

Venomous keeps track of every python OS process id, re-using free process which reduces amount of time spent on spawning new python instances. Furthermore, OS pid allows Venomous to kill processes on the spot whenever needed, without having to wait for Port to close.

Dynamic Extensibility โšก

Venomous makes it easy to spawn/clear up processes on demand, up to configured hard process limit.

Hot-Reload Python Modules ๐Ÿ”ฅ ๐Ÿ”„

Venomous has optional way of handling hot-reloading of loaded python modules. This requires installing external watchdog python module with
mix venomous.watchdog install

Automatic Process Cleanup โ™ป๏ธ

Venomous automatically clears up unused processes after their TTL ends. Minimum amount of alive processes can be configured to ensure X processes always stay alive.

Configurable ๐Ÿ”ง

Aside from main Venomous configuration, you can set Erlport options for every python process.

Named processes ๐Ÿท๏ธ

Venomous has secondary option of creating and keeping track of python process by setting its name. This process will be excluded from regular process management and has to be ran manually.

Elixir struct compatiblity ๐Ÿงฌ

Venomous provides an easy way to convert structs into classes and back with VenomousTrait class and mix venomous.structs ... task. You can check it out here

Send Python to sleep! ๐Ÿ›Œ๐Ÿ๐Ÿ’ค

You've read it all. Time for some 'fun'. Send processes to sleep and wait for their return!