CoolAMQP


NameCoolAMQP JSON
Version 1.3.0 PyPI version JSON
download
home_pagehttps://github.com/smok-serwis/coolamqp
SummaryVery fast pure-Python AMQP client
upload_time2024-04-04 10:16:50
maintainerNone
docs_urlNone
authorPiotr Maślanka
requires_python!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*
licenseMIT License
keywords amqp rabbitmq client network ha high availability
VCS
bugtrack_url
requirements six monotonic futures typing
Travis-CI
coveralls test coverage
            CoolAMQP
========
[![Test Coverage](https://codeclimate.com/github/smok-serwis/coolamqp/badges/coverage.svg)](https://codeclimate.com/github/smok-serwis/coolamqp/coverage)
[![Code Climate](https://codeclimate.com/github/smok-serwis/coolamqp/badges/gpa.svg)](https://codeclimate.com/github/smok-serwis/coolamqp)
[![Issue Count](https://codeclimate.com/github/smok-serwis/coolamqp/badges/issue_count.svg)](https://codeclimate.com/github/smok-serwis/coolamqp)
[![PyPI version](https://badge.fury.io/py/CoolAMQP.svg)](https://badge.fury.io/py/CoolAMQP)
[![PyPI](https://img.shields.io/pypi/pyversions/CoolAMQP.svg)]()
[![PyPI](https://img.shields.io/pypi/implementation/CoolAMQP.svg)]()
[![PyPI](https://img.shields.io/pypi/wheel/CoolAMQP.svg)]()
[![Documentation Status](https://readthedocs.org/projects/coolamqp/badge/?version=latest)](http://coolamqp.readthedocs.io/en/latest/?badge=develop)
[![license](https://img.shields.io/github/license/mashape/apistatus.svg)]()

Why CoolAMQP?
-------------

* AMQP 0.9.1 client that's native Python
* heavily optimized for speed
* geared towards interfacing with [RabbitMQ](https://www.rabbitmq.com/
  * supports custom RabbitMQ commands, such as
    * [Connection blocking](https://www.rabbitmq.com/docs/connection-blocked)
    * [Publisher confirms](https://www.rabbitmq.com/docs/confirms#publisher-confirms)
    * [Negative Acknowledgements](https://www.rabbitmq.com/docs/nack)
* traceable using [opentracing](https://opentracing.io/)

Documentation (WIP) is available at [Read the Docs](http://coolamqp.readthedocs.io/).

CoolAMQP uses [semantic versioning 2.0](https://semver.org/spec/v2.0.0.html).

tl;dr - [this](coolamqp/framing/definitions.py) is **machine-generated** compile-time.
[this](coolamqp/framing/compilation/content_property.py) **generates classes run-time**,
and there are memoryviews **_everywhere_**. 

This is borderline absurd.

CoolAMQP is not a direct AMQP client - it also handles reconnections, transactional sending,
and so on, mostly via Futures. This means it has a certain opinion on how to 
handle AMQP, but you can feel the spirit of AMQP underneath. *API is stable*.


The project is actively maintained and used in a commercial project. Tests can run
either on Vagrant (Vagrantfile attached) or Travis CI, and run against RabbitMQ.

CoolAMQP won't touch your messages. It's your bags o'bytes, and your properties.

Enjoy!

_Watch out for memoryviews!_ They're here to stay.

* [Short'n'sweet contributing guide](CONTRIBUTING.md)
* [Change log for past versions](https://github.com/smok-serwis/coolamqp/releases/)
* [Change log in this, unreleased version](CHANGELOG.md)


## Notes
Assertions are sprinkled throughout the code. You may wish to run with optimizations enabled
if you need every CPU cycle you can get.

Note that if you define the environment variable of `COOLAMQP_FORCE_SELECT_LISTENER`, 
CoolAMQP will use select-based networking instead of epoll based.

## Current limitations

* channel flow mechanism is not supported (#11)
* _confirm=True_ is not available if you're not RabbitMQ (#8)


## Copyright holder change

Since SMOK sp. z o.o. was incorporated, it inherited all SMOK-related
IP of previous operator of the service, DMS Serwis s.c., which
continues to operate within it's designated company agreement.
From there stems the copyright holder name change.

## What is here

### [coolamqp](coolamqp/)

The core module

### [stress_tests](stress_tests/)

A series of stress tests to catch any race conditions

### [tests](tests/)

A series of unit tests that need an AMQP server listening.

### [compile_definitions](compile_definitions/)

A tool to generate [definitions.py](coolamqp/framing/definitions.py) from the AMQP specification 
[XML](https://www.rabbitmq.com/resources/specs/amqp0-9-1.extended.xml).

In order to compile the definitions:

* Make sure that you have `yapf` installed
* then perform:
  ```python
  python -m compile_definitions
  ```

and you're all set. The only files modified is
[definitions.py](coolamqp/framing/definitions.py).

### [docs](docs/)

Sources for the documentation, available
[here](https://coolamqp.readthedocs.io/en/latest/).

## Running unit tests

Unit tests are powered by nose. They require an available AMQP broker.
If you host the broker other than localhost, set the env *AMQP_HOST* to correct value.
The default username used is guest, and password is guest.

You can also run unit tests from Docker, if you wish so. To launch the unit test suite:

```bash
docker-compose up unittest
```

To launch the stress test suite

```bash
docker-compose up stress_tests
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/smok-serwis/coolamqp",
    "name": "CoolAMQP",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*",
    "maintainer_email": null,
    "keywords": "amqp, rabbitmq, client, network, ha, high availability",
    "author": "Piotr Ma\u015blanka",
    "author_email": "pmaslanka@smok.co",
    "download_url": "https://files.pythonhosted.org/packages/aa/c5/d341f27e1da43b1780b5b4c3a94da08b5061608e1e882ab266ea3ade2f82/CoolAMQP-1.3.0.tar.gz",
    "platform": "posix",
    "description": "CoolAMQP\r\n========\r\n[![Test Coverage](https://codeclimate.com/github/smok-serwis/coolamqp/badges/coverage.svg)](https://codeclimate.com/github/smok-serwis/coolamqp/coverage)\r\n[![Code Climate](https://codeclimate.com/github/smok-serwis/coolamqp/badges/gpa.svg)](https://codeclimate.com/github/smok-serwis/coolamqp)\r\n[![Issue Count](https://codeclimate.com/github/smok-serwis/coolamqp/badges/issue_count.svg)](https://codeclimate.com/github/smok-serwis/coolamqp)\r\n[![PyPI version](https://badge.fury.io/py/CoolAMQP.svg)](https://badge.fury.io/py/CoolAMQP)\r\n[![PyPI](https://img.shields.io/pypi/pyversions/CoolAMQP.svg)]()\r\n[![PyPI](https://img.shields.io/pypi/implementation/CoolAMQP.svg)]()\r\n[![PyPI](https://img.shields.io/pypi/wheel/CoolAMQP.svg)]()\r\n[![Documentation Status](https://readthedocs.org/projects/coolamqp/badge/?version=latest)](http://coolamqp.readthedocs.io/en/latest/?badge=develop)\r\n[![license](https://img.shields.io/github/license/mashape/apistatus.svg)]()\r\n\r\nWhy CoolAMQP?\r\n-------------\r\n\r\n* AMQP 0.9.1 client that's native Python\r\n* heavily optimized for speed\r\n* geared towards interfacing with [RabbitMQ](https://www.rabbitmq.com/\r\n  * supports custom RabbitMQ commands, such as\r\n    * [Connection blocking](https://www.rabbitmq.com/docs/connection-blocked)\r\n    * [Publisher confirms](https://www.rabbitmq.com/docs/confirms#publisher-confirms)\r\n    * [Negative Acknowledgements](https://www.rabbitmq.com/docs/nack)\r\n* traceable using [opentracing](https://opentracing.io/)\r\n\r\nDocumentation (WIP) is available at [Read the Docs](http://coolamqp.readthedocs.io/).\r\n\r\nCoolAMQP uses [semantic versioning 2.0](https://semver.org/spec/v2.0.0.html).\r\n\r\ntl;dr - [this](coolamqp/framing/definitions.py) is **machine-generated** compile-time.\r\n[this](coolamqp/framing/compilation/content_property.py) **generates classes run-time**,\r\nand there are memoryviews **_everywhere_**. \r\n\r\nThis is borderline absurd.\r\n\r\nCoolAMQP is not a direct AMQP client - it also handles reconnections, transactional sending,\r\nand so on, mostly via Futures. This means it has a certain opinion on how to \r\nhandle AMQP, but you can feel the spirit of AMQP underneath. *API is stable*.\r\n\r\n\r\nThe project is actively maintained and used in a commercial project. Tests can run\r\neither on Vagrant (Vagrantfile attached) or Travis CI, and run against RabbitMQ.\r\n\r\nCoolAMQP won't touch your messages. It's your bags o'bytes, and your properties.\r\n\r\nEnjoy!\r\n\r\n_Watch out for memoryviews!_ They're here to stay.\r\n\r\n* [Short'n'sweet contributing guide](CONTRIBUTING.md)\r\n* [Change log for past versions](https://github.com/smok-serwis/coolamqp/releases/)\r\n* [Change log in this, unreleased version](CHANGELOG.md)\r\n\r\n\r\n## Notes\r\nAssertions are sprinkled throughout the code. You may wish to run with optimizations enabled\r\nif you need every CPU cycle you can get.\r\n\r\nNote that if you define the environment variable of `COOLAMQP_FORCE_SELECT_LISTENER`, \r\nCoolAMQP will use select-based networking instead of epoll based.\r\n\r\n## Current limitations\r\n\r\n* channel flow mechanism is not supported (#11)\r\n* _confirm=True_ is not available if you're not RabbitMQ (#8)\r\n\r\n\r\n## Copyright holder change\r\n\r\nSince SMOK sp. z o.o. was incorporated, it inherited all SMOK-related\r\nIP of previous operator of the service, DMS Serwis s.c., which\r\ncontinues to operate within it's designated company agreement.\r\nFrom there stems the copyright holder name change.\r\n\r\n## What is here\r\n\r\n### [coolamqp](coolamqp/)\r\n\r\nThe core module\r\n\r\n### [stress_tests](stress_tests/)\r\n\r\nA series of stress tests to catch any race conditions\r\n\r\n### [tests](tests/)\r\n\r\nA series of unit tests that need an AMQP server listening.\r\n\r\n### [compile_definitions](compile_definitions/)\r\n\r\nA tool to generate [definitions.py](coolamqp/framing/definitions.py) from the AMQP specification \r\n[XML](https://www.rabbitmq.com/resources/specs/amqp0-9-1.extended.xml).\r\n\r\nIn order to compile the definitions:\r\n\r\n* Make sure that you have `yapf` installed\r\n* then perform:\r\n  ```python\r\n  python -m compile_definitions\r\n  ```\r\n\r\nand you're all set. The only files modified is\r\n[definitions.py](coolamqp/framing/definitions.py).\r\n\r\n### [docs](docs/)\r\n\r\nSources for the documentation, available\r\n[here](https://coolamqp.readthedocs.io/en/latest/).\r\n\r\n## Running unit tests\r\n\r\nUnit tests are powered by nose. They require an available AMQP broker.\r\nIf you host the broker other than localhost, set the env *AMQP_HOST* to correct value.\r\nThe default username used is guest, and password is guest.\r\n\r\nYou can also run unit tests from Docker, if you wish so. To launch the unit test suite:\r\n\r\n```bash\r\ndocker-compose up unittest\r\n```\r\n\r\nTo launch the stress test suite\r\n\r\n```bash\r\ndocker-compose up stress_tests\r\n```\r\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Very fast pure-Python AMQP client",
    "version": "1.3.0",
    "project_urls": {
        "Homepage": "https://github.com/smok-serwis/coolamqp"
    },
    "split_keywords": [
        "amqp",
        " rabbitmq",
        " client",
        " network",
        " ha",
        " high availability"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ce2b488fc41e540338c8619839c3fa20aeaf9e788f0c8d407b8cee206a451233",
                "md5": "eb85668ec6a321f0c6a46de3208d66f2",
                "sha256": "85398129f65ae3d9be923ce907f2d3f1e27482a9c2342ec4e52d5f54a22b0c6e"
            },
            "downloads": -1,
            "filename": "CoolAMQP-1.3.0-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "eb85668ec6a321f0c6a46de3208d66f2",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*",
            "size": 95597,
            "upload_time": "2024-04-04T10:16:48",
            "upload_time_iso_8601": "2024-04-04T10:16:48.523098Z",
            "url": "https://files.pythonhosted.org/packages/ce/2b/488fc41e540338c8619839c3fa20aeaf9e788f0c8d407b8cee206a451233/CoolAMQP-1.3.0-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aac5d341f27e1da43b1780b5b4c3a94da08b5061608e1e882ab266ea3ade2f82",
                "md5": "a353212a91c26452589cd072e5ee602d",
                "sha256": "d5f360c54a8d41909e82d0431e29b2339a8a5e96a59a249fb77af8e0b041993d"
            },
            "downloads": -1,
            "filename": "CoolAMQP-1.3.0.tar.gz",
            "has_sig": false,
            "md5_digest": "a353212a91c26452589cd072e5ee602d",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "!=2.7.*,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*",
            "size": 79142,
            "upload_time": "2024-04-04T10:16:50",
            "upload_time_iso_8601": "2024-04-04T10:16:50.907417Z",
            "url": "https://files.pythonhosted.org/packages/aa/c5/d341f27e1da43b1780b5b4c3a94da08b5061608e1e882ab266ea3ade2f82/CoolAMQP-1.3.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-04 10:16:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "smok-serwis",
    "github_project": "coolamqp",
    "travis_ci": true,
    "coveralls": true,
    "github_actions": false,
    "requirements": [
        {
            "name": "six",
            "specs": []
        },
        {
            "name": "monotonic",
            "specs": []
        },
        {
            "name": "futures",
            "specs": []
        },
        {
            "name": "typing",
            "specs": []
        }
    ],
    "lcname": "coolamqp"
}
        
Elapsed time: 0.25479s