我有一个PythonKafka消费应用程序,我在其中消费消息,然后同步调用外部Web服务。Web服务需要一分钟来处理消息并发送响应
有没有一种方法可以在不等待响应的情况下使用消息、将请求发送到Web服务并使用下一条消息
from kafka import KafkaConsumer
from json import loads
consumer = KafkaConsumer(
'spring_test',
bootstrap_servers=['localhost:9092'],
auto_offset_reset='earliest',
enable_auto_commit=True,
group_id='my-group',
value_deserializer=lambda x: loads(x.decode('utf-8')));
这就是我等待消息并发送外部Web请求的方式
def consume_msgs():
for message in consumer:
message = message.value;
send('{}'.format(message))
consume_msgs()
函数send()
需要一分钟才能得到响应。我想同时异步使用下一条消息,但我不知道从哪里开始
def send(pload) :
import requests
r = requests.post('someurl',data = pload)
print(r)
不确定这是否是您所需要的,但您能将对
send
的每个调用旋转成一个线程吗?下面是这样的。这样,for循环将继续,而不必等待send
返回。如果消耗数据的速度远远快于处理数据的速度,则可能必须以某种方式限制线程的数量相关问题 更多 >
编程相关推荐