分布式任务队列Celery快速上手
Celery介绍
celery(芹菜)是一个异步任务队列/基于分布式消息传递的作业队列。
- 它侧重于实时操作,但对调度支持也很好。
- celery用于生产系统每天处理数以百万计的任务。
- celery是用Python编写的,但该协议可以在任何语言实现。它也可以用其他语言通过webhooks实现。
- 目前已知有php/ruby/nodejs的实现
为什么用Celery?
- 异步
- 耗时久的事儿可以扔给 Worker 处理,处理完可以触发子任务提醒
- 天然的并发能力(多进程/协程)!
- 非常方便添加 Worker 来增强处理能力
- Celery提供了Web方式的监控/报警,这样,我们就可以监控每个任务的情况了
- 出现错误可以自动处理/重试
角色介绍
Brokers: 提供队列服务,Celery支持的Brokers有:
- RabbitMQ(推荐)
- Redis
- MongoDB
- Beanstalk
- CouchDB
- SQLAlchemy(MySQL/PostgreSQL/Sqlite/Oracle)
- Amazon SQS等
Worker …
more ...Python代码追踪(类似于bash -x的效果)
这个我居然找了一年。。。@_@
#详细追踪
python -m trace --trace script.py
#显示调用了哪些函数
python -m trace --trackcalls script.pymore ...
pyifstat
- python写的ifstat,用于查看当前带宽(流量)占用情况
- 借用ifstat的介绍: ifstat is a tool to report network interfaces bandwidth just like vmstat/iostat do for other system counters. It can monitor local interfaces by polling the kernel counters
#!/usr/bin/env python import time import sys if len(sys.argv) > 1: INTERFACE = sys.argv[1 …more ...