Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python烧瓶套接字错误(Linux环境新增)_Python_Linux_Sockets_Flask - Fatal编程技术网

Python烧瓶套接字错误(Linux环境新增)

Python烧瓶套接字错误(Linux环境新增),python,linux,sockets,flask,Python,Linux,Sockets,Flask,这可能是一个快速解决方案,但我遇到了停顿,我希望你能帮助我。请容忍我,我对命令行环境不太熟悉 我刚刚开始使用名为Flask的Python框架。它已成功安装,我已启动并运行Hello World。当我在浏览器中调用程序时,控制台正在向我发送日志 要退出控制台日志,我按ctrl-z(^z)~~可能是错误开始的地方?~~并收到以下提示: [1]+ Stopped python hello.py 现在,当我a)尝试在浏览器中运行程序或b)在命令行python hell

这可能是一个快速解决方案,但我遇到了停顿,我希望你能帮助我。请容忍我,我对命令行环境不太熟悉

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

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

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

socket.error: [Errno 48] Address already in use
..当然还有许多其他打印到控制台的行

一个好的答案应该包括我做错了什么以及我能做些什么来纠正它,一个被接受的答案也应该包括为什么;)

当你按下CTRL+Z键时,你停止了你的程序,卡在了后台

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

您猜对了,Ctrl-Z是您遇到麻烦的原因。您的问题是,Ctrl-Z实际上会使应用程序暂停,而不是终止。要终止程序,需要Ctrl-C

您的程序正在使用配置为使用的套接字。尝试重新启动程序会导致一个新的Python实例尝试使用您配置的程序要使用的套接字,该套接字由停止的程序持有

从这里开始,您有一些选择:

  • 在包含停止的Python实例的shell中,您可以键入
    %1
    fg 1
    返回运行您停止的Python实例,并将其显示在终端上。
    • 完成上述操作后,可以键入Ctrl-C,并结束正在运行的Python实例,使套接字可用于新的Python实例
  • 在同一个shell中,您可以键入
    bg1
    ,这将导致Python实例在后台运行,而不会显示给终端。然后应用程序应该会变得响应迅速。在任何时候,您都可以在该命令行中键入
    fg 1
    ,使其再次显示在终端上
还有其他可用的选项,包括使用
ps
查找Python实例的进程ID,如果找不到它运行的命令行,则使用
kill
向该进程发送信号


shell的手册页面应该会在作业控制方面给您更多帮助。您可以使用
man
命令阅读手册。键入
manbash
阅读
bash
手册。如果您在其他shell上运行,您可以使用该shell的名称调用
man

我不知道如何在我的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。这将解除屏幕的连接,并将您踢回正常的命令提示符。

由于Ctrl-C注释和扩展解释而被接受。非常清楚。谢谢你的回答,谢谢pydsigner。回答得很好。我无法重定向到键入您给我的命令的文件。你知道为什么吗?它会重定向到你运行的目录中的一个文件。如果您在没有文件写入权限的目录下运行,则会失败。在这种情况下,请指定可以写入的完整文件路径。您要描述的是如何分离进程。这里的答案并非如此。