mirror of
				https://github.com/suyiiyii/nonebot-bison.git
				synced 2025-11-04 21:44:52 +08:00 
			
		
		
		
	✨ 使用 label 简化 request_counter
This commit is contained in:
		
							parent
							
								
									073bd314fc
								
							
						
					
					
						commit
						80f924123d
					
				@ -3,12 +3,13 @@ from starlette.responses import Response
 | 
			
		||||
from prometheus_client import CONTENT_TYPE_LATEST, Counter, generate_latest
 | 
			
		||||
 | 
			
		||||
# Request counter
 | 
			
		||||
request_counter = Counter("bison_request_counter", "The number of requests")
 | 
			
		||||
# Success counter
 | 
			
		||||
success_counter = Counter("bison_success_counter", "The number of successful requests")
 | 
			
		||||
request_counter = Counter(
 | 
			
		||||
    "bison_request_counter", "The number of requests", ["site_name", "platform_name", "target", "success"]
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# Sent counter
 | 
			
		||||
sent_counter = Counter("bison_sent_counter", "The number of sent messages")
 | 
			
		||||
sent_counter = Counter("bison_sent_counter", "The number of sent messages", ["site_name", "platform_name", "target"])
 | 
			
		||||
 | 
			
		||||
metrics_router = APIRouter(prefix="/api/metrics", tags=["metrics"])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ from nonebot_plugin_apscheduler import scheduler
 | 
			
		||||
from nonebot_plugin_saa.utils.exceptions import NoBotFound
 | 
			
		||||
 | 
			
		||||
from nonebot_bison.utils import ClientManager
 | 
			
		||||
from nonebot_bison.metrics import sent_counter, request_counter, success_counter
 | 
			
		||||
from nonebot_bison.metrics import sent_counter, request_counter
 | 
			
		||||
 | 
			
		||||
from ..config import config
 | 
			
		||||
from ..send import send_msgs
 | 
			
		||||
@ -94,10 +94,10 @@ class Scheduler:
 | 
			
		||||
        logger.trace(f"scheduler {self.name} fetching next target: [{schedulable.platform_name}]{schedulable.target}")
 | 
			
		||||
 | 
			
		||||
        context = ProcessContext(self.client_mgr)
 | 
			
		||||
        request_counter.inc()
 | 
			
		||||
 | 
			
		||||
        try:
 | 
			
		||||
        success_flag = False
 | 
			
		||||
        platform_obj = platform_manager[schedulable.platform_name](context)
 | 
			
		||||
        try:
 | 
			
		||||
            if schedulable.use_batch:
 | 
			
		||||
                batch_targets = self.batch_api_target_cache[schedulable.platform_name][schedulable.target]
 | 
			
		||||
                sub_units = []
 | 
			
		||||
@ -110,6 +110,7 @@ class Scheduler:
 | 
			
		||||
                    schedulable.platform_name, schedulable.target
 | 
			
		||||
                )
 | 
			
		||||
                to_send = await platform_obj.do_fetch_new_post(SubUnit(schedulable.target, send_userinfo_list))
 | 
			
		||||
            success_flag = True
 | 
			
		||||
        except SkipRequestException as err:
 | 
			
		||||
            logger.debug(f"skip request: {err}")
 | 
			
		||||
        except Exception as err:
 | 
			
		||||
@ -118,10 +119,18 @@ class Scheduler:
 | 
			
		||||
                logger.warning("API request record: " + record)
 | 
			
		||||
            err.args += (records,)
 | 
			
		||||
            raise
 | 
			
		||||
        success_counter.inc()
 | 
			
		||||
 | 
			
		||||
        request_counter.labels(
 | 
			
		||||
            platform_name=schedulable.platform_name,
 | 
			
		||||
            site_name=platform_obj.site.name,
 | 
			
		||||
            target=schedulable.target,
 | 
			
		||||
            success=success_flag,
 | 
			
		||||
        ).inc()
 | 
			
		||||
        if not to_send:
 | 
			
		||||
            return
 | 
			
		||||
        sent_counter.inc()
 | 
			
		||||
        sent_counter.labels(
 | 
			
		||||
            platform_name=schedulable.platform_name, site_name=platform_obj.site.name, target=schedulable.target
 | 
			
		||||
        ).inc()
 | 
			
		||||
        for user, send_list in to_send:
 | 
			
		||||
            for send_post in send_list:
 | 
			
		||||
                logger.info(f"send to {user}: {send_post}")
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user