背景:一个小应用,用celery下发任务,任务内容为kafka生产一些数据。

问题:使用confluent_kafka模块时,单独启用kafka可以正常生产消息,但是套上celery后,kafka就无法将新消息生产到topic队列中了。

解决:换了个pykafka模块,结果问题就没有了。

我很疑惑啊,是我调用confluent_kafka的方法不对吗,怎么套上celery就不行了呢?

可以用的pykafka代码:

tasks.py

from celery import Celery
from pykafka import KafkaClient
import json app = Celery('tasks', backend='amqp', broker='amqp://xxx:xxxxxx@localhost/xxxhost') @app.task
def produce():
client = KafkaClient(hosts="localhost:9092")
print client.topics
topic = client.topics['test_result']
with topic.get_sync_producer() as producer:
for i in range(3):
data = {"info": {"ip": "1.2.3.4", "port": i}, "type": "test", "task_id": "test_celery_kafka"}
print('Producing message: %s' % data)
producer.produce(json.dumps(data))
print "finish produce"
producer.stop()
print "stop"

run_worker.py

from tasks import produce

for i in range(1000):
result = produce.delay()
print result.status

无法正常生产数据的confluent_kafka代码:

tasks.py

from celery import Celery
from kafka_producer import p
import json app = Celery('tasks', backend='amqp', broker='amqp://xxx:xxxxxx@localhost/xxxhost') @app.task
def produce():
for i in range(3000):
data = {"info": {"ip": "1.2.3.4"}, "type": "test", "task_id": "test_celery_kafka"}
print('Producing message: %s' % data)
p.produce('test_result3', json.dumps(data))
print "finish produce"
p.flush()
print "finish flush"

run_worker.py

from tasks import produce
result = produce.delay()
print result.status
print result.ready()
print result.get()
print result.status

【kafka】celery与kafka的联用问题的更多相关文章

  1. kafka学习(三)-kafka集群搭建

    kafka集群搭建 下面简单的介绍一下kafka的集群搭建,单个kafka的安装更简单,下面以集群搭建为例子. 我们设置并部署有三个节点的 kafka 集合体,必须在每个节点上遵循下面的步骤来启动 k ...

  2. Kafka系列之-Kafka入门

    接下来的这些博客,主要内容来自<Learning Apache Kafka Second Edition>这本书,书不厚,200多页.接下来摘录出本书中的重要知识点,偶尔参考一些网络资料, ...

  3. Kafka Ecosystem(Kafka生态)

    http://kafka.apache.org/documentation/#ecosystem https://cwiki.apache.org/confluence/display/KAFKA/E ...

  4. Kafka监控系统Kafka Eagle:支持kerberos认证

    在线文档:https://ke.smartloli.org/ 作者博客:https://www.cnblogs.com/smartloli/p/9371904.html 源码地址:https://gi ...

  5. Kafka监控系统Kafka Eagle剖析

    1.概述 最近有同学留言反馈了使用Kafka监控工具Kafka Eagle的一些问题,这里笔者特意整理了这些问题.并且希望通过这篇博客来解答这些同学的在使用Kafka Eagle的时候遇到的一些困惑, ...

  6. Kafka集群安装部署、Kafka生产者、Kafka消费者

    Storm上游数据源之Kakfa 目标: 理解Storm消费的数据来源.理解JMS规范.理解Kafka核心组件.掌握Kakfa生产者API.掌握Kafka消费者API.对流式计算的生态环境有深入的了解 ...

  7. Structured Streaming + Kafka Integration Guide 结构化流+Kafka集成指南 (Kafka broker version 0.10.0 or higher)

    用于Kafka 0.10的结构化流集成从Kafka读取数据并将数据写入到Kafka. 1. Linking 对于使用SBT/Maven项目定义的Scala/Java应用程序,用以下工件artifact ...

  8. Apache Kafka监控之Kafka Web Console

    Kafka Web Console:是一款开源的系统,源码的地址在https://github.com/claudemamo/kafka-web-console中.Kafka Web Console也 ...

  9. 基于Confluent.Kafka实现的Kafka客户端操作类使用详解

    一.引言 有段时间没有写东西了,当然不是没得写,还有MongoDB的系列没有写完呢,那个系列还要继续.今天正好是周末,有点时间,来写新东西吧.最近公司用了Kafka做为消息的中间件,最开始写的那个版本 ...

  10. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装

    一.nifi基本配置 1. 修改各节点主机名,修改/etc/hosts文件内容. 192.168.0.120 master 192.168.0.121 slave1 192.168.0.122 sla ...

随机推荐

  1. python基础学习11天,作业题

    1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数. apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chicken 10 3 通过 ...

  2. drozer的使用介绍

    0x00. 配置adb环境变量 下载地址:http://pan.baidu.com/s/1o8itZtC 密码:9o6j 如何配置android的adb环境变量 http://jingyan.baid ...

  3. 将mnist数据集保存成numpy格式

    import numpy as np from urllib import request import gzip import pickle filename = [ ["training ...

  4. python 导入numpy 导致多进程绑定同一个CPU问题解决方法

    python 如果有导入numpy模块的import语句,会导致默认将多进程程序的每个进程都绑定到同一个CPU core上, 失去了多进程在多核CPU上的性能优越性,这和CPU affinity(CP ...

  5. web层直接调用 dubbo的服务,合适吗?

    目前很多互联网app项目,都是采用这样的一个基本项目结构:即由后端提供Restful的api接口,然后供前端例如IOS.Android或者H5端去调用,如图: 在这种结构下,后台的代码分层常规一般会有 ...

  6. 3.2. 使​​​​​​​用​​​​​​​ CPUFREQ 调​​​​​​​节​​​​​​​器​​​​​​​【转】

    转自:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/6/html/power_management_gu ...

  7. 消息队列:JMS之基本概念介绍

    摘要:The Java Message Service (JMS) API is a messaging standard that allows application components bas ...

  8. CSS集锦

    div内容自动换行:word-wrap:break-word;word-break:break-all;

  9. telnet mysql时出现:is not allowed to connect to this MySQL serverConnection closed by foreign host问题的解决

    有时候telnet一个mysql服务器的时候会出现: Host '192.168.0.1' is not allowed to connect to this MySQL serverConnecti ...

  10. JS ----实现复制粘贴功能 (剪切板应用clipboardData)

    注意:ie7,与ie8 对网页有个复制的权限,需在“安全”中的“自定义级别”的脚本中设置 clipboardData 对象 提供了对剪贴板的访问. 三个方法 :1.clearData(sDataFor ...