처음 실행 시 플라스크: 프로덕션 환경에서 개발 서버를 사용하지 않음
PyCharm Community Edition에 Flask 플러그인을 설치했는데 플라스크 앱에 다음과 같은 간단한 코드가 있습니다.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '<h1>Hello!</h1>'
if __name__ == "__main__":
app.run(debug=True)
그리고 나는 다음과 같은 메시지를 받았습니다.
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead
* Restarting with stat
* Debugger is active!
* Debugger PIN: 123-456-789
* Running on http://127.0.0.1:5000/
플라스크를 실행할 때 이 오류가 발생하는 이유는 무엇입니까?
이전 버전의 메시지에는 "운영 환경에서 개발 서버를 사용하지 않음"이 표시되었습니다.
운영 환경에 응용 프로그램을 배포하는 경우 운영 WSGI 서버인 Waiste를 사용하는 것이 한 가지 방법입니다.
다음은 사용 예입니다.waitress
암호로
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<h1>Hello!</h1>"
if __name__ == "__main__":
from waitress import serve
serve(app, host="0.0.0.0", port=8080)
응용 프로그램 실행:
$ python hello.py
웨이트리스는 명령 줄 유틸리티도 제공합니다.waitress-serve
이를 사용하기 위해 코드를 다음과 같이 수정할 수 있습니다.
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
return "<h1>Hello!</h1>"
def create_app():
return app
그러면 우리는 사용할 수 있습니다.waitress-serve
다음과 같이 표시됩니다.
waitress-serve --port=8080 --call hello:create_app
그리고 BTW, 8080이 기본 포트입니다.
배포의 유효성을 확인하려면 별도의 창을 엽니다.
% curl localhost:8080
<h1>Hello!</h1>%
또는 브라우저에서 직접 http://localhost:8080/.
앱을 배포할 수 있는 다른 대안으로는 Gunicorn 및 uWSGI가 있습니다.자세한 내용은 플라스크 배포 문서를 참조하십시오.
Flask 2.2 이후 개발 서버는 항상 이 경고를 표시하므로 이 경고를 비활성화할 수 없습니다.개발 서버는 프로덕션에서 사용할 수 없습니다.특별히 효율적이거나 안정적이거나 안전하도록 설계되지 않았습니다.대신 프로덕션 WSGI 서버를 사용합니다.자세한 내용은 Flask의 배포 문서를 참조하십시오.
이 경고는 경고에 불과하지만 앱 실행을 방해하는 오류는 아닙니다.앱이 작동하지 않으면 코드에 다른 문제가 있습니다.
해당 경고는 Flask 자체가 아닌 개발 서버에 적용됩니다.Flask 프레임워크는 모든 유형의 애플리케이션 및 배포에 적합합니다.
gevent 시도:
from flask import Flask
from gevent.pywsgi import WSGIServer
app = Flask(__name__)
@app.route('/api', methods=['GET'])
def index():
return "Hello, World!"
if __name__ == '__main__':
# Debug/Development
# app.run(debug=True, host="0.0.0.0", port="5000")
# Production
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()
참고: pip 설치 gevent를 사용하여 gevent 설치
이러한 메시지를 방지하려면 CLI(명령줄 인터페이스)에서 다음 명령을 실행합니다.
export FLASK_APP=app.py
export FLASK_ENV=development
export FLASK_DEBUG=0
flask run
일부 사람들(앞의 저와 같은)의 경우 위의 답변이 작동하지 않으면 다음과 같은 답변이 작동할 것입니다(Mac 사용자의 경우). 플라스크 실행을 수행하려면 다음 명령을 입력하십시오.
$ export FLASK_APP=hello.py
$ export FLASK_ENV=development
$ flask run
또는 다음을 수행할 수 있습니다(나는 시도해 본 적이 없지만 한 리소스 온라인 대화).
$ export FLASK_APP=hello.py
$ python -m flask run
출처: 추가 정보
이것은 창에서 효과가 있었습니다.
$env:FLASK_APP="flask_project.py"
$env:FLASK_ENV="development"
flask run
flask_project.py는 가상 환경과 동일한 경로에 있습니다.
언급URL : https://stackoverflow.com/questions/51025893/flask-at-first-run-do-not-use-the-development-server-in-a-production-environmen
'programing' 카테고리의 다른 글
PostgreSQL을 사용하여 문자열을 정수로 캐스팅하고 캐스트에서 오류가 발생할 경우 0을 가지려면 어떻게 해야 합니까? (0) | 2023.07.11 |
---|---|
외부 CSS 파일을 참조하지 않고 WordPress PHP 파일에서 인라인 CSS를 만들려면 어떻게 해야 합니까? (0) | 2023.07.11 |
Python 파일을 가져올 때 대시를 사용해도 괜찮습니까? (0) | 2023.07.11 |
휴지 상태에서 사용되지 않는 다중 HiLoPerTableGenerator를 TableGenerator로 대체하는 방법 (0) | 2023.07.11 |
facet_wrap 레이블을 완전히 제거합니다. (0) | 2023.07.11 |