Eclipse zenoh Python API

Overview

zenoh banner

CI Documentation Status Gitter License License

Eclipse zenoh Python API

Eclipse zenoh is an extremely efficient and fault-tolerant Named Data Networking (NDN) protocol that is able to scale down to extremely constrainded devices and networks.


How to install it

The Eclipse zenoh-python library is available on Pypi.org.
Install the latest available version using pip:

pip install eclipse-zenoh

⚠️ WARNING ⚠️ zenoh-python is developped in Rust. On Pypi.org we provide binary wheels for the most common platforms (MacOS, Linux x86). But also a source distribution package for other platforms.
However, for pip to be able to build this source distribution, there some prerequisites:

  • pip version 19.3.1 minimum (for full support of PEP 517).
    (if necessary upgrade it with command: 'sudo pip install --upgrade pip' )
  • Have a Rust toolchain installed (instructions at https://rustup.rs/)

Supported Python versions and platforms

zenoh-python has been tested with Python 3.6, 3.7, 3.8 and 3.9.

It relies on the zenoh Rust API which require the full std library. See the list Rust supported platforms here: https://doc.rust-lang.org/nightly/rustc/platform-support.html .


How to build it

Requirements:

Steps:

  • Install developments requirements:
    pip install -r requirements-dev.txt
  • Build zenoh-python
    python setup.py develop

This will automatically build the zenoh Rust API, as well as the zenoh-python API and install it in your Python environement.


Running the Examples

The simplest way to run some of the example is to get a Docker image of the zenoh network router (see https://github.com/eclipse-zenoh/zenoh#how-to-test-it) and then to run the examples on your machine.

Then, run the zenoh-python examples following the instructions in examples/zenoh/README.md

Comments
  • Binary wheels for armv6

    Binary wheels for armv6

    Describe the feature

    zenoh-python relies on pypa/cibuildwheel to build the binary wheels that are released on pypi.org. However it doesn't support armv6 and armv7 architectures. The reason being there is no manylinux image available for armv6 nor armv7.

    EDIT 2022-06-08: Thanks to #66 an armv7 wheel is now built. The build now relies on messense/maturin-action which doesn't provide a solution for armv6.

    help wanted new feature 
    opened by JEnoch 10
  • Zenoh-python build failed with

    Zenoh-python build failed with "error[E0164]: expected tuple struct or tuple variant..."

    Hi all , I am new to Rust and Zenoh, When I was building the python client library, I got the errors below:

    error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
      --> /home/eddie/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:87:13
       |
    87 |         Err(nix::Error::Sys(Errno::EEXIST)) => return Err(ShmemError::MappingIdExists),
       |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
       |
       = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
    
    
    error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
      --> /home/eddie/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:88:13
       |
    88 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapCreateFailed(e as u32)),
       |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
       |
       = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
    
    
        Buildingerror[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
       --> /home/eddie/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:103:13
        |
    103 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::UnknownOsError(e as u32)),
        |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
        |
        = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
    
    
    error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
       --> /home/eddie/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:119:13
        |
    119 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapCreateFailed(e as u32)),
        |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
        |
        = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
    
    
    error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
       --> /home/eddie/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:135:13
        |
    135 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapOpenFailed(e as u32)),
        |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
        |
        = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
    
    
       error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
       --> /home/eddie/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:150:13
        |
    150 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapOpenFailed(e as u32)),
        |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
        |
        = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
    
    
    error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
       --> /home/eddie/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:166:13
        |
    166 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapOpenFailed(e as u32)),
        |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
        |
        = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
    
    
     error: aborting due to 7 previous errors
    
     
    error: could not compile `shared_memory`
    
    To learn more, run the command again with --verbose.
    warning: build failed, waiting for other jobs to finish...
    error: build failed
    💥 maturin failed
      Caused by: Failed to build a native library through cargo
      Caused by: Failed to build a native library through cargo
      Caused by: Cargo build finished with "exit status: 101": `cargo rustc --message-format json --manifest-path Cargo.toml --release --lib --`
    
    opened by eddie9712 8
  • Failed building wheel for eclipse-zenoh

    Failed building wheel for eclipse-zenoh

    Describe the bug

    Standard python example running on Raspberry PI Code:

    from zenoh import Zenoh
    import random
    import time
    
    random.seed()
    
    def read_temp():
        return random.randint(15, 30)
    
    def run_sensor_loop(w):
        # read and produce a temperature every second
        while True:
            t = read_temp()
            w.put('/myfactory/machine1/temp',t)
            print (t)
            time.sleep(15)
    
    if __name__ == "__main__":
        z = Zenoh({'peer': 'tcp/127.0.0.1:7447'})
        w = z.workspace('/')
        run_sensor_loop(w)
    

    Error Message:

    Traceback (most recent call last):
      File "zenoh_producer.py", line 27, in <module>
        run_sensor_loop(w)
      File "zenoh_producer.py", line 20, in run_sensor_loop
        w.put('/myfactory/machine1/temp',t)
      File "/usr/local/lib/python3.7/dist-packages/zenoh/workspace.py", line 50, in put
        self.rt.write_data(
    AttributeError: 'dict' object has no attribute 'write_data'
    

    Any hints what led to this error message?

    To reproduce

    1. Start Zenoh Broker
    2. Execute provided code
    3. Works on Ubuntu 22.04 but led to the shown error on ARM / Raspberry Pi OS.

    System info

    No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster Operating System: Raspbian GNU/Linux 10 (buster) Kernel: Linux 5.10.103-v7l+ Architecture: arm

    • Rust: rustc 1.63.0 (4b91a6ea7 2022-08-08)
    • Python 3.7.3
    • The zenoh router v0.5.0-beta.8-326-g70d7b22
    bug 
    opened by lottz 6
  • zenoh python subscriber work with asyncio

    zenoh python subscriber work with asyncio

    I would like to integrate the zenoh python with the asyncio library. The statement like following: sub = session.declare_subscriber('/rt/hello_world', sub_info, hello_callback) will call the hello_callback function. The argument for the hello_callback can only be the sample: Sample. Inside the hello_callback I can only deserialize the received message.

    Is it possible, that I inside the hello_callback call a coroutine? Because I want to send the message to another broker(NATS broker) for further usage. But I need to call a coroutine to send the message to that broker. I have tried once to decorate the hello_callback function as a async function. But it failed.

    Or another alternative, that the recevied message can be stored in the Subscriber instance. The message can then be accessed.

    new feature 
    opened by Yingliangzhe 6
  • zenoh.net.open connected with not existing host, throws no errors

    zenoh.net.open connected with not existing host, throws no errors

    I would like to wrap the zenoh net into another class. As initialization step, a session has been opened and need to be connected to a zenoh bridge on a remote machine. But as I gives the config a not existing host, the session has also been built without throwing an error. It is a feature, that is not created? Or was I using it wrong?

    As I search for zenoh-python, there are actually two kinds of zenoh-python, one is eclipse-zenoh/zenoh-python from here, and another one is atolab/zenoh-python, which is read in c and wrapped in python. This makes a little bit confused. Is this repo not being used?

    opened by Yingliangzhe 4
  • Custom messages

    Custom messages

    Hello there! I tried out the examples and managed to get them working. I was wondering if there is a recommended way to generate custom messages to be used with zenoh-python, for example by ingesting an .idl file?

    So far, I have managed to use pickle to serialize python containers to be sent, and deserialize them when received.

    opened by aaronchongth 4
  • Use maturin for building zenoh-python. Propose to resolve #64.

    Use maturin for building zenoh-python. Propose to resolve #64.

    This PR aims to resolve issue #64. It comes with

    • Replace the building tool rustsetup-tool by the latest maturin, which is the most recommended tool for PyO3 now.
    • Use maturin-action in Github action for better building management. This PR consistently set the Python to 3.7 in the release workflow. (since the latest maturin only supports >= abi-py37)
    • Support the cross-compilation for armv7. And all the cross-compilation and building on macOS are changed to docker instead of handcrafted settings over QEMU.

    Although this PR only covers the platforms specified in the previous workflow using QEMU, maturin has the possibility of cross-compiling packages for musllinux and other platforms like IBM PC.

    A good example of leveraging PyO3 is the workflow used in graphlib2, of which the built wheels are here.

    opened by YuanYuYuan 3
  • pip install not working on aarch64

    pip install not working on aarch64

    Trying to install on nvidia jetson:

    (venv) [email protected]:$ uname -i
    aarch64
    (venv) [email protected]:$ lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 18.04.6 LTS
    Release:        18.04
    Codename:       bionic
    (venv) [email protected]:$ python --version
    Python 3.6.9
    

    But fails with:

    $ pip install eclipse-zenoh
    Collecting eclipse-zenoh
      Downloading eclipse_zenoh-0.5.0_b8.tar.gz (74 kB)
         |████████████████████████████████| 74 kB 846 kB/s            
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
      Preparing wheel metadata (pyproject.toml) ... done
    Building wheels for collected packages: eclipse-zenoh
      Building wheel for eclipse-zenoh (pyproject.toml) ... error
      ERROR: Command errored out with exit status 1:
       command: /home/alf/proj/zenoh_play/venv/bin/python3 /home/alf/proj/zenoh_play/venv/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmp0rv6g8c0
           cwd: /tmp/pip-install-zineoisv/eclipse-zenoh_8413ab83c85a404597df68fa8f7150a8
      Complete output (255 lines):
      Running `maturin pep517 build-wheel -i /home/alf/proj/zenoh_play/venv/bin/python3`
      ⚠️  Warning: Please use maturin in pyproject.toml with a version constraint, e.g. `requires = ["maturin>=0.11,<0.12"]`. This will become an error.
    TLDR;
      error: could not compile `shared_memory`
      
      To learn more, run the command again with --verbose.
      warning: build failed, waiting for other jobs to finish...
      error: build failed
      💥 maturin failed
        Caused by: Failed to build a native library through cargo
        Caused by: Cargo build finished with "exit status: 101": `cargo rustc --message-format json --manifest-path Cargo.toml --release --lib --`
      🔗 Found pyo3 bindings with abi3 support for Python ≥ 3.6
      🐍 Not using a specific python interpreter (With abi3, an interpreter is only required on windows)
      error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
        --> /home/alf/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:87:13
         |
      87 |         Err(nix::Error::Sys(Errno::EEXIST)) => return Err(ShmemError::MappingIdExists),
         |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
         |
         = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
      
      error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
        --> /home/alf/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:88:13
         |
      88 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapCreateFailed(e as u32)),
         |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
         |
         = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
      
      
      error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
         --> /home/alf/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:103:13
          |
      103 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::UnknownOsError(e as u32)),
          |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
          |
          = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
      
      
      error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
         --> /home/alf/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:119:13
          |
      119 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapCreateFailed(e as u32)),
          |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
          |
          = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
      
      
      error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
         --> /home/alf/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:135:13
          |
      135 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapOpenFailed(e as u32)),
          |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
          |
          = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
      
      
      error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
         --> /home/alf/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:150:13
          |
      150 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapOpenFailed(e as u32)),
          |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
          |
          = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
      
      
      error[E0164]: expected tuple struct or tuple variant, found associated function `nix::Error::Sys`
         --> /home/alf/.cargo/registry/src/github.com-1ecc6299db9ec823/shared_memory-0.11.4/src/unix.rs:166:13
          |
      166 |         Err(nix::Error::Sys(e)) => return Err(ShmemError::MapOpenFailed(e as u32)),
          |             ^^^^^^^^^^^^^^^^^^ `fn` calls are not allowed in patterns
          |
          = help: for more information, visit https://doc.rust-lang.org/book/ch18-00-patterns.html
      
      
      error: aborting due to 7 previous errors
      
      
      For more information about this error, try `rustc --explain E0164`.
      
      Error: command ['maturin', 'pep517', 'build-wheel', '-i', '/home/alf/proj/zenoh_play/venv/bin/python3'] returned non-zero exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for eclipse-zenoh
    Failed to build eclipse-zenoh
    ERROR: Could not build wheels for eclipse-zenoh, which is required to install pyproject.toml-based projects
    
    opened by PinkJohnOfUs 3
  • In zenoh-python, example usage seems to be wrong

    In zenoh-python, example usage seems to be wrong

    Hello,

    In examples/zenoh/README.md , I am not able to use the examples as shown:

      python3 z_put
    

    As I get a "file not found" error. I am on Mac OS X 10.15.6 and python 3.8.2 , pip3 21.01 (but have seen this issue on Ubuntu 20.04 as well). Instead I have to go into that directory and do this:

    python3 z_put.py
    

    Is there something wrong with my python installation of this package, or is the example wrong?

    opened by vinnnyr 3
  • `unable to connect any locator of scouted peer` zenoh-plugin-dds

    `unable to connect any locator of scouted peer` zenoh-plugin-dds

    I am trying to use the Zenoh Python API with pycdr as in the demo to interface with cycloneDDS via zenoh-plugin-dds. The Python api was installed via pip: eclipse-zenoh-nightly I noticed that the python API examples don't seem to be compatible with the master or latest zenoh-plugin-dds docker image: Unable to connect any locator of scouted peer D6B17F40D8234F80AE42D205FCB23673 : [Locator { address: Tcp(SocketAddr(192.168.0.62:33681)), metadata: None }, Locator { address: Tcp(SocketAddr(172.17.0.1:33681)), metadata: None }] I have tried the master and apis-merge branches of the Python API but no luck. Should I build the Python API from source instead of using the PyPi binary?

    opened by akila-ganlath-tm 2
  • Problems with

    Problems with "hello world"

    Hey so I am trying to run

    python3 z_sub.py
    

    and I get the following error:

    Traceback (most recent call last):
      File "z_sub.py", line 20, in <module>
        from zenoh import Reliability, SubMode
    ImportError: cannot import name 'Reliability' from 'zenoh' (/home/andrzej/.local/lib/python3.8/site-packages/zenoh/__init__.py)
    
    

    What should I do? Do you think that maybe I have missed versions 0.6 and 0.5? Because even I can't change the zenoh.version for some reasons....

    opened by femust 2
  • Introducing Python context managers

    Introducing Python context managers

    Describe the feature

    I've tried out the zenoh-python api and I've noticed the manual opening and closing of sessions and subscriptions. I think it would be way more idiomatic Python to add context managers:

    with zenoh.open() as session:
        for key, value in session.info().items():
            print(f"{key}: {value}")
    

    This makes sure the session is automatically closed when exiting the "scope", even when an exception is raised. I have implemented the basic case for session here, but I have to admit that the async case was a bit beyond my current Rust abilities. Implementing these context managers exists of nothing more than implementing __enter__ and __exit__ as methods for the sync case and __aenter__ and __aexit__ for the async case. This would also allow you to make with zenoh.open() return a sync session and async with zenoh.open() return a async session, but that would require an intermediate object with the four methods implemented and would destroy the existing session = zenoh.open() style setup without some potentially ugly trickery.

    opened by thijsmie 1
  • Problems with sync examples

    Problems with sync examples

    opened by Jiarre 2
  • In case of Raw Value get_content() returns a list type instead of bytes

    In case of Raw Value get_content() returns a list type instead of bytes

    To reproduce:

    import zenoh
    v = zenoh.Value.Raw(0, b'\x48\x69\x21')
    print(type(v.get_content()))
    

    This displays <class 'list'>. But one would expect <class 'bytes'>

    bug 
    opened by JEnoch 0
  • Add API for shared memory transport

    Add API for shared memory transport

    zenoh in Rust implement a zero-copy shared memory transport. See examples of use:

    We need to make this transport also accessible from the zenoh Python API.

    new feature 
    opened by JEnoch 2
Releases(0.7.0-rc)
Cobalt Strike C2 Reverse proxy that fends off Blue Teams, AVs, EDRs, scanners through packet inspection and malleable profile correlation

Cobalt Strike C2 Reverse proxy that fends off Blue Teams, AVs, EDRs, scanners through packet inspection and malleable profile correlation

Mariusz B. 715 Dec 25, 2022
Automatic Proxy scraper and Proxy-rotating Nitro Generator.

Automatic Proxy scraper and Proxy-rotating Nitro Generator.

Tawren007 2 Nov 08, 2021
The can package provides controller area network support for Python developers

python-can The Controller Area Network is a bus standard designed to allow microcontrollers and devices to communicate with each other. It has priorit

Brian Thorne 904 Dec 29, 2022
Discord RPC Generator With Python

Discord-RPC-Generator Thank you for using this Discord Custom RP Generator. This is 100% safe and open source. Download Discord for your computer here

1 Nov 09, 2021
Tripwire monitors ports and icmp to send the admin a message if somebody is scanning a machine that shouldn't be touched

Tripwire monitors ports and icmp to send the admin a message if somebody is scanning a machine that shouldn't be touched

3 Apr 05, 2022
This is a small python code that I use with my NAS server connected to Plex

Spotifarr This is a small python code that I use with my NAS server connected to Plex I didn't appreciate how Lidarr works because it downloads a full

Automator 35 Oct 04, 2022
OpenNeoMC:an Open-source Tool for Particle Transport Optimization that Combining OpenMC with NEORL

OpenNeoMC:an Open-source Tool for Particle Transport Optimization that Combining OpenMC with NEORL OpenMC is a community-developed Monte Carlo neutron

7 Aug 17, 2022
Mass Reverse IP Dibuat Dengan Python 3 Dan Ada Fitur Filter.

Reverse IP Tools Description. Reverse IP is a method to map an IP address to a sub domain. This tool is made in the python 3 programming language. Fea

Wan Naz ID 6 Oct 24, 2022
Pritunl is a distributed enterprise vpn server built using the OpenVPN protocol.

Pritunl is a distributed enterprise vpn server built using the OpenVPN protocol.

Pritunl 3.8k Jan 03, 2023
Python code that get the name and ip address of a computer/laptop

IP Address This is a python code that provides the name and the internet protocol address of the computer. You need to install socket pip install sock

CODE 2 Feb 21, 2022
Mini SCADA. Poll modbus devices by TCP/IP network.

Plans Add saving and loading devices and channels with files or db or someone else. Multitasking system for poll all devices Automatic optimization po

Efi_fi 1 Oct 25, 2021
Timeouts for popular Python packages

Python Timeouts An unresponsive service can be worse than a down one. It can tie up your entire system if not handled properly. All network requests s

Andrew Kane 11 Nov 22, 2022
NanoChat - nano chat server and client

NanoChat This is a work in progress! NanoChat is an application for connecting with your friends using Python that uses ONLY default Python libraries.

Miss Bliss 1 Nov 13, 2021
Simple Python Script to Parse Apache Log, Get all Unique IPs and Urls visited by that IP

Parse_Apache_Log Simple Python Script to Parse Apache Log, Get all Unique IPs and Urls visited by that IP. It will create 3 different files. allIP.txt

Kathan Patel 2 Mar 29, 2022
ANalyse is a vehicle network analysis and attack tool.

CANalyse is a tool built to analyze the log files to find out unique datasets automatically and able to connect to simple user interfaces suc

0xh3nry 87 Dec 18, 2022
A tiny end-to-end latency testing tool implemented by UDP protocol in Python 📈 .

udp-latency A tiny end-to-end latency testing tool implemented by UDP protocol in Python 📈 . Features Compare with other existing latency testing too

Chuanyu Xue 5 Dec 02, 2022
Learn how modern web applications and microservice architecture work as you complete a creative assignment

Micro-service Создание микросервиса Цель работы Познакомиться с механизмом работы современных веб-приложений и микросервисной архитектуры в процессе в

Григорий Верховский 1 Dec 19, 2021
This tools just for education only - Layer-7 or HTTP FLOODER

Layer-7-Flooder This tools just for education only - Layer-7 or HTTP FLOODER Require Col1 Before You Run this tools How To Use Download This Source Ex

NumeX 7 Oct 30, 2022
nettrace is a powerful tool to trace network packet and diagnose network problem inside kernel.

nettrace nettrace is is a powerful tool to trace network packet and diagnose network problem inside kernel on TencentOS. It make use of eBPF and BCC.

84 Jan 01, 2023
Network Engineer's Unified Realtime Automation Library

NEURAL is the premiere CLI jockey replacement full stack web/app/database network automation application, providing a "no-code" web app for network engineers developed by a network engineer!

Brett M Spunt 3 Aug 15, 2022