Skip to content

Commit d12c588

Browse files
committed
Added Consumer.assignment() API
1 parent 61ac655 commit d12c588

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

confluent_kafka/src/Consumer.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,28 @@ static PyObject *Consumer_unassign (Handle *self, PyObject *ignore) {
231231
Py_RETURN_NONE;
232232
}
233233

234+
static PyObject *Consumer_assignment (Handle *self, PyObject *args,
235+
PyObject *kwargs) {
236+
237+
PyObject *plist;
238+
rd_kafka_topic_partition_list_t *c_parts;
239+
rd_kafka_resp_err_t err;
240+
241+
err = rd_kafka_assignment(self->rk, &c_parts);
242+
if (err) {
243+
cfl_PyErr_Format(err,
244+
"Failed to get assignment: %s",
245+
rd_kafka_err2str(err));
246+
return NULL;
247+
}
248+
249+
250+
plist = c_parts_to_py(c_parts);
251+
rd_kafka_topic_partition_list_destroy(c_parts);
252+
253+
return plist;
254+
}
255+
234256

235257

236258
static PyObject *Consumer_commit (Handle *self, PyObject *args,
@@ -489,6 +511,17 @@ static PyMethodDef Consumer_methods[] = {
489511
" :raises: KafkaException\n"
490512
"\n"
491513
},
514+
{ "assignment", (PyCFunction)Consumer_assignment,
515+
METH_VARARGS|METH_KEYWORDS,
516+
".. py:function:: assignment()\n"
517+
"\n"
518+
" Returns the current partition assignment.\n"
519+
"\n"
520+
" :returns: List of assigned topic+partitions.\n"
521+
" :rtype: list(TopicPartition)\n"
522+
" :raises: KafkaException\n"
523+
"\n"
524+
},
492525
{ "commit", (PyCFunction)Consumer_commit, METH_VARARGS|METH_KEYWORDS,
493526
".. py:function:: commit([message=None], [offsets=None], [async=True])\n"
494527
"\n"

tests/test_Consumer.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ def dummy_assign_revoke (consumer, partitions):
4343
partitions = list(map(lambda p: TopicPartition("test", p), range(0,100,3)))
4444
kc.assign(partitions)
4545

46+
# Verify assignment
47+
assignment = kc.assignment()
48+
assert partitions == assignment
49+
4650
kc.unassign()
4751

4852
kc.commit(async=True)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy