Приложение Python Flask для вывода текстового файла удаленного сервера на веб-сервер с помощью ajax и отображения на веб-странице, получив 404, не найден - PullRequest
0 голосов
/ 03 июля 2018

У меня есть веб-сервер (fedora с apache), на котором запущен мой веб-сайт, и в настоящее время я пытаюсь создать приложение Flask для приема вызовов AJAX из моего файла app.js, а затем, в конечном итоге, с помощью FTP получить содержимое удаленный текстовый файл для вывода обратно на сайт.

У меня проблемы с получением моих маршрутов, чтобы попасть в мое приложение Flask, когда я делаю AJAX-вызовы. Я полагаю, что знаю, в чем проблема, мои вызовы AJAX не выполняют вызов на порт 5000, поэтому я вижу ошибку 404 в консоли. Однако, когда я вручную делаю curl -X GET http://127.0.0.1:5000/index -d'test', я вижу правильную страницу index.html, возвращаемую как ожидалось.

Итак, мои вопросы: как обычно Flask настраивается на веб-сервере apache?

Вот мой AJAX-вызов Flask (app.py).

app.js:

$(function(){                // this call is returning 404 not found.
$('button').click(function(){
    $.ajax({
        url: '/index',    
        data: user,
        type: 'POST',
        success: function(response){
            console.log("Here is the success res: " + response + user);
        },
        error: function(error){
            console.log("Here is the error res: " + error + user);
        }
    });
});
});

И вот где моя функция Flask направляет мои звонки.

app.py:

from flask import Flask, request, send_file, render_template, json
from ftplib import FTP                                                                      

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'hello world!'

@app.route('/index', methods=['GET', 'POST'])
def index():
    return render_template('index.html')

if __name__ == "__main__":
    app.run()

Все процессы, прослушивающие порт 80:

# lsof -i:80
COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
/opt/lamp  3179 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp  6833 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp  7665   root    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp  7909 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp  7919 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 10892 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 11676 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 11843 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 12345 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 12755 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 20204 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)

1 Ответ

0 голосов
/ 03 июля 2018

На этой странице подробно описаны параметры развертывания.

Большая разница между Flask (и приложениями python в целом) заключается в том, что PHP в своей основе является системой шаблонов. Каждый файл PHP для вашего веб-сервера является просто файлом HTML. Помните, что PHP - это гипертекстовый процессор по своему определению.

Веб-приложения Python, с другой стороны, - это приложения, которые запускаются на вашем сервере и готовы обрабатывать запросы и возвращать html. По сути, вам нужно иметь возможность, с одной стороны, запускать приложение python, а с другой - обрабатывать запросы из внешнего мира и возвращать веб-страницы.

На вашей установке с уже установленным и работающим Apache я бы использовал mod_wsgi / Apache . При этом используется интерфейс шлюза веб-сервера Python , который обеспечивает связь между запущенным приложением и Apache.

Вы также можете использовать Gunicorn , но если вы уже знакомы с Apache, mod_wsgi, вероятно, лучше.

Стоит отметить, что вы должны развертывать свое приложение только после того, как закончите тестирование, поскольку отладка не будет работать в любой среде разветвления (помимо огромного риска для безопасности, если это возможно). Если ваша проблема связана с портом для локального тестирования, измените:

app.run()

до:

app.run('localhost', port='80', debug=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...