当前位置: 首页 > news >正文

黄瓜视频ios海口seo推广公司

黄瓜视频ios,海口seo推广公司,平顶山建设局网站,建设银行网站定酒店celery的简介 celery是一个基于分布式消息传输的异步任务队列#xff0c;它专注于实时处理#xff0c;同时也支持任务调度。它的执行单元为任务#xff08;task#xff09;#xff0c;利用多线程#xff0c;如Eventlet#xff0c;gevent等#xff0c;它们能被并发地执行… celery的简介   celery是一个基于分布式消息传输的异步任务队列它专注于实时处理同时也支持任务调度。它的执行单元为任务task利用多线程如Eventletgevent等它们能被并发地执行在单个或多个职程服务器worker servers上。任务能异步执行后台运行或同步执行等待任务完成。  在生产系统中celery能够一天处理上百万的任务。它的完整架构图如下 组件介绍 Producer调用了Celery提供的API、函数或者装饰器而产生任务并交给任务队列处理的都是任务生产者。Celery Beat任务调度器Beat进程会读取配置文件的内容周期性地将配置中到期需要执行的任务发送给任务队列。Broker消息代理又称消息中间件接受任务生产者发送过来的任务消息存进队列再按序分发给任务消费方通常是消息队列或者数据库。Celery目前支持RabbitMQ、Redis、MongoDB、Beanstalk、SQLAlchemy、Zookeeper等作为消息代理但适用于生产环境的只有RabbitMQ和Redis, 官方推荐 RabbitMQ。Celery Worker执行任务的消费者通常会在多台服务器运行多个消费者来提高执行效率。Result Backend任务处理完后保存状态信息和结果以供查询。Celery默认已支持Redis、RabbitMQ、MongoDB、Django ORM、SQLAlchemy等方式。  在客户端和消费者之间传输数据需要序列化和反序列化。 Celery 支出的序列化方案如下所示: 准备工作   在本文中我们使用的celery的消息代理和后端存储数据库都使用redis序列化和反序列化选择msgpack。  首先我们需要安装redis数据库具体的安装方法可参考http://www.runoob.com/redis/r... 。启动redis我们会看到如下界面 在redis可视化软件rdm中我们看到的数据库如下 里面没有任何数据。  接着为了能够在python中使用celery我们需要安装以下模块 celeryredismsgpack这样我们的准备工作就完毕了。 一个简单的例子   我们创建的工程名称为proj结构如下图   首先是主程序app_test.py代码如下 from celery import Celeryapp Celery(proj, include[proj.tasks]) app.config_from_object(proj.celeryconfig)if __name__ __main__:app.start() 分析一下这个程序 from celery import Celery是导入celery中的Celery类。app是Celery类的实例创建的时候添加了proj.tasks这个模块也就是包含了proj/tasks.py这个文件。把Celery配置存放进proj/celeryconfig.py文件使用app.config_from_object加载配置。  接着是任务函数文件tasks.py代码如下 import time from proj.app_test import appapp.task def add(x, y):time.sleep(1)return x y tasks.py只有一个任务函数add让它生效的最直接的方法就是添加app.task这个装饰器。add的功能是先休眠一秒然后返回两个数的和。   接着是配置文件celeryconfig.py代码如下 BROKER_URL redis://localhost # 使用Redis作为消息代理CELERY_RESULT_BACKEND redis://localhost:6379/0 # 把任务结果存在了RedisCELERY_TASK_SERIALIZER msgpack # 任务序列化和反序列化使用msgpack方案CELERY_RESULT_SERIALIZER json # 读取任务结果一般性能要求不高所以使用了可读性更好的JSONCELERY_TASK_RESULT_EXPIRES 60 * 60 * 24 # 任务过期时间CELERY_ACCEPT_CONTENT [json, msgpack] # 指定接受的内容类型   最后是调用文件diaoyong.py代码如下 from proj.tasks import add import timet1 time.time()r1 add.delay(1, 2) r2 add.delay(2, 4) r3 add.delay(3, 6) r4 add.delay(4, 8) r5 add.delay(5, 10)r_list [r1, r2, r3, r4, r5] for r in r_list:while not r.ready():passprint(r.result)t2 time.time()print(共耗时%s % str(t2-t1)) 在这个程序中我们调用了add函数五次delay()用来调用任务。 例子的运行   到此为止我们已经理解了整个项目的结构与代码。  接下来我们尝试着把这个项目运行起来。  首先我们需要启动redis。接着切换至proj项目所在目录并运行命令 celery -A proj.app_test worker -l info 界面如下 然后我们运行diaoyong.py输出的结果如下 3 6 9 12 15 共耗时1.1370790004730225 后台输出如下 接着我们看一下rdm中的数据 至此我们已经成功运行了这个项目。  下面我们尝试着对这个运行结果做些分析。首先我们一次性调用了五次add函数但是运行的总时间才1秒多。这是celery异步运行的结果如果是同步运行那么至少需要5秒多因为每调用add函数一次就会休眠一秒。这就是celery的强大之处。  从后台输出可以看到程序会先将任务分发出来每个任务一个ID在后台统一处理处理完后会有相应的结果返回同时该结果也会储存之后台数据库。可以利用ready()判断任务是否执行完毕再用result获取任务的结果。  本文项目的github地址为https://github.com/percent4/c... 。  本次分享到此结束感谢阅读~  注意本人现已开通微信公众号 Python爬虫与算法微信号为easy_web_scrape 欢迎大家关注哦~~ 参考文献 Celery 初步http://docs.jinkan.org/docs/c... 使用Celeryhttps://zhuanlan.zhihu.com/p/... 异步神器celeryhttps://www.jianshu.com/p/9be...
http://www.pierceye.com/news/677219/

相关文章:

  • 网站猜你喜欢代码专门做房产的网站
  • 网页设计与网站建设题库企业logo设计免费
  • 深圳比较有名的设计公司大连seo推广优化
  • 宁波住房和城乡建设局网站最新上市新手机
  • 重庆做网站公司学校做网站方案
  • 网站建站建设价格酷家乐软件下载电脑版
  • 关于做网站的搞笑段子仿淘宝网站
  • 免费建网站的网站搭建价格表
  • 茶山网站仿做河池公司网站开发价格
  • 珠海网站制作推广公司哪家好做网站页面怎么做
  • 丰润网站建设怎么开网店流程
  • 电子商务网站建设的参考文献硬件开发平台是什么意思
  • 杭州做网站 做小程序自助建站免费永久
  • 软件培训网站建设鹤山市网站建设公司
  • 网站的验证码是怎么做的wordpress团购插件
  • 邯郸网站设计注册贵阳网站建设天锐科技
  • 网站建设服务费税率多少WordPress文档批量发布接口
  • 云服务器网站配置网页界面设计中一般使用的分辨率是多少
  • 网站域名销售wordpress文章入口设置
  • 上海做网站较好的公司c 做网站
  • 代发货网站系统建设螺栓球网架
  • 做书的网站有哪些内容吗电商平台定制
  • 网站建设与推广长春云电脑永久免费版手机版
  • 营销型网站建设优化建站坂田建设网站
  • 大型网站方案自己做网站详细流程
  • 网站开发中为什么有两个控制层南昌网站建设技术托管
  • 网站如何加入百度联盟易名中国网站
  • 海报在线制作免费网站网站建设费用明细湖南岚鸿
  • 宝塔服务器搭建网站教程盐城网站建设兼职
  • 南京网站制作公司怎么样wordpress思维导图