mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-05-31 16:16:11 +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()
|
||||
|
||||
success_flag = False
|
||||
platform_obj = platform_manager[schedulable.platform_name](context)
|
||||
try:
|
||||
platform_obj = platform_manager[schedulable.platform_name](context)
|
||||
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