- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ztq异步任务队列
ZTQ异步任务队列潘俊勇易度云办公web服务中的耗时操作生成PDF网页抓取游戏数据备份邮件发送短信发送主线程卡死!解决之道:异步执行ABCD同步ABCD异步:在另外的协程、线程、进程、服务器运行语言级实现ScalaGolangerlang异步队列工作原理任务队列应用(producer)Worker1Worker2WorkeN。。。pushpop分布式:Worker可位于不同的机器运行冲突处理:写操作频繁可靠:异常,队列数据能保存性能:worker取数据,等待Block,非轮询异步队列的更多场合性能优化:尽可能异步日志记录消息推送串行化:避免冲突xapian索引只能单写延时/定时运行并行计算:分割多个任务并行执行队列选型之路数据库方案(ZODB:zc.async):轮询查,低效!频繁写,冲突!RabbitMQ:非常复杂的消息模型ZeroMQ:不支持PersistentBeanstalkd:需要引入专门的服务器Redis:提供List,支持队列RedisRedis:瑞士军刀!已经用在Session、CacheList直接支持队列:pushbrpop/blpop:阻塞式取数据,避免轮询PersistentMaster/SlaveRedisList:太简单底层,使用不方便错误处理监控定时执行不能查找任务多个worker之间的工作调度Redis之上的队列方案RedisMQ:需要另外一个serverResque:github之作,RubyPyres:Resque的PythonClone使用复杂,不够pythonicCelery:目标太大,潜在维护成本ZTQ:Z-TaskQueue基于RedisForPython开源来自生产系统易度云查看易度云办公文档转换、索引、日志记录、消息发送、邮件发送、短信发送、垃圾清理、redis压缩设计目标实现简单容易使用可靠可管理:拥塞、出错容易调试灵活调度,高效利用服务器模块关系Redis(数据存储、进程通信)Worker1WorkerNWorker2监控后台下达命令执行命令报告状态查看状态应用放入任务处理任务查询、优先错误处理组成包ztq_workerworker服务ztq_console监控服务(可选)ztq_core核心API队列任务(应用)pyramidredis配置安装pipinstallztq_corepipinstallztq_worker首先:定义队列任务#ztq_demo/tasks.pyimporttimefromztq_coreimportasync@async#使用默认队列defaultdefsend(body):print‘START:‘,bodysleep(3)print‘END:’,body@async(queue=‘mail’)#使用队列maildefsend_failed(body):print‘FAILSTART’,bodyraiseException(‘connectionerror’)接下来:运行worker#运行:bin/ztq_workerworker.ini[server]host=localhostport=6379db=0alias=w01active_config=falsemodules=ztq_demo.tasks#需要运行的task[queues]default=0#default队列,起1个处理线程mail=0,0#mail队列,起2个处理线程[log]handler_file=./ztq_worker.loglevel=ERROR最后:测试异步运行importztq_corefromztq_demo.tasksimportsend#设置Redis连接ztq_core.setup_redis(‘default’,‘localhost’,6379,0)send(‘hello,world’)#动态指定queuesend(‘helloworldfrommail’,ztq_queue=‘mail’)好,喘口气小窥下监控后台安装运行pipinstallztq_consolebin/pserveapp.ini当前worker状态队列情况错误处理队列执行日志Worker运行日志更多特性。。。抢占式执行#后插入先执行#如果任务已经在队列,会优先send(body,ztq_first=True)Ping:探测任务状态#running:运行;queue:排队中;#error:出错;none:不存在ztq_core.ping_task(send,body)#ztq_first存在就优先;ztq_run不存在就运行ztq_core.ping_task(send,body,ztq_first=True,ztq_run=True)事务:transactionimpo
您可能关注的文档
最近下载
- SL631-2012水利水电工程单元工程施工质量验收评定标准-土石方工程.docx VIP
- 一横老师感恩老师演讲稿 演讲稿 .docx VIP
- 三年级《万以内的加减法》单元测试卷.doc VIP
- 14.2三角形全等的判定(第4课时尺规作图) 课件 人教版(2024)八年级数学上册.pptx VIP
- 采矿方法课程设计.pdf VIP
- 《信访工作条例》150题及答案.docx VIP
- 重庆市直机关遴选公务员面试真题及解析.docx VIP
- 简约清新自我介绍PPT模板课件.pptx VIP
- 2025年玉溪市市直事业单位选调工作人员考试笔试试题(含答案).pdf VIP
- 淡雅朦胧述职报告PPT模板 .pptx VIP
文档评论(0)