python celery 时区&结果(性能)的坑
本文主要介绍最近使用celery遇到的两个坑。关于时区,以及是否保留结果(celery使用rabbitmq)。
先说结论:定时任务记得配置时区;丢弃结果对使用rabbitmq对celery来说,性能提升巨大。
第一部分:celery使用定时任务功能的时候,通常配置如下
CELERYBEAT_SCHEDULE = {
'query-every-day': {
'task': 'xxx',
'schedule': crontab(hour=16, minute=35)
},
'delete-every-1-second': {
'task': xxxx',
'schedule': crontab(minute='*/1')
},
'update-every-1-second': {
'task': 'xxxxx,
'schedule': timedelta(seconds=60)
}
}
针对xxxxx任务,每60秒执行一次;针对xxxx任务,每分钟执行一次;针对xxx任务,每天16时35分执行一次。
启动
celery -A start.celery beat -s celerybeat-schedule
这样配置,后面俩间隔时间执行的定时任务执行良好。
而第一个设置每天绝对时间的任务没有在配置的时间执行,查询发现有时区这个东西。需要配置如下:
CELERY_TIMEZONE = 'Asia/Shanghai'
ps:最开始尝试的'Asia/Hongkong',报错了。看来祖国大陆的地位越来越高。
第二部分:celery的是否保留结果配置
丢弃结果配置如下:
CELERY_IGNORE_RESULT = True
为什么会推荐丢弃结果呢?
在压测使用rabbitmq对celery时发现,每次执行单个的简单加减任务,会耗时0.1秒左右(慢哭)。
完成任务至7000时,rabbitmq出问题了,日志显示:

Recovering 7008 queues, avilable file handles: 4764. Please increase mas open file handles limit to at least 7008
Mnesia(rabbit@localhost): ** WARNING ** Mnesia is overloaded: {dump_log,write_threshold}
这才发现,使用rabbitmq的celery,每一次完成任务,都会为这个任务建一个队列。。。在获取这个结果之后队列才删除。
并且这个建队列的性能开销非常大:保留结果完成一个任务耗时0.1秒左右,丢弃结果平均一个任务耗时0.001秒左右
google了一下Mnesia的配置,找到有解决方案,但最后并没有使用,因为这个确实用不着保留结果,并且性能的损失不太能接受。
后来发现了一篇celery最佳实践有讲到丢弃结果这个事情:http://blog.csdn.net/siddontang/article/details/34447003
python celery 时区&结果(性能)的坑的更多相关文章
- python celery + redis
redis http://debugo.com/python-redis celery http://docs.jinkan.org/docs/celery/getting-started/intro ...
- Python编程规范及性能优化(转载)
转载地址:http://codeweblog.com/python编程规范及性能优化/
- 小测几种python web server的性能
http://blog.csdn.net/raptor/article/details/8038476 因为换了nginx就不再使用mod_wsgi来跑web.py应用了,现在用的是gevent-ws ...
- python celery多worker、多队列、定时任务
python celery多worker.多队列.定时任务
- Python 优化第一步: 性能分析实践 使用cporfile+gprof2dot可视化
拿来主义: python -m cProfile -o profile.pstats to_profile.py gprof2dot -f pstats profile.pstats |dot -Tp ...
- python函数式编程,性能,测试,编码规范
这篇文章主要是对我收集的一些文章的摘要.因为已经有很多比我有才华的人写出了大量关于如何成为优秀Python程序员的好文章. 我的总结主要集中在四个基本题目上:函数式编程,性能,测试,编码规范.如果一个 ...
- Python 读取图像文件的性能对比
Python 读取图像文件的性能对比 使用 Python 读取一个保存在本地硬盘上的视频文件,视频文件的编码方式是使用的原始的 RGBA 格式写入的,即无压缩的原始视频文件.最开始直接使用 Pytho ...
- python—Celery异步分布式
python—Celery异步分布式 Celery 是一个python开发的异步分布式任务调度模块,是一个消息传输的中间件,可以理解为一个邮箱,每当应用程序调用celery的异步任务时,会向brok ...
- python测试mysql写入性能完整实例
这篇文章主要介绍了python测试mysql写入性能完整实例,具有一定借鉴价值,需要的朋友可以参考下 本文主要研究的是python测试mysql写入性能,分享了一则完整代码,具体介绍如下. 测试环境: ...
随机推荐
- [Vue安装教程]十分钟学会vue 安装
Vue的安装主要有一下几个步骤: 1.安装npm淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org 2.安装脚手架工 ...
- React——state
在React--组件中介绍过组件有两种定义方式:函数形式以及类形式.但是要想在组件中使用state,就必须使用类形式定义组件. 组件中的state是组件私有的,完全由组件自己控制. 使用类形式定义一个 ...
- MongoDB学习之路(二)
MongDB特点 MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器的性能. MongoDB旨在为WEB应用提供可拓展的高 ...
- 201521123084 《Java程序设计》第7周学习总结
第7周-集合 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料: XMind ------------------------------------------- ...
- SNS团队第七次站立会议(2017.04.28)
一.当天站立式会议照片 本次会议主要内容:汇报工作进度,根据完成情况调整进度 二.每个人的工作 成员 今天已完成的工作 明天计划完成的工作 罗于婕 导入相关词库数据 研究如何存取语音.图片文件 龚晓 ...
- 201521123105 第七周Java学习总结
1. 本周学习总结 2. 书面作业 1.ArrayList代码分析 1.1 解释ArrayList的contains源代码 以下是ArrayList的contains源代码: public boole ...
- 201521123119《Java程序设计》第6周学习总结
1. 本周学习总结 2. 书面作业 Q1.clone方法 Q1.1 Object对象中的clone方法是被protected修饰,在自定义的类中覆盖clone方法时需要注意什么? 只能在本类内部或者和 ...
- 201521123097《Java程序设计》第四周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 在本周的学习中,我知道了在类的定义里,还学习到了抽象类以及抽象方法的使用格式. 2. 书面作 ...
- 201521123076 《Java程序设计》第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 书面作业 1. 网络基础 1.1 比较ping www.baidu.com与ping cec.jmu ...
- 201521123039 《java程序设计》第一周学习总结
#1.本章学习总结 Java是面向对象的程序语言,它一切定义都是对象.我们所编写的Java程序经过编译后生成了*.class的文件,再经过JVM对*.class解释运行就可以得到Java程序,所以Ja ...