Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pulsar-client] Add deliver_at and deliver_after to python client #6737

Merged
merged 6 commits into from
Apr 15, 2020

Conversation

yciabaud
Copy link
Contributor

@yciabaud yciabaud commented Apr 14, 2020

Motivation

Delayed message delivery is available in C++ client but not in Python client, as a Python client user, I would like to benefit from this feature as well.

Modifications

Update of the C++ messagebuilder Python binding to expose deliver_at and deliver_after to the Python API.
Update of the Python client to add these features to the producer sending method.

Verifying this change

  • Make sure that the change passes the CI checks.

This change added tests and can be verified as follows:

  • Extended python integration test to validate both deliver_at and deliver_after

Does this pull request potentially affect one of the following parts:

This PR affects the python public API with new parameters for python producer send and sendAsync methods deliver_at and deliver_after.

Documentation

This feature is documented in the python source code.

yciabaud and others added 6 commits April 14, 2020 14:11
Create a new function deliverAfter that takes the MessageBuilder and a
py::object.
Python object is reinterpreted as PyDateTime_Delta then convert to a
std::chrono::duration and then the builder property is setted.

After that we return the builder.

Signed-off-by: Guillaume Perrin <guillaume28.perrin@gmail.com>
Use PyObject* instead of boost::python::api::object since we want to
cast to another python object, PyDateTime_Delta.

Signed-off-by: Guillaume Perrin <guillaume28.perrin@gmail.com>
@yciabaud
Copy link
Contributor Author

/pulsarbot run-failure-checks

1 similar comment
@yciabaud
Copy link
Contributor Author

/pulsarbot run-failure-checks

@sijie sijie added this to the 2.6.0 milestone Apr 14, 2020
@sijie sijie added the type/feature The PR added a new feature or issue requested a new feature label Apr 14, 2020
@merlimat merlimat merged commit 11c4e66 into apache:master Apr 15, 2020
jerrypeng pushed a commit to jerrypeng/incubator-pulsar that referenced this pull request May 15, 2020
…ache#6737)

* Add deliver_at and deliver_after to python client

* Fix deliver_at test

* Fix deliver_after function binding for Python

Create a new function deliverAfter that takes the MessageBuilder and a
py::object.
Python object is reinterpreted as PyDateTime_Delta then convert to a
std::chrono::duration and then the builder property is setted.

After that we return the builder.

Signed-off-by: Guillaume Perrin <guillaume28.perrin@gmail.com>

* Fix cast of datetime in setDeliverAfter in python library

Use PyObject* instead of boost::python::api::object since we want to
cast to another python object, PyDateTime_Delta.

Signed-off-by: Guillaume Perrin <guillaume28.perrin@gmail.com>

* Fix test comment

* Remove unused import

Co-authored-by: Yoann Ciabaud <yoann@linxo.com>
Co-authored-by: Guillaume Perrin <guillaume28.perrin@gmail.com>
huangdx0726 pushed a commit to huangdx0726/pulsar that referenced this pull request Aug 24, 2020
…ache#6737)

* Add deliver_at and deliver_after to python client

* Fix deliver_at test

* Fix deliver_after function binding for Python

Create a new function deliverAfter that takes the MessageBuilder and a
py::object.
Python object is reinterpreted as PyDateTime_Delta then convert to a
std::chrono::duration and then the builder property is setted.

After that we return the builder.

Signed-off-by: Guillaume Perrin <guillaume28.perrin@gmail.com>

* Fix cast of datetime in setDeliverAfter in python library

Use PyObject* instead of boost::python::api::object since we want to
cast to another python object, PyDateTime_Delta.

Signed-off-by: Guillaume Perrin <guillaume28.perrin@gmail.com>

* Fix test comment

* Remove unused import

Co-authored-by: Yoann Ciabaud <yoann@linxo.com>
Co-authored-by: Guillaume Perrin <guillaume28.perrin@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/feature The PR added a new feature or issue requested a new feature
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants