本文整理汇总了Python中kafka.KafkaConsumer.seek方法的典型用法代码示例。如果您正苦于以下问题:Python KafkaConsumer.seek方法的具体用法?Python KafkaConsumer.seek怎么用?Python KafkaConsumer.seek使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kafka.KafkaConsumer
的用法示例。
在下文中一共展示了KafkaConsumer.seek方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: commit_offsets_in_kafka
# 需要导入模块: from kafka import KafkaConsumer [as 别名]
# 或者: from kafka.KafkaConsumer import seek [as 别名]
def commit_offsets_in_kafka(broker, group_name, group_dict):
cons = KafkaConsumer(bootstrap_servers=broker, group_id=group_name)
for topic_name, topic_dict in group_dict.iteritems():
for partition, offset in topic_dict.iteritems():
logging.info(
"Commiting {} {} to topic {} and partition number {}".format(
group_name, offset, topic_name, partition))
tp = TopicPartition(topic_name, int(partition))
cons.assign([tp])
cons.seek(tp, int(offset))
# commit it
cons.commit()
time.sleep(8)
cons.close()
time.sleep(1)
示例2: poll
# 需要导入模块: from kafka import KafkaConsumer [as 别名]
# 或者: from kafka.KafkaConsumer import seek [as 别名]
def poll(topic, offset=0, hostname=None, port_num=None, max_timeout=100):
hostname, port_num = insure_host_port(hostname, port_num)
server = hostname+':'+str(port_num)
topic_partition = TopicPartition(topic, partition)
consumer = KafkaConsumer(bootstrap_servers=server, group_id=None)
consumer.assign([topic_partition])
consumer.seek(topic_partition, offset)
msgs = consumer.poll(max_timeout).values()
consumer.close()
if len(msgs) > 0:
return msgs[0]
else:
return {}
示例3: __consume_topic_with_func
# 需要导入模块: from kafka import KafkaConsumer [as 别名]
# 或者: from kafka.KafkaConsumer import seek [as 别名]
def __consume_topic_with_func(self, topic, func):
consumer = KafkaConsumer(topic,
client_id='fooltrader',
group_id=self.trader_id,
value_deserializer=lambda m: json.loads(m.decode('utf8')),
bootstrap_servers=[KAFKA_HOST])
topic_partition = TopicPartition(topic=topic, partition=0)
start_timestamp = int(self.start_date.timestamp())
partition_map_offset_and_timestamp = consumer.offsets_for_times({topic_partition: start_timestamp})
if partition_map_offset_and_timestamp:
offset_and_timestamp = partition_map_offset_and_timestamp[topic_partition]
if offset_and_timestamp:
# partition assigned after poll, and we could seek
consumer.poll(5, 1)
consumer.seek(topic_partition, offset_and_timestamp.offset)
end_offset = consumer.end_offsets([topic_partition])[topic_partition]
consuming_time = self.current_time
for message in consumer:
message_time = pd.Timestamp(message.value['timestamp'])
# 设定了结束日期的话,时间到了或者kafka没数据了就结束
if self.end_date and (message_time > self.end_date or message.offset + 1 == end_offset):
consumer.close()
break
# 收到的时间戳与消费了的时间戳比较
time_delta = message_time.date() - consuming_time.date()
# 为了准确计算当天收盘账户,必须等各级别都把当天的行情撸完了
if time_delta.days >= 1:
self.barrier.wait()
self.account_service.save_account(self.current_time, trading_close=True)
getattr(self, func)(message.value)
consuming_time = message_time
# 时间以最小级别为准
if self.level_step.get(func) == self.step:
self.current_time = message_time
else:
consumer.poll(5, 1)
consumer.seek(topic_partition, consumer.end_offsets([topic_partition])[topic_partition] - 1)
message = consumer.poll(5000, 1)
kafka_start_date = datetime.fromtimestamp(message[topic_partition][0].timestamp).strftime(
TIME_FORMAT_DAY)
self.logger.warn("start:{} is after the last record:{}".format(self.start_date, kafka_start_date))
示例4: CheckKafka
# 需要导入模块: from kafka import KafkaConsumer [as 别名]
# 或者: from kafka.KafkaConsumer import seek [as 别名]
#.........这里部分代码省略.........
try:
if list_partitions:
if self.topic:
self.print_topic_partitions(self.topic)
else:
for topic in self.get_topics():
self.print_topic_partitions(topic)
sys.exit(ERRORS['UNKNOWN'])
except KafkaError:
raise CriticalError(self.exception_msg())
self.partition = self.get_opt('partition')
# technically optional, will hash to a random partition, but need to know which partition to get offset
# if self.partition is not None:
validate_int(self.partition, "partition", 0, 10000)
self.topic_partition = TopicPartition(self.topic, self.partition)
self.acks = self.get_opt('acks')
try:
self.acks = int(self.acks)
except ValueError:
pass
log_option('acks', self.acks)
self.validate_thresholds()
def subscribe(self):
self.consumer = KafkaConsumer(
#self.topic,
bootstrap_servers=self.brokers,
# client_id=self.client_id,
# group_id=self.group_id,
request_timeout_ms=self.timeout_ms
)
#key_serializer
#value_serializer
# this is only a guess as Kafka doesn't expose it's API version
#log.debug('kafka api version: %s', self.consumer.config['api_version'])
log.debug('partition assignments: {0}'.format(self.consumer.assignment()))
# log.debug('subscribing to topic \'{0}\' parition \'{1}\''.format(self.topic, self.partition))
# self.consumer.subscribe(TopicPartition(self.topic, self.partition))
# log.debug('partition assignments: {0}'.format(self.consumer.assignment()))
log.debug('assigning partition {0} to consumer'.format(self.partition))
# self.consumer.assign([self.partition])
self.consumer.assign([self.topic_partition])
log.debug('partition assignments: {0}'.format(self.consumer.assignment()))
log.debug('getting current offset')
# see also highwater, committed, seek_to_end
self.start_offset = self.consumer.position(self.topic_partition)
if self.start_offset is None:
# don't do this, I've seen scenario where None is returned and all messages are read again, better to fail
# log.warn('consumer position returned None, resetting to zero')
# self.start_offset = 0
raise UnknownError('Kafka Consumer reported current starting offset = {0}'.format(self.start_offset))
log.debug('recorded starting offset \'{0}\''.format(self.start_offset))
# self.consumer.pause()
def publish(self):
log.debug('creating producer')
self.producer = KafkaProducer(
bootstrap_servers=self.brokers,
client_id=self.client_id,
acks=self.acks,
batch_size=0,
max_block_ms=self.timeout_ms,
request_timeout_ms=self.timeout_ms
)
#key_serializer
#value_serializer
log.debug('producer.send()')
self.producer.send(
self.topic,
key=self.key,
partition=self.partition,
value=self.publish_message
)
log.debug('producer.flush()')
self.producer.flush()
def consume(self):
self.consumer.assign([self.topic_partition])
log.debug('consumer.seek({0})'.format(self.start_offset))
self.consumer.seek(self.topic_partition, self.start_offset)
# self.consumer.resume()
log.debug('consumer.poll(timeout_ms={0})'.format(self.timeout_ms))
obj = self.consumer.poll(timeout_ms=self.timeout_ms)
log.debug('msg object returned: %s', obj)
msg = None
try:
for consumer_record in obj[self.topic_partition]:
if consumer_record.key == self.key:
msg = consumer_record.value
break
except KeyError:
raise UnknownError('TopicPartition key was not found in response')
if msg is None:
raise UnknownError("failed to find matching consumer record with key '{0}'".format(self.key))
return msg
示例5: main
# 需要导入模块: from kafka import KafkaConsumer [as 别名]
# 或者: from kafka.KafkaConsumer import seek [as 别名]
def main():
parser = argparse.ArgumentParser()
parser.add_argument("topic")
parser.add_argument("-H", "--host", type=str, help="Kafka server and port.",
default="localhost:9092")
parser.add_argument("-r", "--replay", action="store_true",
help="Display all available log entries.",
default=False)
parser.add_argument("-m", "--match", type=str, help="Initial match pattern.",
default=None)
args = parser.parse_args()
pattern = args.match
if args.replay:
auto_offset_reset = 'earliest'
else:
auto_offset_reset = 'latest'
if args.topic[-5:] == '.json':
value_deserializer = json_value_deserializer
else:
value_deserializer = None
consumer = KafkaConsumer(args.topic,
group_id=None,
bootstrap_servers=args.host,
value_deserializer=value_deserializer,
auto_offset_reset=auto_offset_reset)
while True:
messages = consumer.poll(250)
for tp in six.itervalues(messages):
for message in tp:
if isinstance(message.value, dict):
if message.value['klog_level'] in colors:
c = colors[message.value['klog_level']]
else:
c = attr(0)
params = {'topic': message.topic,
'offset': message.offset,
'level': message.value['klog_level'].upper()}
params['time'] = str(datetime.datetime.fromtimestamp(float(message.value['klog_time'])))
params['msg'] = message.value['klog_message']
if pattern and re.search(pattern, params['msg']) is not None:
c += match_color
msg = msg_format.format(**params)
else:
c = attr(0)
msg = message.value
print(c+msg+attr(0))
po = select.poll()
po.register(sys.stdin, select.POLLIN)
if po.poll(0):
ch = sys.stdin.read(1)
if ch == 'm':
pattern = sys.stdin.readline().rstrip('\n').encode('utf-8')
pattern = pattern.rstrip('\n').encode('utf-8')
elif ch == 'r':
offset = sys.stdin.readline().rstrip('\n').encode('utf-8')
offset = int(offset)
for tp in consumer.assignment():
position = consumer.position(tp)
consumer.seek(tp, max(0, position-offset))
elif ch == 'R':
for tp in consumer.assignment():
consumer.seek_to_beginning(tp)
elif ch == 'p':
for tp in consumer.assignment():
consumer.pause(tp)
elif ch == 'P':
for tp in consumer.assignment():
consumer.resume(tp)
elif ch == 'q':
# FIXME: kafka currently (1.0.1) raises an exception on close
#consumer.close()
exit()
示例6: KafkaConsumer
# 需要导入模块: from kafka import KafkaConsumer [as 别名]
# 或者: from kafka.KafkaConsumer import seek [as 别名]
from kafka import KafkaConsumer
consumer = KafkaConsumer('my_favorite_topic')
for msg in consumer:
print (msg)
from kafka import KafkaClient, SimpleConsumer
from sys import argv
kafka = KafkaClient("10.0.1.100:6667")
consumer = SimpleConsumer(kafka, "my-group", argv[1])
consumer.max_buffer_size=0
consumer.seek(0,2)
for message in consumer:
print("OFFSET: "+str(message[0])+"\t MSG: "+str(message[1][3]))
示例7: KafkaConsumer
# 需要导入模块: from kafka import KafkaConsumer [as 别名]
# 或者: from kafka.KafkaConsumer import seek [as 别名]
from kafka import KafkaConsumer
from kafka.common import TopicPartition
import avro.schema
import avro.io
import io
consumer = KafkaConsumer(bootstrap_servers=['localhost:9092'])
consumer.assign([TopicPartition('test2', 0)])
consumer.seek(TopicPartition('test2', 0), 0)
print consumer.committed(TopicPartition('test2', 0))
schema = avro.schema.parse(open('./schema.avsc').read())
for msg in consumer:
bytes_reader = io.BytesIO(msg.value)
decoder = avro.io.BinaryDecoder(bytes_reader)
reader = avro.io.DatumReader(schema)
user = reader.read(decoder)
consumer.commit()
print(user)