Pykafka Versions Save

Apache Kafka client for Python; high-level & low-level consumer/producer, with great performance.

2.7.0.dev1

6 years ago

Minor Version Features

  • Added a broker_version kwarg to Broker.__init__ for the purpose of setting api_version in FetchResponse
  • Added a topic_name argument to Broker.join_group for use in protocol metadata, visible via the Administrative API
  • Added a function print_managed_consumer_groups to the CLI
  • Added a timestamp kwarg to Producer.produce to pass on messages when the broker supports newer message formats
  • Changed Producer.produce to return the produced Message instance
  • Added protocol_version and timestamp kwargs to Message
  • Added support for the fetch_error_backoff_ms kwarg on SimpleConsumer
  • Added an unblock_event kwarg to SimpleConsumer.consume used to notify the consumer that its parent BalancedConsumer is in the process of rebalancing
  • Added a general-purpose cleanup function to SimpleConsumer

Bug Fixes

  • Added an Event that notifies the internal SimpleConsumer of a BalancedConsumer that a rebalance is in progress, fixing a bug causing partitions to be unreleased
  • Fixed a bug causing busywaiting in the BalancedConsumer when there are no partitions available
  • Updated the protocol implementation to send non-empty GroupMembershipProtocol objects and become compatible with the Administrative API
  • Fixed a bytestring bug causing kafka_tools.reset_offsets not to work in python 3
  • Added a separate retry limit on connections to the offset manager
  • Improved logging on socket errors
  • Fixed a bug causing API version not to be passed on certain requests
  • Handled new MessageSet compression scheme in API v1
  • Fixed a bug in rdkafka.SimpleConsumer causing exceptions not to be raised from worker threads
  • Fixed a bug causing fetch_offsets not to raise exceptions under certain conditions when it should

Miscellaneous

  • Separated gevent tests from other builds in Travis
  • Made dependency on gevent optional
  • Added a convenient CLI entry point via __main__
  • Fixed exception naming convention to align with naming in the broker
  • Avoided building the rdkafka extension on platforms that don't support it
  • Fixed a bug in test harness causing some tests not to be inherited from parent classes

2.6.0

7 years ago

Minor Version Features

  • Added support to Broker and Cluster for Kafka 0.10's Administrative API
  • Changed the MemberAssignment protocol API to more closely match the schema defined by Kafka
  • Changed the rdkafka C module to return offset reports from produce requests

Bug Fixes

  • Changed components to use six.reraise to raise worker thread exceptions for easier debugging
  • Included message offset in messages returned from Producer delivery reports
  • Changed protocol implementation to parse ConsumerGroupProtocolMetadata from bytestrings returned from Kafka
  • Added some safety checks and error handling to Broker, Cluster, Connection
  • Removed update lock from produce()
  • Add cleanup logic to Producer to avoid certain deadlock situations
  • Change the name of the assignment strategy to match the standard range strategy
  • Fix crash in rdkafka related to broker.version.fallback
  • Fix nuisance error messages from rdkafka
  • Handled struct.error exceptions in Producer._send_request

Miscellaneous

  • Upgraded the version of PyPy used in automated tests
  • Upgraded the version of python 3 and Kafka used in automated tests

2.6.0.dev3

7 years ago

Minor Version Features

  • Changed the rdkafka C module to return offset reports from produce requests

Bug Fixes

  • Added some safety checks and error handling to Broker, Cluster, Connection
  • Removed update lock from produce()
  • Add cleanup logic to Producer to avoid certain deadlock situations
  • Change the name of the assignment strategy to match the standard range strategy
  • Fix crash in rdkafka related to broker.version.fallback
  • Fix nuisance error messages from rdkafka

Miscellaneous

  • Upgraded the version of python 3 and Kafka used in automated tests

2.6.0.dev2

7 years ago

Bug Fixes

  • Handled struct.error exceptions in Producer._send_request

Miscellaneous

  • Upgraded the version of PyPy used in automated tests

2.6.0.dev1

7 years ago

Minor Version Features

  • Added support to Broker and Cluster for Kafka 0.10's Administrative API
  • Changed the MemberAssignment protocol API to more closely match the schema defined by Kafka

Bug Fixes

  • Changed components to use six.reraise to raise worker thread exceptions for easier debugging
  • Included message offset in messages returned from Producer delivery reports
  • Handled struct.error exceptions in Producer._send_request
  • Changed protocol implementation to parse ConsumerGroupProtocolMetadata from bytestrings returned from Kafka

2.5.0

7 years ago

Minor version Features

  • Added the broker_version kwarg to several components. It's currently only used by the librdkafka features. The kwarg is used to facilitate the use of librdkafka via pykafka against multiple Kafka broker versions.
  • Changed offset commit requests to include useful information in the offset metadata field, including consumer ID and hostname
  • Added the GroupHashingPartitioner

Bug Fixes

  • Fixed the operation of consumer_timeout_ms, which had been broken for BalancedConsumer groups
  • Fixed a bug causing Producer.__del__ to crash during finalization
  • Made the consumer's fetch loop nonbusy when the internal queues are full to save CPU cycles when message volume is high
  • Fixed a bug causing Producer.flush() to wait for linger_ms during calls initiated by _update()
  • Fixed a race condition between Producer._update and OwnedBroker.flush causing infinite retry loops
  • Changed Producer.produce to block while the internal broker list is being updated. This avoids possible mismatches between old and new cluster metadata used by the Producer.
  • Fixed an issue causing consumer group names to be written to ZooKeeper with a literal b'' in python3. :warning:Since this change adjusts ZooKeeper storage formats, it should be applied with caution to production systems. Deploying this change without a careful rollout plan could cause consumers to lose track of their offsets.:warning:
  • Added logic to group coordinator discovery that retries the request once per broker
  • Handled socket errors in BrokerConnection
  • Fixed a bug causing synchronous production to hang in some situations

Miscellaneous

  • Upgraded the version of PyPy used in automated tests
  • Upgraded the version of librdkafka used in automated tests
  • Pinned the version of the testinstances library on which the tests depend

2.5.0.dev1

7 years ago

You can install this release via pip with pip install --pre pykafka==2.5.0.dev1. It will not automatically install because it's a pre-release.

Minor version Features

  • Added the broker_version kwarg to several components. It's currently only used by the librdkafka features. The kwarg is used to facilitate the use of librdkafka via pykafka against multiple Kafka broker versions.
  • Changed offset commit requests to include useful information in the offset metadata field, including consumer ID and hostname
  • Added the GroupHashingPartitioner

Bug Fixes

  • Fixed the operation of consumer_timeout_ms, which had been broken for BalancedConsumer groups
  • Fixed a bug causing Producer.__del__ to crash during finalization
  • Made the consumer's fetch loop nonbusy when the internal queues are full to save CPU cycles when message volume is high
  • Fixed a bug causing Producer.flush() to wait for linger_ms during calls initiated by _update()
  • Fixed a race condition between Producer._update and OwnedBroker.flush causing infinite retry loops
  • Changed Producer.produce to block while the internal broker list is being updated. This avoids possible mismatches between old and new cluster metadata used by the Producer.

Miscellaneous

  • Upgraded the version of PyPy used in automated tests
  • Upgraded the version of librdkafka used in automated tests
  • Pinned the version of the testinstances library on which the tests depend

2.4.1.dev1

7 years ago

You can install this release via pip with pip install --pre pykafka==2.4.1.dev1. It will not automatically install because it's a pre-release.

Bug Fixes

  • Fixed an issue causing consumer group names to be written to ZooKeeper with a literal b''. :warning:Since this change adjusts ZooKeeper storage formats, it should be applied with caution to production systems. Deploying this change without a careful rollout plan could cause consumers to lose track of their offsets.:warning:
  • Added logic to group coordinator discovery that retries the request once per broker
  • Handled socket errors in BrokerConnection
  • Fixed a bug causing synchronous production to hang in some situations

2.4.0

7 years ago

Minor Version Features

  • Added support for connecting to Kafka brokers using a secure TLS connection
  • Removed the fallback in Cluster that treated hosts as a ZooKeeper connection string
  • Removed the block_on_queue_full kwarg from the rdkafka producer
  • Added the max_request_size kwarg to the rdkafka producer

Bug Fixes

  • Performed permissive parameter validation in consumers and producer to avoid cryptic errors on threads
  • Allowed more consumers than partitions in a balanced consumer group
  • Fixed python 3 compatibility in kafka_tools.py
  • Fixed a bug causing nuisance errors on interpreter shutdown
  • Removed some uses of deprecated functions in the rdkafka C extension
  • Fixed a bug causing crashes when kafka returns an invalid partition ID in partition requests

Miscellaneous

  • Added utilities for testing TLS support to the test suite
  • Made the gevent version requirement slightly more inclusive

2.3.1

8 years ago

Bug Fixes

  • Fixed a NoneType crash in Producer when rejecting larger messages
  • Stopped Producer integration tests from sharing a Consumer instance to make test runs more consistent

Miscellaneous

  • Added warning about using Snappy compression under PyPy
  • Clarified language around "most recent offset available"