Python Sublime Text3 -- socket.error: [Errno 48] Address already in use

在上篇我们谈到《mac OS Sublime Text3 配置成 Python IDE环境》,也有涉及到《Python Flask RESTful API -- HTTPAuth》,那么我们能不能在Sublime Text3运行Flask HTTPAuth呢,试试看.

1、在Sublime Text3新增一个.py文件,命名为FlaskHTTPAuth.py,代码如下:

# coding=UTF-8

from flask import Flask
#https://github.com/miguelgrinberg/flask-httpauth
#安装flask-httpauth后,在PyCharm-Preferences-Project-Interpreter-增加flask-httpauth
from flask_httpauth import HTTPBasicAuth

app = Flask(__name__)
auth = HTTPBasicAuth()

users = {
    "kingly":"hello",
    "susan":"bye"
}

@auth.get_password
def get_pwd(username):
    if username in users:
        return users.get(username)

    return None

@app.route('/')
@auth.login_required
def index():
    return 'Hello %s!!' % auth.username()


if __name__ == '__main__':
    app.run()

快捷键 Command + B,运行成功。


运行结果

打开终端,测试RESTful API是否能成功调用,测试之前先安装 HTTPie

pip install HTTPie

按下回车键,安装成功,接着输入:

http -a kingly:hello http://127.0.0.1:5000

利用HTTPie中的http -a 命令带入API需要的用户名和密码(kingly:hello),访问成功。


http -a kingly:hello http://127.0.0.1:5000

果然能运行,喜悦之情溢于言表,高兴之余,在Sublime Text3 再次按下了快捷键,Command +B运行, 报错,图片如下:


error socket

看到了报错的关键词:socket.error: [Errno 48] Address already in use,这应该是通信方面的socket端口被占用的问题,应该是第一次运行时5000端口被占用了,还没来得及使用快捷键 Ctrl + C释放,知道原理后,只要找出占用端口的进程,杀死即可,打开终端,输入:

lsof -i :5000

查看端口占用情况,从下图可以看出Python程序占用5000端口


3.27.17.36.png

杀死进程,输入kill以及进程PID 4499,回车键执行:

kill 4499

返回Sublime Text3,再次Command + B运行程序,成功!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为什么要学英语 我曾在课堂上多次问过学生这个问题:Whyare we here? AKA, why do we l...
    赵元阅读 839评论 3 11
  • 促成2016夏贝加尔之旅的有各种因素,如气候怡人、零时差、交通便捷、行程相对宽松等等,但起决定性作用的可能还是有关...
    白桦琳74阅读 184评论 0 0
  • 梁生,我的名字。那你是谁?我们认识吗? 生命好像是无限次轮回。在一个光怪陆离的世界里,繁花遍地,日月同辉,...
    小夜七瑶阅读 589评论 2 0
  • 女儿受伤快一个月了,疤痕挺明显的,哎,以后真的不能让小阿姨和女儿单独在一起。小阿姨来了快一年了,整体上帮了不少...
    _Ling玲_阅读 461评论 1 0