落地并存测服全端:智能体 Graph/路由、后台切 8180、主账与部署脚本齐备,便于线上重发与验收。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
"""
|
||||
Redis 协调骨架自检(默认 Memory 后端)。
|
||||
|
||||
用法:
|
||||
set REDIS_BACKEND=memory
|
||||
python -m agent.redis_coord.selftest
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
import os
|
||||
import sys
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s")
|
||||
os.environ["REDIS_BACKEND"] = "memory"
|
||||
os.environ.setdefault("YTD_ENV", "test")
|
||||
os.environ.setdefault("REDIS_KEY_PREFIX", "inquiry_robot:")
|
||||
|
||||
from agent.config import get_settings
|
||||
from agent.redis_coord import (
|
||||
get_redis_runtime,
|
||||
get_wecom_token,
|
||||
rate_limit_allow,
|
||||
set_wecom_token,
|
||||
shutdown_redis_runtime,
|
||||
try_acquire_idempotency,
|
||||
)
|
||||
from agent.redis_coord.keys import join_key
|
||||
|
||||
get_settings.cache_clear()
|
||||
# 证明:名字在前缀,不在「库名」
|
||||
k = join_key("inquiry_robot:", "stream", "llm")
|
||||
assert k.startswith("inquiry_robot:"), k
|
||||
logger.info("OK: 键前缀示例 %s(db 号在 REDIS_URL 的 /1,不在键名里)", k)
|
||||
|
||||
rt = get_redis_runtime(get_settings())
|
||||
try:
|
||||
assert rt.client.ping()
|
||||
logger.info("OK: ping backend=%s", rt.client.backend)
|
||||
|
||||
assert try_acquire_idempotency(
|
||||
rt.client, scope="selftest", idempotency_key="once", ttl_seconds=60
|
||||
)
|
||||
assert not try_acquire_idempotency(
|
||||
rt.client, scope="selftest", idempotency_key="once", ttl_seconds=60
|
||||
)
|
||||
logger.info("OK: 短幂等")
|
||||
|
||||
r1 = rate_limit_allow(rt.client, scope="selftest", limit=2, window_seconds=60)
|
||||
r2 = rate_limit_allow(rt.client, scope="selftest", limit=2, window_seconds=60)
|
||||
r3 = rate_limit_allow(rt.client, scope="selftest", limit=2, window_seconds=60)
|
||||
assert r1.allowed and r2.allowed and not r3.allowed
|
||||
logger.info("OK: 限流")
|
||||
|
||||
set_wecom_token(rt.client, agent_id="1000010", token="tok-selftest", ttl_seconds=30)
|
||||
assert get_wecom_token(rt.client, agent_id="1000010") == "tok-selftest"
|
||||
logger.info("OK: token 缓存")
|
||||
|
||||
eid = rt.llm_stream.enqueue(
|
||||
payload={"mode": "ordered_actions", "text": "hi"},
|
||||
idempotency_key="msg-1",
|
||||
)
|
||||
claimed = rt.llm_stream.claim(consumer="selftest-worker", count=1, block_ms=10)
|
||||
assert claimed and claimed[0][0] == eid
|
||||
rt.llm_stream.ack(eid)
|
||||
logger.info("OK: Stream 入队/认领/ack id=%s", eid)
|
||||
logger.info("Redis 骨架自检通过")
|
||||
return 0
|
||||
finally:
|
||||
shutdown_redis_runtime()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user