ImportError: невозможно импортировать имя 'request' из 'flask' при обслуживании приложения flask через apache2 и wsgi на виртуальной машине - PullRequest
0 голосов
/ 09 января 2020

Итак, я развернул свое приложение flask на моей linux виртуальной машине Debian и обслужил его через wsgi и apache2 (lynx serverIpAdress / mailService).

Моя проблема:

При запуске приложение, использующее команду python mailService.py, работает нормально, но когда я пытаюсь получить к нему доступ через apache2, я получаю следующую ошибку:

[wsgi:error] [pid 8771:tid 139918835648256] [client 192.168.1.50:37344]   File "/var/www/Bulma/MailService/mailService.wsgi", line 5, in <module>
[wsgi:error] [pid 8771:tid 139918835648256] [client 192.168.1.50:37344]     from mailService import app as application
[[wsgi:error] [client 192.168.1.50:37344]   File "/var/www/Bulma/MailService/mailService.py", line 2, in <module>
[Thu Jan 09 08:45:42.595785 2020] [wsgi:error] [pid 8771:tid 139918835648256] [client 192.168.1.50:37344]     from flask import request, jsonify,json
[Thu Jan 09 08:45:42.595839 2020] [wsgi:error] [pid 8771:tid 139918835648256] [client 192.168.1.50:37344] ImportError: cannot import name 'request' from 'flask' (unknown location)
[Thu Jan 09 08:53:41.179747 2020] [wsgi:error] [pid 8771:tid 139918877611776] [client 192.168.1.50:37366] mod_wsgi (pid=8771): Failed to exec Python script file '/var/www/Bulma/Mai$

my mailService.py:

import flask
from flask import request,json
import smtplib

app = flask.Flask(__name__)
app.config["DEBUG"] = True

@app.route('/api/v1/resources/mailFactory',methods=['POST'])
def mailFactory():

    Json = request.get_json()
    Application = Json['Application']
    context = int(Application)
    switcher = {
        0: themisMailService
    }
    if Application:
        func = switcher.get(context)
        return func(Json)


def themisMailService(Json):
    sender_email = "test@gmail.com"
    receiver_email = "test@gmail.com"
    message = """From: From Person <from@fromdomain.com>
        To: To Person <to@todomain.com>
        Subject: SMTP e-mail test

        This is a test e-mail message.
        """

    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()

    # Login Credentials for sending the mail
    server.login(sender_email, "gjwvttjphdrhivoo") #app password inserted

    server.sendmail(sender_email, receiver_email, message)
    server.quit()       
    print ("Successfully sent email")


#app.run(host= '0.0.0.0')

Дополнительно Информация:

  1. Я установил flask -env в своем рабочем каталоге, хотя не уверен, что это необходимо.
  2. Я уже пытался запустить команду pip install flask , запрос установки pip.
  3. Версия PIP - это pip 18.1 из /usr/lib/python2.7/dist-packages/pip (python 2.7)
  4. Flask версия Flask 1.1.1
  5. App.run () был прокомментирован моим приложением, поскольку, насколько я понимаю, он больше не нужен, поскольку wsgi уже обслуживает приложение.

Спасибо за помощь!

1 Ответ

0 голосов
/ 09 января 2020

Если вы хотите получать данные, передаваемые вашим сервером, вы можете просто сделать такую ​​вещь:

@app.route('/')
def hello():
    if request.method == 'GET':
         return 'It is HTTP get!'

Вам не нужно импортировать «запрос». Существует также пакет запросов, но я думаю, что вы не собираетесь его использовать (он предназначен для отправки запросов python):)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...