Моя проблема
Я получаю 404 для всех маршрутов, мой api флешки работает, и когда я его запускаю, api получает запрос и регистрирует его, но он дает статус 404 http для каждогозапрос;shell
127.0.0.1 - - [17/Dec/2018 16:49:12] "GET /api/ping/ HTTP/1.1" 404 -
127.0.0.1 - - [17/Dec/2018 16:50:10] "POST /api/blur/ HTTP/1.1" 404 -
Мой код
У меня есть класс Server
, этот класс сервера получает Flask app
и запускает его:
from jsonmerge import merge
class Server():
def __init__(self, app):
self.__app = app
self.__config = #snip
#snip
def start(self, options=None):
#snip
self.__app.run(debug=self.__config["debug"],
port=self.__config["server"]["port"], host=self.__config["server"]["ip"])
, и у меня естьмой run.py, который запускает мою заявку:
if __name__ == '__main__':
srv = Server(app)
srv.start(config)
, когда я печатаю мои self.__app
сведения, мой вывод:
<Flask 'appfly.app'>
<Config {'ENV': 'production', 'DEBUG': False, 'TESTING': False, 'PROPAGATE_EXCEPTIONS': None, 'PRESERVE_CONTEXT_ON_EXCEPTION': None, 'SECRET_KEY': None, 'PERMANENT_SESSION_LIFETIME': datetime.timedelta(days=31), 'USE_X_SENDFILE': False, 'SERVER_NAME': None, 'APPLICATION_ROOT': '/', 'SESSION_COOKIE_NAME': 'session', 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_COOKIE_SAMESITE': None, 'SESSION_REFRESH_EACH_REQUEST': True, 'MAX_CONTENT_LENGTH': None, 'SEND_FILE_MAX_AGE_DEFAULT': datetime.timedelta(seconds=43200), 'TRAP_BAD_REQUEST_ERRORS': None, 'TRAP_HTTP_EXCEPTIONS': False, 'EXPLAIN_TEMPLATE_LOADING': False, 'PREFERRED_URL_SCHEME': 'http', 'JSON_AS_ASCII': True, 'JSON_SORT_KEYS':True, 'JSONIFY_PRETTYPRINT_REGULAR': False, 'JSONIFY_MIMETYPE': 'application/json', 'TEMPLATES_AUTO_RELOAD': None, 'MAX_COOKIE_SIZE': 4093}>
Map([<Rule '/api/ping' (GET, HEAD, OPTIONS) -> ping>,
<Rule '/api/blur' (POST, OPTIONS) -> blur>,
<Rule '/static/<filename>' (GET, HEAD, OPTIONS) -> static>])
посмотрите, мой url_map
перечислит все мои маршрутыесть маршрут api/ping
и маршрут api/blur
.
Мои решения по устранению неполадок
многие ответы в стеке потока говорят об изменении конфигурации ["имя_сервера"], но это не работает, я уже пробовалустановите SERVER_NAME на 0.0.0.0:9000,localhost:9000, 127.0.0.1:9000
Я создаю учебник по фляге для проверки SERVER_NAME, и он отсутствует
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == '__main__':
print(app.config["SERVER_NAME"])
#app.run(...)
> None
Я попытался установить Flask ENV
на development
, но он работает так:
self.__app.config["ENV"]='development'
как это работает до
Я всегда использовал Flask таким образом ивсегда работал нормально:
---> app.py
from flask import Flask
app = Flask(__name__)
# Routes files
from app.presentation.routes import ping
from app.presentation.routes import rg as rg_scan
# Routes rules
app.add_url_rule('/api/ping', 'Ping', ping.route, methods=['GET'])
app.add_url_rule('/api/rg', 'RG', rg_scan.route, methods=['POST'])
print('API is running...')
---> run.py
from app import app
if __name__ == '__main__':
app.run(debug=True, port=9000, host='0.0.0.0')
но теперь я хочу сделать это вПо-другому, я хочу использовать свой класс сервера, чтобы запустить API фляги.
Среда
- Версия Python: 3.7.0
- Версия Flask: 1.0.2
- Версия ОС: Manjaro Linux 18.0.0-rc