mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-02 09:26:12 +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
|
from prometheus_client import CONTENT_TYPE_LATEST, Counter, generate_latest
|
||||||
|
|
||||||
# Request counter
|
# Request counter
|
||||||
request_counter = Counter("bison_request_counter", "The number of requests")
|
request_counter = Counter(
|
||||||
# Success counter
|
"bison_request_counter", "The number of requests", ["site_name", "platform_name", "target", "success"]
|
||||||
success_counter = Counter("bison_success_counter", "The number of successful requests")
|
)
|
||||||
|
|
||||||
# Sent counter
|
# 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"])
|
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_plugin_saa.utils.exceptions import NoBotFound
|
||||||
|
|
||||||
from nonebot_bison.utils import ClientManager
|
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 ..config import config
|
||||||
from ..send import send_msgs
|
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}")
|
logger.trace(f"scheduler {self.name} fetching next target: [{schedulable.platform_name}]{schedulable.target}")
|
||||||
|
|
||||||
context = ProcessContext(self.client_mgr)
|
context = ProcessContext(self.client_mgr)
|
||||||
request_counter.inc()
|
|
||||||
|
|
||||||
|
success_flag = False
|
||||||
|
platform_obj = platform_manager[schedulable.platform_name](context)
|
||||||
try:
|
try:
|
||||||
platform_obj = platform_manager[schedulable.platform_name](context)
|
|
||||||
if schedulable.use_batch:
|
if schedulable.use_batch:
|
||||||
batch_targets = self.batch_api_target_cache[schedulable.platform_name][schedulable.target]
|
batch_targets = self.batch_api_target_cache[schedulable.platform_name][schedulable.target]
|
||||||
sub_units = []
|
sub_units = []
|
||||||
@ -110,6 +110,7 @@ class Scheduler:
|
|||||||
schedulable.platform_name, schedulable.target
|
schedulable.platform_name, schedulable.target
|
||||||
)
|
)
|
||||||
to_send = await platform_obj.do_fetch_new_post(SubUnit(schedulable.target, send_userinfo_list))
|
to_send = await platform_obj.do_fetch_new_post(SubUnit(schedulable.target, send_userinfo_list))
|
||||||
|
success_flag = True
|
||||||
except SkipRequestException as err:
|
except SkipRequestException as err:
|
||||||
logger.debug(f"skip request: {err}")
|
logger.debug(f"skip request: {err}")
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
@ -118,10 +119,18 @@ class Scheduler:
|
|||||||
logger.warning("API request record: " + record)
|
logger.warning("API request record: " + record)
|
||||||
err.args += (records,)
|
err.args += (records,)
|
||||||
raise
|
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:
|
if not to_send:
|
||||||
return
|
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 user, send_list in to_send:
|
||||||
for send_post in send_list:
|
for send_post in send_list:
|
||||||
logger.info(f"send to {user}: {send_post}")
|
logger.info(f"send to {user}: {send_post}")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user