Beispiel #1
0
class ResultPersistenceHelper(MongoMixin):
    def __init__(self, function_result_status_persistance_conf, queue_name):
        self.function_result_status_persistance_conf = function_result_status_persistance_conf
        if self.function_result_status_persistance_conf.is_save_status:
            task_status_col = self.mongo_db_task_status.get_collection(
                queue_name)
            # params_str 如果很长,必须使用TEXt或HASHED索引。
            task_status_col.create_indexes([
                IndexModel([("insert_time_str", -1)]),
                IndexModel([("insert_time", -1)]),
                IndexModel([("params_str", pymongo.TEXT)]),
                IndexModel([("success", 1)])
            ], )
            task_status_col.create_index(
                [("utime", 1)],
                expireAfterSeconds=function_result_status_persistance_conf.
                expire_seconds)  # 只保留7天。
            self._mongo_bulk_write_helper = MongoBulkWriteHelper(
                task_status_col, 100, 2)
            self.task_status_col = task_status_col

    def save_function_result_to_mongo(
            self, function_result_status: FunctionResultStatus):
        if self.function_result_status_persistance_conf.is_save_status:
            item = function_result_status.get_status_dict()
            item2 = copy.copy(item)
            if not self.function_result_status_persistance_conf.is_save_result:
                item2['result'] = '不保存结果'
            self._mongo_bulk_write_helper.add_task(
                InsertOne(item2))  # 自动离散批量聚合方式。
Beispiel #2
0
 def __init__(self, function_result_status_persistance_conf, queue_name):
     self.function_result_status_persistance_conf = function_result_status_persistance_conf
     if self.function_result_status_persistance_conf.is_save_status:
         task_status_col = self.mongo_db_task_status.get_collection(queue_name)
         task_status_col.create_indexes([IndexModel([("insert_time_str", -1)]), IndexModel([("insert_time", -1)]),
                                         IndexModel([("params_str", -1)]), IndexModel([("success", 1)])
                                         ], )
         task_status_col.create_index([("utime", 1)],
                                      expireAfterSeconds=function_result_status_persistance_conf.expire_seconds)  # 只保留7天。
         self._mongo_bulk_write_helper = MongoBulkWriteHelper(task_status_col, 100, 2)