kafka-python v1.4.7 Release Notes
Release Date: 2019-09-30 // over 4 years ago-
1.4.7 (Sep 30, 2019)
๐ This release is focused on KafkaConsumer performance, Admin Client
๐ improvements, and Client concurrency. The KafkaConsumer iterator implementation
๐ has been greatly simplified so that it just wraps consumer.poll(). The prior
๐ implementation will remain available for a few more releases using the optional
KafkaConsumer config:legacy_iterator=True
. This is expected to improve
consumer throughput substantially and help reduce heartbeat failures / group
rebalancing.Major thanks to @carsonip @Baisang @iv-m @davidheitman @cardy31 @ulrikjohansson @iAnomaly @Wayde2014 @ossdev07 @commanderdishwasher @justecorruptio @melor @rustyrothwurt @sachiin @jacky15 and @rikonen for submitting PRs; thanks as well to everyone that
submitted bug reports and issues, and to @jeffwidman and @tvoinarovskyi for code
โ reviews, comments, testing, debugging, and helping to maintain kafka-python!Client
- Send socket data via non-blocking IO with send buffer (@dpkp / PR #1912)
- Rely on socket selector to detect completed connection attempts (@dpkp / PR #1909)
- ๐ Improve connection lock handling; always use context manager (@melor @dpkp / PR #1895)
- โฌ๏ธ Reduce client poll timeout when there are no in-flight requests (@dpkp / PR #1823)
KafkaConsumer
- Do not use wakeup when sending fetch requests from consumer (@dpkp / PR #1911)
- ๐ Wrap
consumer.poll()
for KafkaConsumer iteration (@dpkp / PR #1902) - ๐ Allow the coordinator to auto-commit on old brokers (@justecorruptio / PR #1832)
- โฌ๏ธ Reduce internal client poll timeout for (legacy) consumer iterator interface (@dpkp / PR #1824)
- ๐ Use dedicated connection for group coordinator (@dpkp / PR #1822)
- ๐ Change coordinator lock acquisition order (@dpkp / PR #1821)
- Make
partitions_for_topic
a read-through cache (@Baisang / PR #1781,#1809) - ๐ Fix consumer hanging indefinitely on topic deletion while rebalancing (@commanderdishwasher / PR #1782)
๐ Miscellaneous Bugfixes / Improvements
- ๐ Fix crc32c avilability on non-intel architectures (@ossdev07 / PR #1904)
- 0๏ธโฃ Load system default SSL CAs if
ssl_cafile
is not provided (@iAnomaly / PR #1883) - Catch py3 TimeoutError in BrokerConnection send/recv (@dpkp / PR #1820)
- โ Added a function to determine if bootstrap is successfully connected (@Wayde2014 / PR #1876)
Admin Client
- โ Add ACL api support to KafkaAdminClient (@ulrikjohansson / PR #1833)
- Add
sasl_kerberos_domain_name
config to KafkaAdminClient (@jeffwidman / PR #1852) - ๐ Update
security_protocol
config documentation for KafkaAdminClient (@cardy31 / PR #1849) - Break FindCoordinator into request/response methods in KafkaAdminClient (@jeffwidman / PR #1871)
- Break consumer operations into request / response methods in KafkaAdminClient (@jeffwidman / PR #1845)
- Parallelize calls to
_send_request_to_node()
in KafkaAdminClient (@davidheitman / PR #1807)
๐ Test Infrastructure / Documentation / Maintenance
- โ Add Kafka 2.3.0 to test matrix and compatibility docs (dpkp / PR #1915)
- โ
Convert remaining
KafkaConsumer
tests topytest
(@jeffwidman / PR #1886) - โฌ๏ธ Bump integration tests to 0.10.2.2 and 0.11.0.3 (@jeffwidman / #1890)
- โ
Cleanup handling of
KAFKA_VERSION
env var in tests (@jeffwidman / PR #1887) - โ Minor test cleanup (@jeffwidman / PR #1885)
- โ
Use
socket.SOCK_STREAM
in test assertions (@iv-m / PR #1879) - Sanity test for
consumer.topics()
andconsumer.partitions_for_topic()
(@Baisang / PR #1829) - ๐ Cleanup seconds conversion in client poll timeout calculation (@jeffwidman / PR #1825)
- โ Remove unused imports (@jeffwidman / PR #1808)
- Cleanup python nits in RangePartitionAssignor (@jeffwidman / PR #1805)
- โก๏ธ Update links to kafka consumer config docs (@jeffwidman)
- ๐ Fix minor documentation typos (@carsonip / PR #1865)
- โ Remove unused/weird comment line (@jeffwidman / PR #1813)
- ๐ Update docs for
api_version_auto_timeout_ms
(@jeffwidman / PR #1812)