Существует много причин, но, возможно, наиболее важным является то, что эти функции поощряют небезопасные методы программирования, поскольку они не поддерживают подготовленные заявления. Подготовленные утверждения помогают предотвратить атаки SQL-инъекций.
При использовании функций mysql_*
вы должны помнить, чтобы запускать параметры, заданные пользователем, через mysql_real_escape_string()
. Если вы забудете только в одном месте или если вам удастся избежать только части входа, ваша база данных может подвергаться атаке.
Использование подготовленных операторов в PDO
или mysqli
сделает так, чтобы эти типы ошибок программирования сложнее сделать.
Текущий рекомендуемый способ (Flask> = 0.11) связан с утилитой командной строки flask
.
http://flask.pocoo.org/docs/0.11/server/
Пример:
$ export FLASK_APP=main.py
$ export FLASK_DEBUG=1
$ python -m flask run
или в одной команде:
$ FLASK_APP=main.py FLASK_DEBUG=1 python -m flask run
Я предпочитаю python -m flask run
, а не flask run
, потому что предыдущий также работает с virtualenv
.
Если вам нужен другой порт, чем по умолчанию (5000
), добавьте опцию --port
.
Пример:
$ python -m flask run --port 8080
Дополнительные опции доступны с помощью:
$ python -m flask run --help
Чтобы достичь этого в PyCharm, установите раздел «Переменные среды» в:
PYTHONUNBUFFERED = 1; FLASK_DEBUG = 1
Для конфигураций запуска / отладки флажков
Отладчик werkzeug уже имеет функцию автоматического перезапуска, которая может быть включена, выполнив одно из следующих действий:
app.run(debug=True)
или
app.debug = True
Вы также можете использовать отдельный файл конфигурации для управления всеми вашими настройками, если вам нужно. Например, я использую параметр «settings.py» с опцией «DEBUG = True».
Лично я выбрал Nginx + uWSGI более, чем когда-либо.
app.config.from_object('application.settings')
Однако это не подходит для рабочей среды. Apache + mod_wsgi по нескольким причинам производительности, а также параметры конфигурации. Параметр touch-reload позволяет указать файл / папку, которая заставит приложение uWSGI перезагрузить недавно развернутое фляжное приложение.
Например, ваш скрипт обновления вытаскивает ваш новый изменяется вниз и затрагивает файл reload_me.txt. Очевидно, что ваш скрипт uWSGI ini (который поддерживается Supervisord) имеет эту строку где-то:
touch-reload = '/opt/virtual_environments/application/reload_me.txt'
Надеюсь, это поможет!
Если вы используете uwsgi, посмотрите на параметр автоматической перезагрузки python:
uwsgi --py-autoreload 1
Пример uwsgi-dev-example.ini:
[uwsgi]
socket = 127.0.0.1:5000
master = true
virtualenv = /Users/xxxx/.virtualenvs/sites_env
chdir = /Users/xxx/site_root
module = site_module:register_debug_server()
callable = app
uid = myuser
chmod-socket = 660
log-date = true
workers = 1
py-autoreload = 1
site_root / __ init__ .py
def register_debug_server():
from werkzeug.debug import DebuggedApplication
app = Flask(__name__)
app.debug = True
app = DebuggedApplication(app, evalex=True)
return app
Затем запустите:
uwsgi --ini uwsgi-dev-example.ini
Примечание: этот пример также позволяет отладчику.
Я пошел по этому маршруту, чтобы имитировать производство как близко насколько это возможно, с настройкой nginx. Просто запустив приложение для флэков, он встроен в веб-сервер за nginx, это приведет к ошибке с плохим шлюзом.
Если вы говорите о средах тестирования / dev, просто используйте опцию debug. Он будет автоматически перезагружать флеш-приложение, когда произойдет смена кода.
app.run(debug=True)
Или, из оболочки:
$ export FLASK_DEBUG=1
$ flask run
http: //flask.pocoo .org / Docs / Быстрый старт / # отладочный режим