0
私はFlaskに初めて入って、URLのブラックリストを管理するGET、POST、DELETEルートを持つAPIを作成しようとしています。Flask POSTルートが応答しなくなる
POSTルートでは、「応答できませんでした」というエラーが表示されます。奇妙な部分は、私のGETとDELETEルートはまだ正常に動作しているということです。私はいくつかのログを取得しようとしましたが、多く取得することができませんでした。私は助けていただければ幸いです!ここで
は私のアプリである:ここでは
from flask import Flask, request
from flask_cors import CORS, cross_origin
from flask_restful import Resource, Api
import pickle
app = Flask(__name__)
app.config['DEBUG'] = True
CORS(app)
@app.route("/get-blacklist")
def loadblacklist():
blacklist = pickle.load(open("blacklist.p", "rb"))
return dumps(blacklist)
@app.route("/post-blacklist", methods=['POST'])
def puturl():
# Get and clean URL
url = request.form['url']
url = sanitise(url)
# Load the pickle
blacklist = list(pickle.load(open("blacklist.p", "rb")))
# Check if it's already in there
if url not in blacklist:
blacklist.append(url)
# Save the pickle
pickle.dump(blacklist, open("blacklist.p", "wb"))
return 'You posted {}'.format(url)
@app.route("/remove-blacklist", methods=['DELETE'])
def removeurl():
# Get and clean the URL
url = request.form['url']
url = sanitise(url)
# Load the pickle
blacklist = list(pickle.load(open("blacklist.p", "rb")))
# Remove if its in there
if url in blacklist:
blacklist.remove(url)
# Save the pickle
pickle.dump(blacklist, open("blacklist.p", "wb"))
return 'You removed {}'.format(url)
def sanitise(url):
# Sanitise
url = url.lower()
url = url.replace('www.', '')
url = url.replace('http://', '')
url = url.replace('https://', '')
if url[-1] == '/':
url = url[:-1]
return url
if __name__ == '__main__':
app.run()
は私の設定ファイルである:
import os
bind = '0.0.0.0:8000'
workers = 3
backlog = 2048
worker_class = "sync"
debug = False
proc_name = 'gunicorn.proc'
pidfile = './gunicorn.pid'
logfile = './debug.log'
loglevel = 'debug'
timeout = 1000
そして、ここでは、私は労働者を開始するために使用しているコマンドです:
gunicorn -c app.conf -w3 --certfile=/etc/letsencrypt/live/mtfmu4.tk/cert.pem --keyfile=/etc/letsencrypt/live/mtfmu4.tk/privkey.pem api:app
特にPOSTルートではこれが起こる原因となるものは何もないe。
私はvirtualenv、Flask、apache2とUbuntu 14.04のgunicornでPython 3を実行しています。
助けていただけたら幸いです!
どのようにデータを投稿していますか? curlやその他のPythonスクリプトを使用していますか? – jprockbelly
実際にjQueryのAjaxコールを使用してPOSTしています。私はこの問題を解決したかもしれないと感じていますが、もう一度クラッシュするかどうかを確認するのにもう12時間もかかります。それがうまくいくなら私の解決策を下に掲載します –