Python Flask Socket Error(Linux环境新手)

ach*_*chi 3 python sockets linux flask

这可能是一个快速修复,但我已经陷入停顿,我希望你能帮助.请耐心等待,我在命令行环境中不会流利.

我刚刚开始使用名为Flask的Python框架.它已成功安装,我启动并运行Hello World.当我在浏览器中调用程序时,控制台向我发送了日志.

为了退出控制台日志,我按下了ctrl-z(^ Z)~~可能是错误开始的地方?~~并且提示:

[1]+  Stopped                 python hello.py
Run Code Online (Sandbox Code Playgroud)

现在,当我或者a)尝试在浏览器中运行程序或b)在命令行中运行脚本时,python hello.py我抛出一个错误:

socket.error: [Errno 48] Address already in use
Run Code Online (Sandbox Code Playgroud)

..当然还有许多其他线条印在控制台上.

一个好的答案应该包括我做错了什么以及我能做些什么来解决它,并且接受的答案也将包括为什么;)

pcu*_*rry 6

你猜对了,Ctrl- Z是什么让你陷入困境.你的问题是Ctrl- Z实际上让应用程序暂停,而不是终止.要终止程序,您需要Ctrl- C.

您的程序正在使用它配置使用的套接字.尝试重新启动程序会导致新的Python实例尝试使用您已配置程序使用的套接字 - 该程序由已停止的程序保存.

从这里你有一些选择:

  • 在带有已停止的Python实例的shell中,您可以键入%1fg 1返回运行您停止的Python实例,并将其显示在终端上.
    • 完成上述操作后,您可以键入Ctrl- C,并结束已运行的Python实例,使套接字可用于新的Python实例.
  • 在同一个shell中,您可以键入bg 1,这将导致Python实例在后台运行,而不是显示到终端.应用程序应该响应.在任何时候,您都可以键入fg 1该命令行以使其再次显示给终端.

还有其他可用选项,包括ps用于查找Python实例的进程ID,然后使用kill向该进程发送信号,如果找不到它正在运行的命令行.

shell的手册页应该为您提供有关作业控制的更多帮助.您可以使用该man命令阅读手册.键入man bash以阅读bash手册.如果您正在运行其他shell,则可以man使用该shell的名称进行调用.


pyd*_*ner 5

你点击CTRL+ 时所做的Z就是你停止了你的程序并陷入了后台.

它与您的终端断开连接.现在,如果你打算输入fg 1,你就会收回它.与此同时,该程序位于内存中,其所有IO都被捆绑在一起.因此,您无法再次启动该程序.但是因为它已经停止并且没有通过处理器运行,所以也无法使用Web部件.如果要避免终端输出,请重定向到文件(python hello.py > hello.log)或者/dev/null如果您不想看到输出(python hello.py > /dev/null).