RabbitMQ,pymongo,bs4的一些记录

1. RabbitMQ

至今还未用过RabbitMQ,以下内容只是脑补。

  如果想利用Message Queue的方式实现分布式的系统,不妨考虑RabbitMQ。最近只是看了官网上的简单教程。目前的理解是,生产者(Producer)就是发信人,消费者(consumer)就是收信人。而Queue就是信箱,Exchange就是邮局。
  一个Producer在发信时,会署上处理这封信的邮局名(Exchange)和接收信的人的条件(routing_key)

channel.basic_publish(exchange='topic_logs', routing_key=routing_key, body=message)

  一个Exchange在收到Producer发送的Message时,会将Message发送到相应的邮箱(Queue)里。
    首先,为了让邮局知道邮箱的存在,需要连接 exchange 和 queue

 channel.queue_bind(exchange='topic_logs', queue=queue_name, routing_key=binding_key)

    其次,在声明Exchange时,需要说明exchange type:
     - fanout : exchange知道的所有queue,简单的群发
     - direct : routing_key 恰好相同的queue
     - topic : routing_key 匹配的queue。这里的routing_key都是a.b.c的形式,有一些通配符。* 和 # 两种,一个和多个。
     - headers : 我不清楚。。。

 channel.exchange_declare(exchange='topic_logs', type='topic')

    至此,邮局可以根据邮局类型和routing_key去将Message发送给相应的邮箱。
  一个Consumer就接收Message,然后处理。教程中是注册了一个回调函数去处理信息。貌似也可以自己循环从队列中取(channel.basic_get)

channel.basic_consume(callback, queue=queue_name, no_ack=True)
channel.start_consuming()

2. beautiful soup

  这是python里解析html时十分好用的库。
  我想说的是,还是bs4.element.Tag.select()好用,选择器就是简单直接。这个函数的返回值是一个list,list里的元素的type依然是Tag类型。

3.pymongo

  db.find()的返回值是一个pymongo.cursor.CursorType类型。有两个属性可能会常用到:cursor.count()和cursor[index](=__getitem__(index))
  __getitem__(index)的返回值是Document。类型是python里相应的类型。
  for i in cursor: 也是可以的,其中i是document
  bson.json_util.dumps(),bson.json_util.loads()这两个函数也许有用,但其实用不上(- -||)

4.Unix Timestamp

  网上有人说,因为毫秒和秒的区别,所以有时候datetimestamp转datetime时要除1000。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值