Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

项目简介

在本博客文章中,我将向大家展示一个基于 Flask 框架的简单访客日志系统。该系统可以记录访问者的 IP 地址、地理位置以及访问时间,并将这些信息存储到一个文本文件中。通过访问特定的路由,我们可以查看所有的访问记录。
这个项目非常适合刚入门 Flask 的开发者,它不仅展示了 Flask 的基本用法,还结合了 HTML 前端展示和后端逻辑处理,是一个完整的 Web 应用示例。

前端代码

下面是项目的 HTML 前端代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>访客日志监控系统</title>
<style>
body {
font-family: 'Microsoft YaHei', Arial, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
margin: 0;
padding: 20px;
min-height: 100vh;
}

.container {
max-width: 1200px;
margin: 0 auto;
background: white;
border-radius: 10px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
overflow: hidden;
}

.header {
background: #2c3e50;
color: white;
padding: 30px;
text-align: center;
}

.header h1 {
margin: 0;
font-size: 2.5em;
}

.content {
padding: 40px;
text-align: center;
}

.empty-state {
color: #7f8c8d;
font-size: 1.2em;
margin: 50px 0;
}

.log-button {
display: inline-block;
background: #3498db;
color: white;
padding: 15px 30px;
text-decoration: none;
border-radius: 25px;
font-size: 1.1em;
transition: all 0.3s ease;
}

.log-button:hover {
background: #2980b9;
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}

.log-content {
background: #f8f9fa;
border: 1px solid #dee2e6;
border-radius: 5px;
padding: 20px;
text-align: left;
white-space: pre-wrap;
font-family: 'Consolas', 'Monaco', monospace;
font-size: 14px;
line-height: 1.5;
max-height: 600px;
overflow-y: auto;
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>访客日志监控系统</h1>
<p>智能IP追踪与地理位置分析平台</p>
</div>

<div class="content">
{% if request.path == '/txt' %}
<h2>访问日志详情</h2>
<div class="log-content">{{ log_content }}</div>
<br>
<a href="/" class="log-button">返回主页</a>
{% else %}
<div class="empty-state">
<h2>欢迎使用访客监控系统</h2>
<p>您的访问已被记录,点击查看详细日志</p>
</div>
<a href="/txt" class="log-button">查看访问日志</a>
{% endif %}
</div>
</div>
</body>
</html>

这段 HTML 代码创建了一个美观的用户界面,用于展示访客日志系统。它包含了一个标题区域和内容区域。在内容区域中,根据访问的路径不同,会显示不同的内容:如果访问的是根路径 / ,则显示欢迎信息和一个查看日志的按钮;如果访问的是 /txt 路径,则显示所有访问记录的详细信息。

后端代码

下面是项目的后端代码,使用 Flask 框架实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# -*- coding: utf-8 -*-
"""
博客文章示例:极简 Flask 访客日志系统
功能:
1. 任何页面访问都会记录:IP、地理位置、时间
2. 访问 /txt 时直接把日志文件内容以纯文本形式输出
运行:
$ pip install flask requests
$ python app.py
"""

import os
import datetime
import requests
from flask import Flask, request, Response, render_template_string

app = Flask(__name__)
LOG_FILE = 'visitor_log.txt'


# ---------- 工具函数 ----------
def get_client_ip():
"""优先从 X-Forwarded-For 取真实 IP"""
if request.headers.get('X-Forwarded-For'):
return request.headers['X-Forwarded-For'].split(',')[0].strip()
return request.remote_addr or '0.0.0.0'


def get_location_by_ip(ip):
"""调用免费 API(ip-api.com)获取地理位置"""
try:
url = f"http://ip-api.com/json/{ip}?fields=status,message,country,regionName,city,query"
r = requests.get(url, timeout=3)
data = r.json()
if data.get('status') == 'success':
return f"{data['country']} {data['regionName']} {data['city']}"
except Exception:
pass
return 'Unknown'


def append_log(ip, location):
"""把一行日志追加到文件"""
timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
line = f"{timestamp} | {ip:<15} | {location}\n"
with open(LOG_FILE, 'a', encoding='utf-8') as f:
f.write(line)


# ---------- 路由 ----------
@app.route('/')
def index():
ip = get_client_ip()
location = get_location_by_ip(ip)
append_log(ip, location)
# 返回空白页面,也可以换成你自己的博客首页
return ""


@app.route('/txt')
def show_log():
"""直接输出日志文件内容(纯文本)"""
if not os.path.exists(LOG_FILE):
return Response("暂无访问记录", mimetype='text/plain; charset=utf-8')
with open(LOG_FILE, 'r', encoding='utf-8') as f:
content = f.read()
return Response(content, mimetype='text/plain; charset=utf-8')


# ---------- 启动 ----------
if __name__ == '__main__':
# 生产环境请用 gunicorn / uwsgi
app.run(host='0.0.0.0', port=5000, debug=True)

这段后端代码实现了以下功能:

1.
记录访客信息:每当有用户访问根路径 / 时,系统会获取用户的 IP 地址,并通过调用 IP 地址 API 获取用户的地理位置信息。然后,将访问时间、IP 地址和地理位置信息记录到日志文件中。

2.
查看日志:当用户访问 /txt 路径时,系统会读取日志文件的内容,并将其以纯文本形式返回给用户。

  1. 工具函数:代码中包含了几个工具函数,用于获取客户端 IP 地址、通过 IP 地址获取地理位置信息,以及将日志信息追加到文件中。
    运行项目
    要运行这个项目,你需要先安装所需的依赖库:
1
pip install flask requests

然后,将上述 HTML 和 Python 代码保存到同一个目录下。HTML 代码可以保存为 index.html ,Python 代码保存为 app.py 。
最后,在命令行中运行以下命令启动 Flask 应用:

1
python app.py

项目启动后,你可以在浏览器中访问 http://localhost:5000/ 查看访客日志系统的主页,访问

http://localhost:5000/txt 查看所有访问记录。

Kimi2主要提升

架构优化

稀疏MoE架构:Kimi K2采用稀疏的混合专家(MoE)架构,拥有384个专家模块,每层仅激活其中8个,以及1个共享前馈网络(FFN)。这种设计在保证模型强大表达能力的同时,极大地优化了计算效率,降低了推理过程中的资源消耗。
多头潜在注意力(MLA)结构:使用MLA结构替代传统的密集注意力机制,将每层的注意力头数量降至64个。这不仅减少了计算量和带宽压力,还在处理长上下文时表现出色,能够更准确地捕捉文本中不同部分之间的关联。

优化器创新

MuonClip优化器:Kimi K2引入了MuonClip优化器,它结合了Muon的token效率与QK-Clip的稳定性。通过动态裁剪注意力logits来防止训练不稳定,实现了在15.5万亿token预训练过程中的零损失spike,确保了大规模训练的稳定性和连续性。

训练数据与策略

大规模Agentic Tool Use数据合成:构建了一个可大规模生成多轮工具使用场景的合成pipeline,覆盖数百领域、数千工具。这种大规模的数据合成策略为模型提供了丰富的训练素材,增强了其在工具调用和任务执行方面的能力。
通用强化学习框架:结合可验证奖励(RLVR)和自我批判评估奖励,将对齐从静态扩展到开放域。这种强化学习框架有助于提升模型的自主决策和任务完成能力。

工具调用与Agent能力

原生工具调用能力:Kimi K2提出了“模型即Agent”的新概念,具备原生的工具调用能力。它能够自动将复杂指令拆解为一系列可直接执行的ToolCall结构,并通过API接入各种Agent/Coding框架,完成复杂任务或自动化编码。
多层级决策机制:构建了多层级决策机制,使得模型在无需人工干预的情况下能够完成任务分解、工具调用与结果整合,极大地提升了其在自动化流程中的实用性。

多模态融合

多模态融合架构:支持文本、图像、语音等多种数据类型的联合处理,极大提升了其在复杂场景下的理解与生成能力。这种多模态融合能力使其在内容创作、智能客服等应用中表现突出。

量化版本发布

多种量化版本:Kimi K2发布了多种量化版本,包括1.8bit的UD_IQ1到UD-Q5_K_XL等。这些量化版本使得模型在不同硬件环境下的部署更加灵活,进一步降低了推理延迟,提升了推理效率。

评论