Message Queue Selector使用
时间: 2024-05-28 07:09:08 浏览: 203
的原理是什么?
Message Queue Selector 可以通过消息选择器来过滤消息,以便只有满足特定条件的消息才会被消费者接收。具体来说,消息选择器是一组由键/值对组成的表达式,用于选择特定的消息。消息的键和值可以是任何对象类型,包括原生类型、字符串、对象等。当消息被发送到消息队列时,它们的键/值对会被提取出来,并与消息选择器中定义的键/值对进行匹配。只有当两者完全匹配时,消息才会被消费者接收。
相关问题
Message Queue Selector消费
者模式是什么?
Message Queue Selector 消费者模式是消息队列中的一种消费方式,该模式允许消费者定义自己的条件,只消费符合条件的消息。消费者可以根据消息的属性、标签、优先级等特征,使用一个查询语言来定义自己感兴趣的消息。这样就可以在消息队列中过滤掉不感兴趣的消息,只关注自己需要处理的消息。
class DouBanBook(object): def __init__(self, start_url, headers, queue): self.start_url = start_url self.headers = headers self.queue = queue def get_response(self, url): try: session = requests.Session() response = session.get(url, headers=self.headers) response.encoding = "utf-8" response.raise_for_status() return response except Exception as e: logging.warn(e.args, exc_info=False) logging.basicConfig(level=logging.WARN, filename="doubanbook.log", filemode="w", format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S') # 获取图书标签页信息和链接 def parse_start_url(self, response): selector = Selector(text=response.text) # td_list = selector.xpath("//div[@class='article']/div[@class='']/div/table/tbody/tr/td") td_list = selector.xpath("//table[@class='tagCol']/tbody/tr/td") for td in td_list: items = {} items['book_tag'] = td.xpath("./a/text()").get() # 图书标签 tag_href = td.xpath("./a/@href").get() # 标签链接 tag_url = "https://book.douban.com" + tag_href self.queue.put(tag_url)
这段代码定义了一个名为 `DouBanBook` 的类,它具有以下几个方法:
- `__init__(self, start_url, headers, queue)`: 这是类的构造函数,用于初始化类的实例。它接受三个参数:`start_url`(起始URL)、`headers`(HTTP请求头)和 `queue`(队列)。
- `get_response(self, url)`: 这是一个用于发送HTTP请求并获取响应的方法。它使用 `requests` 库发送一个 GET 请求,并设置了请求头。如果请求成功,则返回响应对象;如果发生异常,则记录异常并返回 None。
- `parse_start_url(self, response)`: 这个方法用于解析起始URL的响应,并提取图书标签页信息和链接。它使用 `parsel` 库解析 HTML 页面,然后使用 XPath 表达式提取目标数据。最后,将标签链接放入队列中。
该类的作用是从豆瓣图书网站上获取图书标签页的信息和链接,并将链接放入队列中供后续处理。您还有其他问题吗?
阅读全文