python flask 如何修改默认端口号
生活随笔
收集整理的這篇文章主要介紹了
python flask 如何修改默认端口号
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
場景:按照github文檔上啟動一個flask的app,默認(rèn)是用5000端口,如果5000端口被占用,啟動失敗。
樣例代碼:
from flask import Flaskapp = Flask(__name__)@app.route('/') def hello():return 'Hello, World!'啟動的腳本:
$ env FLASK_APP=hello.py flask run出錯信息如下:
renjg@renjg-HP-Compaq-Pro-6380-MT:~/WorkSpace/python/django$ env FLASK_APP=index.py flask run* Serving Flask app "index.py"* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: off Traceback (most recent call last):File "/usr/local/bin/flask", line 11, in <module>sys.exit(main())File "/usr/local/lib/python2.7/dist-packages/flask/cli.py", line 894, in maincli.main(args=args, prog_name=name)File "/usr/local/lib/python2.7/dist-packages/flask/cli.py", line 557, in mainreturn super(FlaskGroup, self).main(*args, **kwargs)File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 717, in mainrv = self.invoke(ctx)File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 1137, in invokereturn _process_result(sub_ctx.command.invoke(sub_ctx))File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 956, in invokereturn ctx.invoke(self.callback, **ctx.params)File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 555, in invokereturn callback(*args, **kwargs)File "/usr/local/lib/python2.7/dist-packages/click/decorators.py", line 64, in new_funcreturn ctx.invoke(f, obj, *args, **kwargs)File "/usr/local/lib/python2.7/dist-packages/click/core.py", line 555, in invokereturn callback(*args, **kwargs)File "/usr/local/lib/python2.7/dist-packages/flask/cli.py", line 771, in run_commandthreaded=with_threads, ssl_context=cert)File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 814, in run_simpleinner()File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 774, in innerfd=fd)File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 660, in make_serverpassthrough_errors, ssl_context, fd=fd)File "/usr/local/lib/python2.7/dist-packages/werkzeug/serving.py", line 577, in __init__self.address_family), handler)File "/usr/lib/python2.7/SocketServer.py", line 417, in __init__self.server_bind()File "/usr/lib/python2.7/BaseHTTPServer.py", line 108, in server_bindSocketServer.TCPServer.server_bind(self)File "/usr/lib/python2.7/SocketServer.py", line 431, in server_bindself.socket.bind(self.server_address)File "/usr/lib/python2.7/socket.py", line 228, in methreturn getattr(self._sock,name)(*args) socket.error: [Errno 98] Address already in use問題:
那么該怎么指定新的端口呢?又如何查看5000端口指定的位置呢?
源碼分析,首先clone github上的flask框架,然后直接grep命令查看5000的位置。
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' renjg@renjg-HP-Compaq-Pro-6380-MT:~/WorkSpace/python/django/flask$ grep 5000 * -nrw docs/patterns/appdispatch.rst:28: run_simple('localhost', 5000, application, use_reloader=True) docs/patterns/appdispatch.rst:48: run_simple('localhost', 5000, app, docs/config.rst:417: * Running on http://127.0.0.1:5000/ docs/config.rst:453: * Running on http://127.0.0.1:5000/ docs/quickstart.rst:51: * Running on http://127.0.0.1:5000/ docs/quickstart.rst:66: * Running on http://127.0.0.1:5000/ docs/quickstart.rst:72:Now head over to `http://127.0.0.1:5000/ <http://127.0.0.1:5000/>`_, and you docs/deploying/wsgi-standalone.rst:38: $ uwsgi --http 127.0.0.1:5000 --module myproject:app docs/deploying/wsgi-standalone.rst:55: http_server = WSGIServer(('', 5000), app) docs/server.rst:26:*http://localhost:5000/*. docs/cli.rst:97: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) docs/cli.rst:143: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) docs/tutorial/static.rst:58:Go to http://127.0.0.1:5000/auth/login and the page should look like the docs/tutorial/factory.rst:169: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) docs/tutorial/factory.rst:174:Visit http://127.0.0.1:5000/hello in a browser and you should see the docs/tutorial/templates.rst:174:then go to http://127.0.0.1:5000/auth/register. examples/javascript/README.rst:39:Open http://127.0.0.1:5000 in a browser. examples/tutorial/README.rst:62:Open http://127.0.0.1:5000 in a browser. <strong>flask/app.py:878: :param port: the port of the webserver. Defaults to ``5000`` or the flask/app.py:925: _port = 5000 flask/cli.py:738:@click.option('--port', '-p', default=5000,</strong> README.rst:43: * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) tests/test_basic.py:369: SERVER_NAME='localhost:5000', tests/test_basic.py:377: rv = client.get('/', 'http://localhost:5000/') tests/test_basic.py:385: SERVER_NAME='127.0.0.1:5000', tests/test_basic.py:393: rv = client.get('/', 'http://127.0.0.1:5000/') tests/test_basic.py:1448: SERVER_NAME='localhost.localdomain:5000' tests/test_basic.py:1463: rv = client.get('/', 'http://localhost.localdomain:5000') tests/test_basic.py:1466: rv = client.get('/', 'https://localhost.localdomain:5000') tests/test_reqctx.py:72: SERVER_NAME='localhost.localdomain:5000' tests/test_reqctx.py:85: 'http://localhost.localdomain:5000/' tests/test_reqctx.py:89: 'http://foo.localhost.localdomain:5000/' tests/test_reqctx.py:97: "('localhost.localdomain:5000') does not match the "可以看到在flask/app.py 以及cli.py中有指定。那么根據(jù)啟動命令flask run 實(shí)際上是啟動了一個http server,然后監(jiān)聽了一個本地端口,等待連接。那么看看是否有相應(yīng)的參數(shù)。
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:579817333 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和PDF電子書! ''' renjg@renjg-HP-Compaq-Pro-6380-MT:~/WorkSpace/python/django/flask$ flask --help Traceback (most recent call last):File "/usr/local/lib/python2.7/dist-packages/flask/cli.py", line 529, in list_commandsrv.update(info.load_app().cli.list_commands(ctx))File "/usr/local/lib/python2.7/dist-packages/flask/cli.py", line 384, in load_app'Could not locate a Flask application. You did not provide ' NoAppException: Could not locate a Flask application. You did not provide the "FLASK_APP" environment variable, and a "wsgi.py" or "app.py" module was not found in the current directory. Usage: flask [OPTIONS] COMMAND [ARGS]...A general utility script for Flask applications.Provides commands from Flask, extensions, and the application. Loads theapplication defined in the FLASK_APP environment variable, or from awsgi.py file. Setting the FLASK_ENV environment variable to 'development'will enable debug mode.$ export FLASK_APP=hello.py$ export FLASK_ENV=development$ flask runOptions:--version Show the flask version--help Show this message and exit.Commands:routes Show the routes for the app.run Runs a development server.shell Runs a shell in the app context. renjg@renjg-HP-Compaq-Pro-6380-MT:~/WorkSpace/python/django/flask$ flask run --help Usage: flask run [OPTIONS]Run a local development server.This server is for development purposes only. It does not provide thestability, security, or performance of production WSGI servers.The reloader and debugger are enabled by default if FLASK_ENV=developmentor FLASK_DEBUG=1.Options:-h, --host TEXT The interface to bind to.<strong> -p, --port INTEGER The port to bind to.</strong>--cert PATH Specify a certificate file to use HTTPS.--key FILE The key file to use when specifying acertificate.--reload / --no-reload Enable or disable the reloader. By defaultthe reloader is active if debug is enabled.--debugger / --no-debugger Enable or disable the debugger. By defaultthe debugger is active if debug is enabled.--eager-loading / --lazy-loaderEnable or disable eager loading. By defaulteager loading is enabled if the reloader isdisabled.--with-threads / --without-threadsEnable or disable multithreading.--help Show this message and exit.可以看到有-p這個參數(shù),是指定端口的,默認(rèn)是5000,那么嘗試修改一下。
renjg@renjg-HP-Compaq-Pro-6380-MT:~/WorkSpace/python/django$ env FLASK_APP=index.py flask run -p 5001* Serving Flask app "index.py"* Environment: productionWARNING: Do not use the development server in a production environment.Use a production WSGI server instead.* Debug mode: off* Running on http://127.0.0.1:5001/ (Press CTRL+C to quit)還一個5001的端口就成功了,由此可知,當(dāng)出現(xiàn)一個我們不知道該如何解決問題的時候,我們可以嘗試著自己分析源碼,得到想要的結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的python flask 如何修改默认端口号的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python flask route中装
- 下一篇: [python]函数默认参数顺序问题