数据安全怎么做
我执行项目中的Celery异步任务,根据我之前查出来的task id。执行demo查询该Task的状态。 这时候,问题就出来了,根据demo返回的Task状态为PENDING。表示Task还在等待中,尚未执行。 这就不对了,此时的状态应该是STARTED,因为我的Task已经执行好一段时间了,它返回的结果不准确。 3、 解决问题 难道我用的字段不正确,然后我就谷歌搜索。发现Celery官网和网上的大多数反馈也是表示Task的状态字段就是state。 那我为什么测出的结果和理论的不同呢?然后,我详细查看Celery的配置,发现了一个参数:CELERY_TRACK_STARTED。 该参数默认是关闭的,表示只要Celery开始执行Task就会追踪该Task。所以,开启该参数后,Task的状态是时刻记在BACKEND中的。
好,我在Celery的配置文件处,加了该参数。 做项目时,其中用了Celery这种工具。前段时间,遇到过一些问题,解决后没有进行总结,今天就抽个空把它记录下来。 用过Celery的程序员,都知道它是一种异步执行程序的工具。里面有Worker、Task等概念,这里我就不赘述了。 1、功能需求 在使用Celery的过程中,我需要知道Task的状态。Task就是异步任务,用户没执行一次异步任务,就会新创建一个Task,代表此异步任务。 该Task对象中,包含着许多信息,其中也包括状态。我的项目中,需要根据Task的状态来判断,这次异步任务是否还在执行中。 2、 出现问题
既然,我需要Task的状态,那我就需要查看Task的状态怎么获取啊!我查看了一下Celery的源码!发现在Celery的AsyncResult对象中,有个state字段。如下图所示: PriorityBlockingQueue」
「DelayQueue」
「SynchronousQueue」
「LinkedTransferQueue」
「LinkedBlockingDeque」
8 Executors的四种线程池浅析 「newFixedThreadPool」
指定核心线程数,队列是LinkedBlockingQueue无界阻塞队列,永远不可能拒绝任务;适合用在稳定且固定的并发场景,建议线程设置为CPU核数 (编辑:通化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |