【发布时间】:2021-10-05 16:23:44
【问题描述】:
我有简单的 http python 多线程服务器
#http_server_threads.py
from http.server import HTTPServer, BaseHTTPRequestHandler
from socketserver import ThreadingMixIn
import threading
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-Type',
'text/plain; charset=utf-8')
self.end_headers()
message = threading.currentThread().getName()
self.wfile.write(message.encode('utf-8'))
self.wfile.write(b'\n')
class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):
"""Handle requests in a separate thread."""
if __name__ == '__main__':
server = ThreadedHTTPServer(('localhost', 8080), Handler)
print('Starting server, use <Ctrl-C> to stop')
server.serve_forever()
如果我卷曲
(base) padmanabanpr@padmanaban ~ % curl localhost:8080
Thread-1
(base) padmanabanpr@padmanaban ~ % curl localhost:8080
Thread-2
(base) padmanabanpr@padmanaban ~ % curl localhost:8080
Thread-3
在运行这个 python 代码时我得到了
% python3 http_server_threads.py
Starting server, use <Ctrl-C> to stop
127.0.0.1 - - [30/Jul/2021 10:13:54] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [30/Jul/2021 10:13:59] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [30/Jul/2021 10:14:01] "GET / HTTP/1.1" 200 -
我需要将此输出记录到文件而不是显示,
需要记录的输出:(ip - - datetime "request type" response code - )
【问题讨论】:
-
那么通过简单地将其重定向到一个文件(即
python3 http_server_threads.py 2> file)有什么问题?另请参阅log_message: "...这通常被覆盖以创建自定义错误日志记录机制..." -
@SteffenUllrich 感谢您提供 log_message 信息。重定向的问题是我应该每 5 分钟获取一次此日志
标签: python multithreading sockets http