使用Apache时,Flask无法找到应用程序路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Apache时,Flask无法找到应用程序路径相关的知识,希望对你有一定的参考价值。

我正在尝试运行一个python脚本,它接收在javascript中收集的数据,在python中处理它,然后将其插入到数据库中。我在Apache上运行网页,我知道insertEngagement()函数可以连接到我的数据库。

但是,当我使用以下AJAX请求将数据发送到python文件时,app.run()会启动,但永远不会进入insertNewData()函数。我猜这与我正在使用的路径有关?任何帮助,将不胜感激!

这是我在/home/webpage/script.js中的AJAX请求:

$.ajax({
        url: "/home/pythonScripts/processdata.cgi/process",
        data: { employeeText: input1, customerText: input2, chatData: otherData},
        type: "POST",
        success: callbackFunc
    });

然后我的python在/home/pythonScripts/processdata.cgi中:

#!C:path	opythonPython37python.exe

import sys
import getopt
import cgi
import cgitb; cgitb.enable()
import mysql.connector as conn
#insertdata is another file with functions in it
import insertdata

from flask import Flask, render_template, redirect, url_for,request
from flask import make_response
app = Flask(__name__)

def htmlTop():
    print("""Content-type:text/html


            <!DOCTYPE html>
            <html lang="en">
                <head>
                    <meta charset="utf-8"/>
                    <title>My server-side template</title>
                </head>
                <body>""")

def htmlTail():
    print("""</body>
        </html>""")


@app.route("/home/pythonScripts/processdata.cgi/process", methods=['GET','POST'])
def insertNewData():
    print ("Started insert new data")
    if request.method == 'POST':
        print ("Inside conditional")
        employeeText = request.form['employeeText']
        customerText = request.form['customerText']
        chatData = request.form['chatData']

        # ... use data from request 

        return "Success"
    else:
      return "Error"

if __name__ == "__main__":
  try:
      htmlTop()
      app.run(debug=True)
      htmlTail()
  except:
      cgi.print_exception()

我也在使用.cgi,因为我无法配置Apache来运行python脚本而不是只返回文本文件。

答案

作为替代答案,如果这不是生产并且你正在使用Ubuntu系统,我设法在几天内运行Flask应用程序。

这是我所遵循的教程的链接;

https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-16-04

我知道它没有回答你的问题,但我发现它第一次有用,它没有任何问题,使用表格,请求API数据和使用Jinja模板引擎打印。

您还可以使用大量其他开发的插件进行用户管理和登录,身份验证,但最好的部分是,您可以使用Python执行的任何操作都可以通过基于Web的应用程序进行订购,因此当您了解它是如何进行的所有的作品,你做的很少。

在回答这个问题时,我个人使用了Gunicorn,并使用nginx作为反向代理。但是没有理由说Apache不能在我知道的那个阵容中替代Nginx。

以上是关于使用Apache时,Flask无法找到应用程序路径的主要内容,如果未能解决你的问题,请参考以下文章

Apache托管Flask无法看到Docker环境变量。

目标 WSGI 脚本无法作为 Python module.Flask.Apache 加载

nginx+gunicorn+flask部属web时,使用nginx如何指定多个静态文件路径

在 Flask render_template 期间未使用相对路径找到 Javascript 文件 [重复]

Flask-SqlAlchemy - 与列''关联的外键无法找到表

apache flask sqlite 无法在 ubuntu 上打开数据库文件