我在Django项目中使用kafka-python。在settings.py文件中初始化生产者。调用producer.send没有发送消息。
以前,我的生产者每次都在一个函数中初始化,而我正在使用producer.send()。get(timeout = 1)发送消息,并且运行良好。现在,我已将初始化更改为设置文件,并在调用.get()
时删除了send
,但它不起作用。
下面的旧工作代码:
在module_x.py
中:
from kafka import KafkaProducer
def my_func():
KAFKA_CONNECTION = KafkaProducer(bootstrap_servers=CONFIGS.KAFKA_URL)
producer = KAFKA_CONNECTION
producer.send(topic, key=key, value=json.dumps(data)).get(timeout=1)
以下更改了代码:
现在将初始化更改为设置文件,以避免每次调用my_func
时进行初始化。
在settings.py
中:
KAFKA_CONNECTION = KafkaProducer(bootstrap_servers=CONFIGS.KAFKA_URL)
在module_x.py
中:
from django.conf import settings
def my_func():
producer = settings.KAFKA_CONNECTION
producer.send(topic, key=key, value=json.dumps(data))
请注意,我什至尝试在.get(timeout=1)
上使用send
,但得到Kafka.TiemoutError
在producer.flush()
之后必须使用producer.send
还是在初始化时使用linger_ms
。 ?