def __scan_non_finished_bangumi(self):
"""
scan the bangumi whose status is not finished. and update its status if possible.
:return:
"""
session = SessionManager.Session()
try:
bangumi_list = session.query(Bangumi). \
filter(Bangumi.delete_mark == None). \
filter(Bangumi.status != Bangumi.STATUS_FINISHED). \
all()
for bangumi in bangumi_list:
if bangumi.status == Bangumi.STATUS_PENDING and bangumi.air_date <= datetime.today().date():
bangumi.status = Bangumi.STATUS_ON_AIR
if bangumi.status == Bangumi.STATUS_ON_AIR and self.__check_if_bangumi_finished(session, bangumi):
bangumi.status = Bangumi.STATUS_FINISHED
session.commit()
except exc.DBAPIError as db_error:
logger.error(db_error, exc_info=True)
# if connection is invalid rollback the session
if db_error.connection_invalidated:
session.rollback()
except Exception as error:
logger.error(error, exc_info=True)
traceback.print_exc()
finally:
SessionManager.Session.remove()
评论列表
文章目录