【问题标题】:Python Flask Socket Error (new to Linux environment)Python Flask 套接字错误(Linux 环境的新手)
【发布时间】:2013-05-04 11:07:36
【问题描述】:

这可能是一个快速修复,但我遇到了停顿,希望您能提供帮助。请多多包涵,我不熟悉命令行环境。

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

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

[1]+  Stopped                 python hello.py

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

socket.error: [Errno 48] Address already in use

..当然还有许多其他行打印到控制台。

一个好的答案应该包括我做错了什么以及我可以做些什么来解决它,一个被接受的答案还应该包括为什么;)

【问题讨论】:

    标签: python linux sockets flask


    【解决方案1】:

    我不明白如何在我的 Linux 环境中输入fg1,但至少我可以告诉你如何以正确的方式进行操作。我曾经在 Ctrl+Z 上停留了很长时间,并认为 API 已关闭……这是我的做法,希望对您有所帮助。

    输入 sudo python xxx.py。它将运行您的 API。提示将询问您的密码(因为 sudo),一旦您输入正确的密码,windows 会在下面显示类似这样的内容。

    Bottle server starting up...
    Listening on http://0.0.0.0:port_number/
    Hit Ctrl-C to quit. 
    

    如果您想在不关闭 API 的情况下退出此对话框,请输入 Ctrl+a,然后输入 d。所以按下 Ctrl+a 键(什么都不会启动)然后松开它们并按下 d。这将取消附加屏幕并让您回到正常的命令提示符。

    【讨论】:

    • 您所描述的是如何分离screen 进程。这里不是真正的答案。
    【解决方案2】:

    你猜对了,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 上运行,你可以用那个 shell 的名字调用man

    【讨论】:

    • 由于 Ctrl-C 注释和扩展解释而被接受。非常清楚。谢谢你的回答。
    【解决方案3】:

    当你点击 CTRL+Z 时你所做的是你停止了你的程序并停留在后台。

    它已与您的终端断开连接。现在如果你输入fg 1,你会得到它。与此同时,该程序位于内存中,其所有 IO 等都被占用。因此,您无法再次启动该程序。但由于它已停止且未通过处理器运行,因此您也无法使用 Web 部件。如果你想避免终端输出,要么重定向到一个文件 (python hello.py > hello.log),要么重定向到 /dev/null,如果你不想看到输出 (python hello.py > /dev/null)。

    【讨论】:

    • 感谢 pydsigner。很好的答案。我无法重定向到输入您给我的命令的文件。你知道为什么吗?
    • 它将重定向到您正在运行的目录中的文件。如果您从没有文件写入权限的目录运行,它将失败。在这种情况下,请指定您可以编写的完整文件路径。
    猜你喜欢
    • 2020-03-17
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-30
    • 2013-04-14
    • 1970-01-01
    相关资源
    最近更新 更多