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

 更新时间:2023年06月21日 11:04:35   作者:alue  
这篇文章主要为大家介绍了Django celery的替代品Dramatiq使用特性详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Django 框架消息队列 celery

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

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

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

celery 特性

  • 如果用了普罗米修斯中间件,则可以通过 http://127.0.0.1:9191/ ,查看workers状态。(在windows上试了,响应不稳定)
  • 代码变动后,可向主进程发送 SIGHUP 信号,从而让 workers 更新状态。(但windows下,没有有向进程发送信号的便捷手段)
$ kill -s HUP 13047
  • 可以加入 --watch 参数,实现 hot-reload, 但生产环境不推荐。
  • max_retries:设定最大重试次数。
  • retry_when:设定重试条件。
  • max_age :任务寿命毫秒。

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

  • time_limit:执行时长上限(毫秒),默认为 10 分钟。超时,则会报出 TimeLimitExceeded 异常。
  • priority : 任务优先级, 默认为 0, 越小优先级越高。
  • send_with_options(): 提供任务调度能力
  • 方便与Django框架结合,在admin中能够看到任务执行历史。

Actors

  • Actor 的并行

你的 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的资料请关注脚本之家其它相关文章!

相关文章

  • python实现爬虫下载美女图片

    python实现爬虫下载美女图片

    本文给大家发发福利,给大家分享一个使用Python实现爬虫下载百度贴吧美女图片的代码,十分不错,有需要的小伙伴直接拿走吧。
    2015-07-07
  • Python入门教程之pycharm安装/基本操作/快捷键

    Python入门教程之pycharm安装/基本操作/快捷键

    这篇文章主要介绍了Python入门教程之pycharm安装/基本操作/快捷键,Python是一门非常强大好用的语言,也有着易上手的特性,本文为入门教程,需要的朋友可以参考下
    2023-04-04
  • Pandas检查dataFrame中的NaN实现

    Pandas检查dataFrame中的NaN实现

    本文主要介绍了Pandas检查dataFrame中的NaN实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Python FastAPI Sanic Tornado 与Golang Gin性能实战对比

    Python FastAPI Sanic Tornado 与Golang Gin性能实战对比

    本文将深入比较Python的FastAPI、Sanic、Tornado以及Golang的Gin框架的各种特性、性能表现以及适用场景,通过详实的性能测试和实际示例代码,将探讨它们在构建现代高性能应用中的优劣势,以便开发者根据需求做出明智的选择
    2024-01-01
  • python pandas 如何替换某列的一个值

    python pandas 如何替换某列的一个值

    python pandas 如何替换某列的一个值?今天小编就为大家分享一篇python pandas 实现替换某列的一个值方法,具有很好的参考价值,希望对大家有所帮助
    2018-06-06
  • python操作文件的参数整理

    python操作文件的参数整理

    在本篇文章中我们给大家总结了关于python操作文件的相关参数以及用法内容,需要的朋友们学习下。
    2019-06-06
  • 深入浅析python定时杀进程

    深入浅析python定时杀进程

    这篇文章主要介绍了深入浅析python定时杀进程的相关资料,需要的朋友可以参考下
    2016-06-06
  • python批量爬取图片的方法详解

    python批量爬取图片的方法详解

    这篇文章给大家介绍了如何使用python批量爬取图片,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2023-12-12
  • python 爬取国内小说网站

    python 爬取国内小说网站

    国内小说网站的结构,大概都如出一辙,改改地址,就差不多了,有此需求的朋友可以参考下本文的爬虫写法
    2021-06-06
  • python列表去重的二种方法

    python列表去重的二种方法

    这篇文章主要介绍了python列表去重的二种方法,第二种方法无法保持原有顺序,需要的朋友可以参考下
    2014-02-02

最新评论