python异步处理celery

好久没有更新博客了,前段时间忙于毕设,之后去公司实习。近一段时间空了,整理一下之前所遇到的问题,以及解决方法。

通常当计算机运行很久的代码,需要将其放在后台进行处理,也就是需要实现异步。python中一个解决方案就是利用celery这个包。

具体的实现思路是,计算前在数据库例如mongo里面插入一个{"state":"0"};celery将计算程序放入一个存储消息的数据库,通常可以用redis;同时,启动celery的worker,它将不断check redis里面的消息,如果有那么进行计算;而当计算完update那条记录{"state":"1","result":"something"}。

异步的好处在于能将一堆calculation,同时放去后台,而前端只要不断check那条记录里的state这个feature。当然state也可以很多的状态值,可以定义各个error,这样也可以找到错误。

时间: 2024-08-24 19:29:52

python异步处理celery的相关文章

在python下比celery更加简单的异步任务队列RQ

前言: 这里介绍一个python下,比celery更加简单的异步工具,真的是很简单,当然他的功能没有celery多,复杂程度也没有celery大,文档貌似也没有celery多,但是为啥会介绍rq这个东西 因为他够简单. 当然他虽然简单,但是也是需要中间人的,也就是 Broker,这里只能是redis了. 他没有celery支持的那么多,比如 redis rabbitmq mongodb mysql之类的. 说回来,咱们用rq,就是看重他的简单. 如对celery有兴趣,可以看看我以前写过的博文.

python使用异步任务celery出现异常崩溃时retry重试

前言: python下的celery是啥东西大家应该有了解,是一个异步的任务框架 .话说,  我以前写过一个报警平台的项目,也需要任务的扩展成分布式,当时总是觉得 用celery不是那么太靠谱,所以就自己写了一个分布式的任务派发的系统. 今个和朋友聊起了分布式爬虫,这哥们说 任务有时候经常的崩溃,但是celery的retry的机制有些意思,最后看了下文档  ,又研究了下retry的参数,然后把自己的一些实战分享给大家. #xiaorui.cc @celery.task(bind=True,max

异步任务队列Celery在Django中的使用

前段时间在Django Web平台开发中,碰到一些请求执行的任务时间较长(几分钟),为了加快用户的响应时间,因此决定采用异步任务的方式在后台执行这些任务.在同事的指引下接触了Celery这个异步任务队列框架,鉴于网上关于Celery和Django结合的文档较少,大部分也只是粗粗介绍了大概的流程,在实践过程中还是遇到了不少坑,希望记录下来帮助有需要的朋友. 一.Django中的异步请求 Django Web中从一个http请求发起,到获得响应返回html页面的流程大致如下:http请求发起 --

python任务调度模块celery

python任务调度模块celerycelery简介Celery特点Celery工作流程图celery安装使用 python任务调度模块celery celery简介 Celery是一个python开发的异步分布式任务调度模块.Celery本身并不提供消息服务,使用第三方服务,也就是borker来传递任务,一般使用rabbitMQ或者Redis. Celery特点 简单:一单熟悉了celery的工作流程后,配置和使用还是比较简单的. 高可用:当任务执行失败或执行过程中发生连接中断,celery

转-python异步IO-asyncio

原文连接 http://blog.chinaunix.net/uid-190176-id-4223282.html 前言 异步操作在计算机软硬件体系中是一个普遍概念,根源在于参与协作的各实体处理速度上有明显差异.软件开发中遇到的多数情况是CPU与IO的速度不匹配,所以异步IO存在于各种编程框架中,客户端比如浏览器,服务端比如node.js.本文主要分析Python异步IO. Python 3.4标准库有一个新模块asyncio,用来支持异步IO,不过目前API状态是provisional,意味着

Python异步Socket编程

异步网络据说能极大的提高网络server的连接速度,所以打算写一个专题,来学习和了解异步网络.因为Python有个非常出名的异步Lib:Twisted,所以就用Python来完成. OK,首先写一个pythone socket的server段,对开放三个端口:10000,10001,10002.krondo的例子中是每个server绑定一个端口,测试的时候需要分别开3个shell,分别运行.这太麻烦了,就分别用三个Thread来运行这些services. Java代码   import optp

<史上最强>深入理解 Python 异步编程(上)

前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知道如何使用 Tornado.Twisted.Gevent 这类异步框架上,出现各种古怪的问题难以解决.而且使用了异步框架的部分同学,由于用法不对,感觉它并没牛逼到哪里去,所以很多同学做 Web 后端服务时还是采用 Flask.Django等传统的非异步框架. 从上两届 PyCon 技术大会看来,异步编程已经成了 Python 生态下一阶段的主旋律.如新兴的 Go.Rust.

Python异步通信模块asyncore

Python异步通信模块asyncore 介绍 Python的asyncore模块提供了以异步的方式写入套接字服务的client和server的基础结构. 模块主要包含: asyncore.loop(-) - 用于循环监听网络事件.loop()函数负责检測一个字典.字典中保存dispatcher的实例. asyncore.dispatcher类 - 一个底层套接字对象的简单封装.这个类有少数由异步循环调用的,用来事件处理的函数. dispatcher类中的writable()和readable(

深入理解 Python 异步编程(上)

http://python.jobbole.com/88291/ 前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知道如何使用 Tornado.Twisted.Gevent 这类异步框架上,出现各种古怪的问题难以解决.而且使用了异步框架的部分同学,由于用法不对,感觉它并没牛逼到哪里去,所以很多同学做 Web 后端服务时还是采用 Flask.Django等传统的非异步框架. 从上两届 PyCon 技术大会看来,异步编程已经成