我无法在 pyhtonanywhere 上部署我的聊天机器人,即使它在本地工作

问题描述

不知何故,我可以在本地使用我的聊天机器人(使用 Python、Flask、Chatterbot、Django),但无法在 Pythonanywhere 上部署它。我的 HTML 和聊天框都不会出现。我多次将第 35 行的 FLASK_PORT 更改为 443、8080、8000,但没有帮助。我的部署代码如下:

提前感谢您的回答!

#! /usr/bin/python3
# -*- coding: utf-8 -*-

## Import python libraries
import random
import csv
import os
import pytz
import logging

from flask import Flask,render_template,request,jsonify
from chatterbot import ChatBot
from chatterbot.response_selection import get_random_response
from chatterbot.trainers import ChatterBotCorpusTrainer

from pytz import timezone
from datetime import datetime
from dateTime import getTime,getDate
from time import localtime,strftime
from time import time


## Initialize Flask for webapp
app = Flask(__name__)
application = Flask(__name__)


## Application settings
logging.basicConfig(level=logging.DEBUG)
currentPath = os.path.dirname(os.path.abspath(__file__)) # Current absolute file path
logging.debug("Current path: " + currentPath)


## Flask settings
FLASK_PORT = 80 # use 8080 for local setup

## Chatbot settings
useGoogle = "no" # Yes - Bei nicht wissen durchsucht der Bot google nach dem unbekannten Begriff und gibt einen Link. No - Google wird nicht zur Hilfe gezogen
confidenceLevel = 0.90 # Bot confidence level - Muss zwischen 0 und 1 liegen. Je höher der Wert,desto sicherer muss sich der Bot seiner Antwort sein


## Initialize dateTime util
now = datetime.now(pytz.timezone("Europe/Berlin"))
mm = str(now.month)
dd = str(now.day)
yyyy = str(now.year)
hour = str(now.hour)
minute = str(now.minute)
if now.minute < 10:
    minute = '0' + str(now.minute)
chatBotDate = strftime("%d.%m.%Y,%H:%M",localtime())
chatBotTime = strftime("%H:%M",localtime())


## Initialize ChatterBot
bot = ChatBot(
    "ChatBot",logic_adapters=[
        {
            'import_path': 'chatterbot.logic.BestMatch'
        },{
            'import_path': 'chatterbot.logic.LowConfidenceAdapter','threshold': confidenceLevel,'default_response': 'IDKresponse'
        }
    ],response_selection_method=get_random_response,#Art der Anwortauswahl -> random
    storage_adapter="chatterbot.storage.SQLStorageAdapter",database=currentPath + "/database/botData.sqlite3"
)

bot.read_only=True #Comment out um den Bot basierend auf Erfahrungen lernen zu lassen.
logging.info("Bot Learn Read Only:" + str(bot.read_only))

# Diesen Teil nach Deployment ausgrauen,um dauerhaftes Lernen zu vermeiden
bot.set_trainer(ChatterBotCorpusTrainer)
bot.train(
    "chatterbot.corpus.english.greetings","chatterbot.corpus.english.conversations",currentPath + "/data/dialogues.yml"
)

# ACHTUNG: Auskommentieren (Hashtag entfernen) wenn ganze Datenbank gelöscht werden soll
#bot.storage.drop()

## Google fallback if response == IDKresponse
def tryGoogle(myQuery):
    return "<br><br>Gerne kannst du die Hilfe meines Freundes Google in Anspruch nehmen: <a target='_blank' href='https://www.google.com/search?q=" + myQuery + "'>" + myQuery + "</a>"


## CSV writer
def writeCsv(filePath,data):
    with open(filePath,"a",newline="") as logfile:
        csvWriter = csv.writer(logfile,delimiter = ";")
        csvWriter.writerow(data)


## Flask route for Herbie
@application.route("/",methods = ['GET'])
def home_eva():
    return render_template("index.html")


## Flask route for getting bot responses
@application.route("/getResponse",methods = ['GET'])
def get_bot_response():

    userText = str(request.args.get('msg'))
    botReply = str(bot.get_response(userText))

    if botReply == "IDKresponse":
        if useGoogle == "yes":
            botReply = botReply + tryGoogle(userText)
    elif botReply == "getTIME":
        botReply = getTime()
    elif botReply == "getDATE":
        botReply = getDate()

    writeCsv(currentPath + "/log/botLog.csv",[userText,botReply])

    data = {
        'botReply' : botReply
    }
    return jsonify(data)


## Flask route for posting evaluation results
@application.route("/result",methods = ['POST'])
def send_result():
    datetime = request.form.get("datetime")
    answer1 = request.form.get("answer1")
    answer2 = request.form.get("answer2")
    answer3 = request.form.get("answer3")
    answer4 = request.form.get("answer4")
    answer5 = request.form.get("answer5")
    answer6 = request.form.get("answer6")

    writeCsv(currentPath + "/log/evaluationResult.csv",[datetime,answer1,answer2,answer3,answer4,answer5,answer6])

    return jsonify({'success':True},200,{'ContentType':'application/json'})

## Flask route for posting evaluation results
@application.route("/resultAlternate",methods = ['POST'])
def send_result_alternate():
    bot = request.form.get("bot")
    datetime = request.form.get("datetime")
    answer1 = request.form.get("answer1")
    answer2 = request.form.get("answer2")
    answer3 = request.form.get("answer3")
    answer4 = request.form.get("answer4")
    answer5 = request.form.get("answer5")
    answer6 = request.form.get("answer6")

    writeCsv(currentPath + "/log/evaluationResultAlternate.csv",[bot,datetime,{'ContentType':'application/json'})


## Flask route for posting feedback
@application.route("/feedback",methods = ['POST'])
def send_feedback():
    bot = request.form.get('bot')
    rating = request.form.get('rating')
    ux = request.form.get('ux')
    text = request.form.get('text')
    improvement = request.form.get('improve')

    writeCsv(currentPath + "/log/evaluationFeedback.csv",rating,ux,text,improvement])

    return jsonify({'success':True},{'ContentType':'application/json'})


## Flask route for posting email
@application.route("/email",methods = ['POST'])
def send_email():
    email = request.form.get("email")

    writeCsv(currentPath + "/log/evaluationEmail.csv",[email])

    return jsonify({'success':True},{'ContentType':'application/json'})


## Python Flask startup
if __name__ == "__main__":
    application.run(host='0.0.0.0',port=FLASK_PORT)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)