python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Django celery替代品Dramatiq

Django celery的替代品Dramatiq使用特性详解

作者:alue

这篇文章主要为大家介绍了Django celery的替代品Dramatiq使用特性详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Django 框架消息队列 celery

Django 框架需要一个消息队列来支持分布式任务处理,大部分人会选择 celery。但 celery 不支持 windows。

之前,用过funboost,功能强大,但是其代码充斥着拼写错误,让人难以忍受。

今天看了 Dramatiq, 发现完全满足项目需求。于是上手尝试了一下。

celery 特性

$ kill -s HUP 13047

当消息超过最大重试次数或者在队列里时长超过寿命,则会进入死信区,在这里最多保留 7 天,然后被丢弃。

Actors

你的 actor 会跟其它 actors 并发执行,注意操作相同资源时,可能出现的竞争关系。

给 actor 传递的消息应该是能被 json 序列化的数据,例如 bool, int, float, bytes, string, list and dict.

受网络、硬件、电源等因素影响,一个 actor 可能会反复接收到相同消息,所以你要保证多次执行 actor 的安全性。

Messages 消息

brokers 接收到消息后,会持久化到硬盘。broker 重启后,会重新激活消息。

消息处理结果,可以通过 Results 中间件,返回 Redis 或者 Memcached 中。

优雅的处理中断

import dramatiq
from dramatiq.middleware import Interrupt
@dramatiq.actor(max_retries=3, notify_shutdown=True)
def long_running_task():
    try:
        setup()
        do_work()
    except Shutdown:
        cleanup()
        raise

定时任务

可以跟apscheduler结合,实现定时执行任务的功能。

以上就是Django celery的替代品Dramatiq使用特性详解的详细内容,更多关于Django celery替代品Dramatiq的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文