All Projects → ethereum → Lahja

ethereum / Lahja

Licence: mit
Lahja is a generic multi process event bus implementation written in Python 3.6+ to enable lightweight inter-process communication, based on non-blocking asyncio

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Projects that are alternatives of or similar to Lahja

Github Stats
Better GitHub statistics images for your profile, no external server required
Stars: ✭ 338 (-9.63%)
Mutual labels:  async, asyncio
Example Scalping
A working example algorithm for scalping strategy trading multiple stocks concurrently using python asyncio
Stars: ✭ 267 (-28.61%)
Mutual labels:  async, asyncio
Odmantic
Async ODM (Object Document Mapper) for MongoDB based on python type hints
Stars: ✭ 240 (-35.83%)
Mutual labels:  async, asyncio
Arsenic
Async WebDriver implementation for asyncio and asyncio-compatible frameworks
Stars: ✭ 209 (-44.12%)
Mutual labels:  async, asyncio
Vertx Zero
Zero Framework:http://www.vertxup.cn
Stars: ✭ 320 (-14.44%)
Mutual labels:  async, eventbus
Aioreactive
Async/await reactive tools for Python 3.9+
Stars: ✭ 215 (-42.51%)
Mutual labels:  async, asyncio
Aiowebsocket
Async WebSocket Client. Advantage: Flexible Lighter and Faster
Stars: ✭ 263 (-29.68%)
Mutual labels:  async, asyncio
Vkbottle
Homogenic! Customizable asynchronous VK API framework
Stars: ✭ 191 (-48.93%)
Mutual labels:  async, asyncio
Async Techniques Python Course
Async Techniques and Examples in Python Course
Stars: ✭ 314 (-16.04%)
Mutual labels:  async, asyncio
Sqlalchemy aio
Asyncio strategy for SQLAlchemy.
Stars: ✭ 299 (-20.05%)
Mutual labels:  async, asyncio
Fastapi Gino Arq Uvicorn
High-performance Async REST API, in Python. FastAPI + GINO + Arq + Uvicorn (w/ Redis and PostgreSQL).
Stars: ✭ 204 (-45.45%)
Mutual labels:  async, asyncio
Requests Threads
🎭 Twisted Deferred Thread backend for Requests.
Stars: ✭ 366 (-2.14%)
Mutual labels:  async, asyncio
Gmqtt
Python MQTT v5.0 async client
Stars: ✭ 195 (-47.86%)
Mutual labels:  async, asyncio
Pyee
A port of Node.js's EventEmitter to python
Stars: ✭ 236 (-36.9%)
Mutual labels:  async, asyncio
Fooproxy
稳健高效的评分制-针对性- IP代理池 + API服务,可以自己插入采集器进行代理IP的爬取,针对你的爬虫的一个或多个目标网站分别生成有效的IP代理数据库,支持MongoDB 4.0 使用 Python3.7(Scored IP proxy pool ,customise proxy data crawler can be added anytime)
Stars: ✭ 195 (-47.86%)
Mutual labels:  async, asyncio
Uvicorn Gunicorn Docker
Docker image with Uvicorn managed by Gunicorn for high-performance web applications in Python 3.6 with performance auto-tuning. Optionally with Alpine Linux.
Stars: ✭ 244 (-34.76%)
Mutual labels:  async, asyncio
Tortoise Orm
Familiar asyncio ORM for python, built with relations in mind
Stars: ✭ 2,558 (+583.96%)
Mutual labels:  async, asyncio
Fastapi Crudrouter
A dynamic FastAPI router that automatically creates CRUD routes for your models
Stars: ✭ 159 (-57.49%)
Mutual labels:  async, asyncio
Aiologger
Asynchronous logging for python and asyncio
Stars: ✭ 284 (-24.06%)
Mutual labels:  async, asyncio
Picoweb
Really minimal web application framework for the Pycopy project (minimalist Python dialect) and its "uasyncio" async framework
Stars: ✭ 361 (-3.48%)
Mutual labels:  async, asyncio

Lahja

Documentation Status

Documentation hosted by ReadTheDocs

DISCLAIMER: This is alpha state software. Expect bugs.

Lahja is a generic event bus implementation written in Python 3.6+ that enables lightweight inter-process communication, based on non-blocking asynchronous IO

What is this for?

Lahja is tailored around one primary use case: enabling multi process Python applications to communicate via events between processes using non-blocking APIs based on asyncio or trio.

Key facts:

  • non-blocking APIs using asynchronous IO (asyncio / trio)
  • lightweight with zero dependencies
  • simple to use
  • easy multicasting of events (one event, many independent receivers)
  • easy event routing (e.g route event X only to certain receivers)
  • multiple consuming APIs to adapt to different use cases and styles

Developer Setup

If you would like to hack on lahja, please check out the Snake Charmers Tactical Manual for information on how we do:

  • Testing
  • Pull Requests
  • Code Style
  • Documentation

Development Environment Setup

You can set up your dev environment with:

git clone https://github.com/ethereum/lahja
cd lahja
virtualenv -p python3 venv
. venv/bin/activate
pip install -e .[dev]

Testing Setup

During development, you might like to have tests run on every file save.

Show flake8 errors on file change:

# Test flake8
when-changed -v -s -r -1 lahja/ tests/ -c "clear; flake8 lahja tests && echo 'flake8 success' || echo 'error'"

Run multi-process tests in one command, but without color:

# in the project root:
pytest --numprocesses=4 --looponfail --maxfail=1
# the same thing, succinctly:
pytest -n 4 -f --maxfail=1

Run in one thread, with color and desktop notifications:

cd venv
ptw --onfail "notify-send -t 5000 'Test failure ⚠⚠⚠⚠⚠' 'python 3 test on lahja failed'" ../tests ../lahja

Release setup

For Debian-like systems:

apt install pandoc

To release a new version:

make release bump=$$VERSION_PART_TO_BUMP$$

How to bumpversion

The version format for this repo is {major}.{minor}.{patch} for stable, and {major}.{minor}.{patch}-{stage}.{devnum} for unstable (stage can be alpha or beta).

To issue the next version in line, specify which part to bump, like make release bump=minor or make release bump=devnum.

If you are in a beta version, make release bump=stage will switch to a stable.

To issue an unstable version when the current version is stable, specify the new version explicitly, like make release bump="--new-version 4.0.0-alpha.1 devnum"

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].