def run(self, request\_type):
 
 """
 Entry point for campaign selection and list processing to send emails
 processing:
 1. active properties are fetched
 2. non global notification of these properties are fetched
 3. call to function to process satisfying entities

 Parameters
 ----------
 request\_type : str
 this parameter is determining what kind of journey campaigns we are sending, possible values are staymx, feedback and custom

 Returns
 -------
 """
 # self.logger.info("Returning property notification mapping")
 
 properties = list(self.db\_handler.properties.find({"active": True}, {"\_id": 1}))
 property\_ids = [str(item.get("\_id")) for item in properties]
 
 # self.logger.info('Total properties %s'%(len(property\_ids)))
 
 if request\_type == "staymx":
 distinct\_property\_ids = self.db\_handler.staymx\_property\_reservations.distinct("property\_id")
 elif request\_type == "feedback":
 distinct\_property\_ids = self.db\_handler.feedback\_survey\_responses.distinct("property\_id")
 
 if request\_type in ["staymx", "feedback"]:
 def is\_reservation\_available(property\_id):
 return property\_id in distinct\_property\_ids
 
 property\_ids = [property\_id for property\_id in property\_ids if is\_reservation\_available(property\_id)]
 
 # self.logger.info('Total properties after filter %s' % (len(property\_ids)))
 
 query = {
 "active": True,
 "global": {"$ne": True},
 "sources": request\_type,
 "property\_id": {"$in": property\_ids},
 "is\_draft": {"$ne": True}
 }
 
 fields = {"property\_id": 1, "notification\_type": 1, "global": 1, "survey\_id": 1}
 
 notifications = list(self.db\_handler.default\_system\_notifications.find(query, fields))
 
 self.logger.info("Total notification requests to process : " + str(len(notifications)))
 
 collection\_queue = "default\_system\_notification\_temp\_queue"
 
 # Insert queued to true for all notifications
 self.prepare\_notification\_requests(request\_type=request\_type, notifications=notifications)

 
 late\_processed = {
 'active': {'$ne': False}
 }
 
 request\_pending\_execution = list(self.marketing\_db\_handler[collection\_queue].
 find(late\_processed, {"\_id": 1}).limit(10).sort('last\_updated\_at', 1))
 
 self.\_\_execute\_request\_list(request\_list=request\_pending\_execution, request\_type=request\_type, delay=False)
 
 request\_query = {
 'queued': True,
 'is\_running': {"$ne": True},
 "source": request\_type
 }
 
 request\_list = list(
 self.marketing\_db\_handler[collection\_queue].find(request\_query, {"\_id": 1}).limit(500).sort('timestamp', 1))
 
 self.logger.info("Total request list : %s " % (len(request\_list)))
 
 request\_list = [str(request.get("\_id")) for request in request\_list]
 
 for request in request\_list:
 try:
 task\_id = None
 if request\_type == "staymx":
 handle\_staymx\_notifications.send\_with\_options(
 args=(request,),
 on\_failure=log\_error,
 on\_success=log\_result,
 )

 elif request\_type == "feedback":
 task\_id = handle\_feedback\_notifications.send\_with\_options(
 args=(request,),
 on\_failure=log\_error,
 on\_success=log\_result,
 )
 elif request\_type == "custom":
 task\_id = handle\_custom\_notifications.send\_with\_options(
 args=(request,),
 on\_failure=log\_error,
 on\_success=log\_result,
 )
 
 self.logger.info("Task id: %s" % (request))
 update = self.marketing\_db\_handler[collection\_queue].update({"\_id": ObjectId(request)}, {
 "$set": {"task\_id": str(task\_id), "task\_added\_at": datetime.utcnow()}})
 
 except:
 self.logger.info(format("Final traceback output : ", traceback.format\_exc()))
 
 # Update all requests to picked and running status if not running
 self.update\_all\_request\_running(request\_list)
 self.\_\_execute\_delayed\_tasks(
 notifications=notifications,
 request\_type=request\_type
 )

-----
This code handles queuing of default system notifications and manage their efficient executions

1. Pick all notifications to be delivered
 1, Pick active properties
 2. Pick active notifications as per configuration (staymx, feedback, custom)
2. Queue notifications 
 2. Prorities notifications
 3. Run notification on priority which are not running or was not able to picked up 
 4. In database queue all notifications and manage their states (Notification in queue, running, picked, processed)
 5. When queued, When came to running, When picked, When processed
3. To reduce traffice from notification database use cache database to query and fetch notifications 

consider yourself as experienced python developer please refractor this code and let us know the possible implementations
ef run(self, request\_type):  """ 이메일을 보내기 위한 캠페인 선택 및 목록 처리를 위한 진입점 처리합니다: 1. 활성 속성을 가져옵니다. 2. 이러한 속성에 대한 비 글로벌 알림이 가져옵니다. 3. 만족하는 엔티티를 처리하기 위한 함수 호출 파라미터 ---------- 요청\_type : str 이 매개변수는 전송할 여정 캠페인의 종류를 결정하며, 가능한 값은 staymx, 피드백 및 사용자 지정입니다. 반환값 ------- """ # self.logger.info("반환 속성 알림 매핑")  properties = list(self.db\_handler.properties.find({"active": True}, {"\_id": 1})) property\_ids = [str(item.get("\_id")) for item in properties]  # self.logger.info('총 속성 %s'%(len(property\_ids)))  if request\_type == "staymx": distinct\_property\_ids = self.db\_handler.staymx\_property\_reservations.distinct("property\_id") 요청\_type == "피드백": distinct\_property\_ids = self.db\_handler.feedback\_survey\_responses.distinct("property\_id")  if request\_type in ["staymx", "feedback"]: def is\_reservation\_available(property\_id): 반환 property\_id in distinct\_property\_ids  property\_ids = [property\_ids의 property\_id for property\_id if is\_reservation\_available(property\_id)]  # self.logger.info('%s 필터링 후 총 속성' % (len(property\_ids)))  query = { "active": True, "global": {"$ne": True}, "출처": 요청\_type, "property\_id": {"$in": property\_ids}, "is\_draft": {"$ne": True} }  fields = {"property\_id": 1, "알림\_type": 1, "global": 1, "survey\_id": 1}  notifications = list(self.db\_handler.default\_system\_notifications.find(query, fields))  self.logger.info("처리할 총 알림 요청: " + str(len(notifications)))  collection\_queue = "default\_system\_notification\_temp\_queue"  # 모든 알림에 대해 queued를 true로 삽입합니다. self.prepare\_notification\_requests(request\_type=request\_type, notifications=알림)  late\_processed = { 'active': {'$ne': False} }  요청\_보류\_실행 = list(self.marketing\_db\_handler[collection\_queue]. find(late\_processed, {"\_id": 1}).limit(10).sort('last\_updated\_at', 1))  self.\_\_execute\_request\_list(request\_list=request\_pending\_execution, request\_type=request\_type, delay=False)  요청\_쿼리 = { '대기 중': True, 'is\_running': {"$ne": True}, 'source': request\_type }  request\_list = list( self.marketing\_db\_handler[collection\_queue].find(request\_query, {"\_id": 1}).limit(500).sort('timestamp', 1))  self.logger.info("총 요청 목록 : %s " % (len(request\_list)))  request\_list = [str(request.get("\_id")) for request in request\_list]  요청\_list의 요청에 대해: try: task\_id = None if request\_type == "staymx": handle\_staymx\_notifications.send\_with\_옵션( args=(요청,), on\_failure=log\_error, on\_success=log\_result, ) elif request\_type == "feedback": task\_id = handle\_feedback\_notifications.send\_with\_옵션( args=(요청,), on\_failure=log\_error, on\_success=log\_result, ) elif request\_type == "custom": task\_id = handle\_custom\_notifications.send\_with\_옵션( args=(요청,), on\_failure=log\_error, on\_success=log\_result, )  self.logger.info("작업 id: %s" % (요청)) update = self.marketing\_db\_handler[collection\_queue].update({"\_id": ObjectId(요청)}, { "$set": {"task\_id": str(task\_id), "task\_added\_at": datetime.utcnow()}})  예외: self.logger.info(format("최종 트레이스백 출력 : ", traceback.format\_exc()))  # 실행 중이 아닌 경우 모든 요청을 선택 및 실행 상태로 업데이트합니다. self.update\_all\_request\_running(request\_list) self.\_\_execute\_delayed\_tasks( 알림=알림, 요청\_type=요청\_type )-----이 코드는 기본 시스템 알림의 대기열을 처리하고 효율적인 실행을 관리합니다.1. 전달할 모든 알림 선택 1, 활성 속성 선택 2. 구성에 따라 활성 알림을 선택합니다(스테이엠엑스, 피드백, 사용자 지정).2. 대기열 알림  2. 우선순위 알림 3. 실행 중이 아니거나 픽업할 수 없는 우선순위에 대한 실행 알림  4. 데이터베이스에서 모든 알림을 대기열에 넣고 상태를 관리합니다 (대기열에있는 알림, 실행 중, 선택, 처리 됨). 5. 대기 중일 때, 실행 중일 때, 선택되었을 때, 처리되었을 때 5.3. 알림 데이터베이스의 트래픽을 줄이려면 캐시 데이터베이스를 사용하여 알림을 쿼리하고 가져옵니다. 자신을 숙련 된 파이썬 개발자로 간주하고이 코드를 굴절시키고 가능한 구현을 알려주십시오.