falsk celery task 数据库查询
在使用celery时,函数中修改数据库,commit后调用celery的task查询刚才添加的数据进行其他操作,总会出现找不到的情况,求解。
调用task部分代码
...
try:
db.session.commit()
except Exception as e:
current_app.logger.error(str(e))
db.session.rollback()
if not ci_existed: # only add
self.delete(ci.ci_id)
return abort(500, "add CI error")
his_manager = CIAttributeHistoryManger()
his_manager.add(ci.ci_id, histories)
ci_cache.apply_async([ci.ci_id], queue="async")
# add bj ci
add_ci_bj.apply_async([ci_type.type_name, None, ci.ci_id], queue="async")
return ci.ci_id
celery的task函数
@celery.task(name="xxxxxxx", queue="async")
def add_ci_bj(ci_type, first_id, second_id):
param, status = lib.ci.CIManager().get_relations(first_id, second_id, is_async=True)
...
task中调用的函数
def get_relations(self, first_id, second_id, is_async=False):
start = time.clock()
try:
second = self.get_ci_by_id(second_id, need_children=False)
except Exception as e:
return None, "get ci by id error: first %s, second %s, e %s, is_async:%s" % \
(first_id, second_id, e, is_async)
...
get_relation中的exception老是被触发,也就是查不到second_id对应的数据,有遇到过的么???求解
相关阅读:
MySQL 联合查询并更新到另一个表,求教
C#发送邮件带附件超时
为什么有两个setTimeout,分别是什么意思?
这个判断为什么不生效呢if($(".a").css("width") == 100){}
mysql 连接问题
js在函数中 创建变量 和 引用变量 实质上的执行过程是怎么样的?
使用了https后,还有必要使用md5对数据进行签名来确保数据没有被篡改吗?
面试问题:查找出现次数最多的ip
jpa是orm的一种吗?
Django rest-framework 关联表内容没有显示
Spring Security中ObjectPostProcessor接口是干啥的
textarea的问题
javascript中的变量定义与变量声明的区别?
Gradle 如何编译指定模块?
Ueditor切换到代码模式 能不换行吗?
安装vue-cli的时候 vue init webpack my-test 不拉取项目,是下载vue.js
请问jq怎样将数据放到excel里面
更新七牛的版本之后出现Tab页内的上传按钮弹出文件选择框的情况
Atom的language-babel插件编译ES6依赖哪些node模块?
python2 ----创建类实例--调试错误