python并发写文件_一行Python搞定"并发"静态文件服务器

本文介绍如何使用Python快速搭建静态文件服务器,并提供了一种支持并发访问的改进方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创文章, 禁止转载

静态文件服务器能够将本地的一个路径映射为一个地址, 供其他人访问. 我们每天访问的各类网站, 背后都有大量的静态文件服务器做支撑. 不过大多数静态文件服务器的搭建都不够简单, 在不重要的情景下使用传统静态文件服务器, 不免小题大做. 这里我们讲解一个最简单的搭建静态文件服务器的方式, 一行Python搞定!

基础篇

如果你的电脑上安装有Python, 那么在终端中运行如下命令, 即可搭建映射当前目录的静态文件服务器:

python -m SimpleHTTPServer

启动的静态文件服务器, 默认监听8000端口, 终端输出如下

如果您的当前文件夹中有一个文件为xxxx.apk, 那么启动服务器后, 您就可以在浏览器中输入 http://127.0.0.1:8000/xxxx.apk来下载这个文件.

只输入http://127.0.0.1:8000/ 可以查看整个目录.

如果你需要更改监听的端口, 则在命令的最后指明需要监听的端口号

python -m SimpleHTTPServer 9000

进阶篇

这个Python搭建的静态文件服务器实在太方便了. 尤其是在内网传文件的时候, 自己搭这样一个静态文件服务器, 可以充分利用内网的带宽, 50MB/s不是梦! 但是这个服务器由于太简易, 不免存在一些缺陷. 最明显的就是它不支持并发, 所以同时只能有一个同事从你的机器上下载文件, 不能群发! 为了克服这个弊病, 我写了一个Python模块, 让这个静态文件服务器支持了并发, 代码如下:

import socket

import SocketServer

import BaseHTTPServer

from SimpleHTTPServer import SimpleHTTPRequestHandler

class ForkingHTTPServer(SocketServer.ForkingTCPServer):

allow_reuse_address = 1

def server_bind(self):

"""Override server_bind to store the server name."""

SocketServer.TCPServer.server_bind(self)

host, port = self.socket.getsockname()[:2]

self.server_name = socket.getfqdn(host)

self.server_port = port

def test(HandlerClass=SimpleHTTPRequestHandler,

ServerClass=ForkingHTTPServer):

BaseHTTPServer.test(HandlerClass, ServerClass)

if __name__ == '__main__':

test()

将上述代码保存为文件ForkStaticServer.py, 放到Python标准库的目录下(在我的电脑上是/usr/lib/python2.7/ForkStaticServer.py), 以后用下面的命令代替前面所讲的命令, 这样搭建出来的静态文件服务器就是支持并发的!

python -m ForkStaticServer 9000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值