Kubernetes基础架构进行自动化测试了吗?
然后再执行Celery的异步任务,得到的结果是我想要的。 4、 引申思考以及问题 我的问题是解决了,但是这引起了我对Celery的一些兴趣。 当时,我就考虑到,如果我把正在运行中的Task任务,直接kill掉。那么此时我再去看Task的状态,它会是啥呢? STARTED,正在执行中的状态。 而此时,Task已经关掉,它不应该是这种状态。为此,我猜测这应该是,Task意外结束,没有改变Task的状态导致的。 但是这样就不太好了,因为只要是程序,那它就一定有意外退出的可能。假设,我的项目需要查看Task的状态,当Task被意外kill掉时,项目中查看Task的状态就不准确了。 5、 引申问题解决思路一 当时我想:既然Task被kill掉之后,还能显示运行中,说明此Task的状态一定是保存在某个地方,我把该Task的数据清空了不就完了。 而Celery的数据存储,只有可能存在三个地方:使用RabbitMQ的消息代理(BROKER),使用Redis的任务结果保存处(BACKEND),以及文件保存(当然这点基本上没可能,Celery没这样用过,我主要是死马当活马医)。 这三个地方,其实只有Redis可能存放Task的状态,按照Celery的机制,也只有它最有可能存放。
但是呢?为了弄清Celery的存储机制,我想试试Celery会把数据存到RabbitMQ中吗?然后,我执行了,以下命令,清空RabbitMQ队列。 orker继承AQS的意义:A 禁止线程未开始就被中断;B 同步runWorker方法的处理逻辑 12 拒绝策略
❝A handler for rejected tasks that runs the rejected task directly in the calling thread of the {@code execute} method, unless the executor has been shut down, in which case the task is discarded.❞ 如果任务被拒绝了,则由「提交任务的线程」执行此任务
13 ForkJoinPool了解一波 9 如果优雅地关闭线程池线程池
(编辑:通化站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |