celery task 数据库查询 财富值48

2016-11-03 23:57发布

在使用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对应的数据,有遇到过的么???求解

友情提示: 问题已经关闭,关闭后问题禁止继续编辑,回答。