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
FlaskAPI从python shell运行,但不是在Ubuntu上托管之后运行_Python_Linux_Api_Flask_Web Hosting - Fatal编程技术网

FlaskAPI从python shell运行,但不是在Ubuntu上托管之后运行

FlaskAPI从python shell运行,但不是在Ubuntu上托管之后运行,python,linux,api,flask,web-hosting,Python,Linux,Api,Flask,Web Hosting,我试图将程序的输出作为api公开。我正在使用flask构建我的api。我想在linux机器上运行同样的程序。当我从本地运行脚本时,我能够在上找到输出,但当我尝试从linux环境运行相同的脚本时,它会显示404错误或page not found错误,并且在我的linux shell中没有类似404500的错误代码。如何使它也在我的linux环境中运行?如何测试它是否在linux上工作? 附件代码如下: from flask import Flask, request from flask_rest

我试图将程序的输出作为api公开。我正在使用flask构建我的api。我想在linux机器上运行同样的程序。当我从本地运行脚本时,我能够在上找到输出,但当我尝试从linux环境运行相同的脚本时,它会显示404错误或page not found错误,并且在我的linux shell中没有类似404500的错误代码。如何使它也在我的linux环境中运行?如何测试它是否在linux上工作? 附件代码如下:

from flask import Flask, request
from flask_restful import Resource, Api
#from flask.views import MethodView

app = Flask(__name__)
api = Api(app)    
class dtext(Resource):
    def get(self, result):
        return {'data': d.convert(result)}


categories= ["bus", "jack"]   
@app.route('/ec')
def returnResult():
  return categories[0]

if __name__ == '__main__':
     app.run(host="0.0.0.0", port=5000)

您是在Linux机器本身上运行127.0.0.1:5000连接,还是从其他机器连接到Linux机器

您需要确保您的应用程序正在侦听0.0.0.0,否则它将只接受本地主机(自身)的连接

如果无法在端口5000上与linux机器建立任何连接,则需要查看防火墙规则

  • 在命令行中,通过键入
    flask run--host=0.0.0.0
    来运行应用程序。(这对于生产代码来说是个坏主意)
  • 然后打开浏览器
  • 键入Linux机器的IP地址(
    [IP Address]/ec
    ),您应该会看到结果。 您的服务器是虚拟机还是在本地网络或云上

  • 您能否尝试使用
    app.run(host='0.0.0',port=5000)
    ?您需要获取linux机器的IP地址,例如
    IP地址
    ,并在浏览器中使用此IP,而不是
    127.0.0.1
    。此外,在您的代码中,您仅声明路由
    /ec
    ,但在上面的文本中,如果我删除/ec并给出@app.route('/'),您尝试调用
    //code>@Martin,那么当我输入我的机器的IP时,它应该显示正确?我已对代码进行了更改,并在问题部分发布了相同的更改。但是仍然会出现相同的错误“无法访问此站点”您知道您正在连接的linux机器的IP地址/DNS名称吗?这个问题似乎与联系机器有关,而不是与您的代码有关。是的,我知道IP地址,输入相同的地址,但仍然没有响应。您可以通过任何其他方式联系此Linux服务器吗?能否ping Linux服务器(低于端口级别,以便检查您是否有访问权限)?它将取决于您如何配置它,一些例子是SSH、FTP、其他端口上的HTTP?请检查Linux服务器上的端口5000是否打开。我使用kill$(sudo lsof-t-I:5000)和fuser-k 5000/tcp杀死了端口5000上所有正在运行的进程。。我当前已登录到虚拟机。我可以在它里面工作,但是当我从cmd ping它时,它说没有响应。这会是问题吗?
    
    app.run(host="0.0.0.0", port="5000")