Python Redis 任务队列库 RQ

yufei       4 年, 2 月 前       2572

RQ ( Redis Queue ) 是一个简单易用的 Python 任务队列库

RQ 是异步执行的,前台可以简单的将任务加入队列,然后单独启动一个或多个工作进程来处理这些任务

RQ 设计的初衷就是降低使用队列的门槛,可以轻松的集成到任何需要队列的应用程序中

RQ 中的 RRedis 的意思,也就是说 RQ 基于 Redis

安装

  1. Redis

    RQ 要求 Redis 的最低版本为 2.7.0。关于如何安装 Redis,请移步 Redis 基础教程:Redis 安装

  2. RQ

    使用以下命令安装 RQ 最新发布的稳定版本

    pip install rq
    

    如果想要尝试当前最新的开发版本,可以使用下面的命令

    pip install -e git+git@github.com:nvie/rq.git@master#egg=rq
    

额外安装

因为我们模拟的任务是抓取网页,使用 requests 库来完成这个任务

所以还需要下面的命令来安装 requests

pip install requests

简单使用

RQ 的使用可以简单分为两大步

将任务加入队列

  1. 启动 Redis 服务,我们假设 Redis 服务的地址为

    127.0.0.1:6379
    

    也就是使用默认的配置

  2. 假如我们的任务是抓取某个网页的内容,所以写了如下函数来获取网页内容

    task.py

    import requests
    
    def count_words_at_url(url):
        resp = requests.get(url)
        return resp.text
    
  3. 创建一个 RQ 实例,然后连接到 Redis 服务

    main.py

    from redis import Redis
    from rq import Queue
    
    import task
    
    q = Queue(connection=Redis())
    
  4. 比如要抓取本站首页 https://www.twle.cn,我们可以把这个任务加入到队列中

    main.py

    from redis import Redis
    from rq import Queue
    
    import task
    
    q = Queue(connection=Redis())
    
    result = q.enqueue(
                 task.count_words_at_url, 'https://www.twle.cn')
    

启动工作进程,处理实际任务

为了在后台处理队列中的任务,需要在当前项目下启动一个工作进程,启动命令很简单

[root@localhost ~]# rq worker
*** Listening for work on default
Got count_words_at_url('https://www.twle.cn') from default
Job result = 818
*** Listening for work on default

启动命令的位置无所谓,只要能够识别出 rq 命令即可

ok. 完成了

设计思想

RQ 的灵感来自于 CeleryResque 和这个 代码片段

RQ 应该是现有队列框架中的最为轻量的那个,入门门槛非常低

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.