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处理原始音频数据,文章以audioop的相关资料展开内容,audioop是python标准库中用于处理原始音频数据的模块,封装了一些便捷的编码转换函数。下文详细内容,需要的朋友可以参考以下
    2022-01-01
  • Python画图实现同一结点多个柱状图的示例

    Python画图实现同一结点多个柱状图的示例

    今天小编就为大家分享一篇Python画图实现同一结点多个柱状图的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • Python的time模块中的常用方法整理

    Python的time模块中的常用方法整理

    这篇文章主要介绍了Python的time模块中的常用方法整理,time模块是专门用于处理日期时间的模块,需要的朋友可以参考下
    2015-06-06
  • 淘宝秒杀python脚本 扫码登录版

    淘宝秒杀python脚本 扫码登录版

    这篇文章主要为大家详细介绍了淘宝秒杀python脚本,扫码登录版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • 部署Django到阿里云服务器教程示例

    部署Django到阿里云服务器教程示例

    这篇文章主要介绍了部署Django到阿里云服务器教程示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • 编写Python的web框架中的Model的教程

    编写Python的web框架中的Model的教程

    这篇文章主要介绍了编写Python的web框架中的Model的教程,示例代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • 通过pykafka接收Kafka消息队列的方法

    通过pykafka接收Kafka消息队列的方法

    今天小编就为大家分享一篇通过pykafka接收Kafka消息队列的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 关于keras多任务多loss回传的思考

    关于keras多任务多loss回传的思考

    这篇文章主要介绍了关于keras多任务多loss回传的思考,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python 打印完整异常问题

    python 打印完整异常问题

    这篇文章主要介绍了python 打印完整异常问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Python 基础之字符串string详解及实例

    Python 基础之字符串string详解及实例

    这篇文章主要介绍了Python 字符串(string) 的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论