该错误表示地址绑定失败,可能是该地址已被占用或无权限访问。解决办法是更换地址或释放被占用的端口。可以通过修改代码中的 IP 地址或端口号来更换地址,或通过查找占用该端口的进程并结束进程来释放端口。
代码示例:
import psutil
# 查找占用指定端口的进程并结束该进程
def kill_process_by_port(port):
for proc in psutil.process_iter():
try:
for conn in proc.connections(kind='inet'):
if conn.laddr.port == port:
proc.kill()
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
# 修改 AIOHTTP 服务端口
from aiohttp import web
async def hello(request):
return web.Response(text="Hello, World!")
if __name__ == '__main__':
PORT = 8080
# 尝试启动服务,若端口被占用则终止占用该端口的进程
while True:
try:
app = web.Application()
app.add_routes([web.get('/', hello)])
web.run_app(app, port=PORT)
except OSError as e:
if e.errno == 10048:
kill_process_by_port(PORT)
else:
break
这段代码将创建一个 AIOHTTP 服务,并不断尝试在指定端口启动服务,若端口被占用则调用 kill_process_by_port
函数杀死占用该端口的进程,并在进程结束后重新尝试启动服务。