Giter Club home page Giter Club logo

blazingmq-sdk-python's Introduction


BlazingMQ OS Linux OS MacOS License Python MessageQueue Documentation Code Style Supported Python versions

BlazingMQ Python SDK

This repository provides the official Python client library, as well as examples of how applications can interact with BlazingMQ. BlazingMQ is an open source message queue system, which focuses on efficiency, reliability, and a rich feature set. Please see the BlazingMQ repo and documentation for more details about BlazingMQ.

This Python client is fully supported by the BlazingMQ team, and we intend to provide feature and/or API parity with the BlazingMQ C++ client library.

Menu


Building

For instructions on how to build and test the package, check docs/BUILD.md.


Contributions

We welcome your contributions to help us improve and extend this project! Check CONTRIBUTING.md to get a good idea of how to contribute to the project.

We welcome issue reports here; be sure to choose the proper issue template for your issue, so that we can be sure you’re providing the necessary information.

Before sending a Pull Request, please make sure you read our Contribution Guidelines.


License

The BlazingMQ Python SDK is Apache 2.0 licensed, as found in the LICENSE file.


Code of Conduct

This project has adopted a Code of Conduct. If you have any concerns about the Code, or behavior which you have experienced in the project, please contact us at [email protected].


Security Vulnerability Reporting

If you believe you have identified a security vulnerability in this project, please send an email to the project team at [email protected], detailing the suspected issue and any methods you’ve found to reproduce it.

Please do NOT open an issue in the GitHub repository, as we’d prefer to keep vulnerability reports private until we’ve had an opportunity to review and address them.


blazingmq-sdk-python's People

Contributors

pniedzielski avatar quarter-note avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blazingmq-sdk-python's Issues

Incorrect syntax in example in User Guide

Bug Report

Current Behavior

The User Guide currently gives the following example code:

from blazingmq

def on_ack_callback(ack):
    if ack.status != blazingmq.AckStatus.SUCCESS:
        print("Post failed")
    print("Post success")

session.post(queue_uri, b"Some message here", on_ack=on_ack_callback)

The first line is syntactically invalid.

Expected behavior/code

The first line should be an import, import blazingmq.

Build and host documentation on this repository's GH Pages

We cannot automatically build and host this package's documentation on release, because the documentation is currently hosted on the main bloomberg/blazingmq repository. This means that every time we update the documentation for this package, we have to manually file a PR against that repository, have it reviewed, and have it merged into the main repo. The process would be much simpler if we instead build and deploy the documentation within our GitHub Actions workflow on each release, publishing to our own repo's GitHub pages.

Extend `Session.post` to allow batched message posting

libbmq provides bmqa::MessageEventBuilder to batch multiple messages into a single message event. However, pybmq_session does not expose any API for batching messages, creating a new bmqa::MessageEventBuilder for each posted message. For parity with libbmq, we should expose the ability to batch messages somehow.

Expose more `SessionOptions` in the Python SDK

Since the initial creation of the BlazingMQ Python SDK, the C++ libbmq has gained a few additional SessionOptions that users can configure. We should expose these through in the Python bindings, allowing users of the Python SDK to configure them.

Add typechecking to the CI

Our Python SDK makes use of type annotations throughout, but currently we do not check that these annotations are correct. Using mypy, we can check these type annotations statically. This is a good candidate for our CI checks, along with our other linters.

We have some minor typechecking errors in the codebase, especially relating to covariance, which should be fixed along with this.

Update GitHub Actions to use Node.js 20

When running the build-wheels.yml GitHub Action, we see warnings about using out-of-date steps, which use Node.js 16. We should instead use later versions of these GitHub Actions steps, which use the newer Node.js version 20, where possible.

Documentation showing spurious "page not found" errors.

Bug Report

I performed the following search in the Blazing MQ documentation: https://bloomberg.github.io/blazingmq/docs/apidocs/python_apidocs/search.html?q=thread&check_keywords=yes&area=default

The synopsis for each match is a file not found error message. But the link to the document works. Below is sample text from the search results.

Search Results

Search finished, found 3 page(s) matching the search query.

Examples
...Page not foundThe page you requested could not be found. Try using the navigation or search to find what you're looking for or go to this site's home page.Back to topCopyright © 2023 Bloomberg

blazingmq
...Page not foundThe page you requested could not be found. Try using the navigation or search to find what you're looking for or go to this site's home page.Back to topCopyright © 2023 Bloomberg

This should be reproducible with the link above.

Expected behavior/code

To only display the error if there's an actual error.

Add a Docker/docker-compose workflow

While users of the package can use pre-built wheels, anyone who wants to develop this package needs to have an intricate (and poorly documented) setup with each of the third-party dependencies this package requires.

One way around this would be to provide a Docker setup that builds the third-party dependencies and which sets up a local broker for testing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.