A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Mr.TR 于 2018-8-2 20:21 编辑

使用过celery的同学,是不是觉得很繁琐,用起来很麻烦?本篇文章来简单给大家介绍另外一款异步任务框架dramatiq

有多年celery使用经验的罗马尼亚工程师Bogdan Popa觉得celery就是个大烂坑,于是发明了dramatiq

dramatiq的驱动原则是如下:

高可靠性和高性能,简单易懂的核心,约定由于配置

下面是dramatiq,celery,RQ之间的主要区别:




下面来介绍一下安装方式:

如果安装有RabitMQ作为消息broker,安装方式: pip install -U 'dramatiq[rabbitmq, watch]'

如果安装有redis作为消息broker,安装方式: pip install -U 'dramatiq[redis, watch]'

RabitMQ是推荐的消息broker,也是默认的,可以在代码中设置redis为broker

也可以用这种方式安装 pip install -U 'dramatiq[all]'

要配置RabbitMQ主机,实例化RabbitmqBroker,并在程序执行期间尽可能早地将其设置为global broker:

[Python] 纯文本查看 复制代码
import dramatiq

from dramatiq.brokers.rabbitmq import RabbitmqBroker

rabbitmq_broker = RabbitmqBroker(host="rabbitmq")
dramatiq.set_broker(rabbitmq_broker)

要配置redis为broker:

[Python] 纯文本查看 复制代码
import dramatiq

from dramatiq.brokers.redis import RedisBroker

redis_broker = RedisBroker(host="redis", port=6379)
dramatiq.set_broker(redis_broker)

演示代码,host,port根据具体情况配置


下面来简单介绍下dramatiq的使用。

dramatiq/demo1.py

[Python] 纯文本查看 复制代码
import requests
import dramatiq

# print(dramatiq.get_broker())

@dramatiq.actor
def count_words(url):

    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"
    }
    try:
        response = requests.get(url, headers=headers)
        count = len(response.text.split(" "))
        print("*" * 50)
        print("There are {count} words at {url}.".format(count=count, url=url))
        print("haha")
        print("*" * 50)
    except requests.exceptions.MissingSchema:
        print("Message dropped due to invalid url: {}".format(url))

进入该文件所在目录,打开终端,进入python交互模式,输入 dramatiq demo1

再打开一个终端,进入python交互模式,

   输入 from demo1 import count_words

   输入 urls = ["https://news.ycombinator.com","https://xkcd.com","https://rabbitmq.com"]

   再输入 [count_words.send(url) for url in urls]

显示结果如图



有一个注意事项是:因为所有的消息都必须通过网络发送,所以发送给actor的任何参数都必须是能被json编码的。


如果在第二个终端输入 :  count_words.send("foo")



本篇文章先简单介绍到这里,后续再更新更多用法和特性


官方文档地址: https://dramatiq.io/v1.3.0/index.html













1 个回复

倒序浏览
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马