From 88ae291fad8606bf4441efce29546febf0b967d8 Mon Sep 17 00:00:00 2001 From: RainSun Date: Wed, 5 Aug 2020 00:28:01 +0800 Subject: [PATCH] finish v1 --- shortUrl.py => curl.py | 26 +++++++++++++++++++++----- go.sh | 3 +++ gunicorn.conf.py | 8 ++++++++ lib/db.py | 4 ++-- lib/functions.py | 6 +++--- static/favicon.ico | Bin 0 -> 4286 bytes 6 files changed, 37 insertions(+), 10 deletions(-) rename shortUrl.py => curl.py (56%) create mode 100644 go.sh create mode 100644 gunicorn.conf.py create mode 100644 static/favicon.ico diff --git a/shortUrl.py b/curl.py similarity index 56% rename from shortUrl.py rename to curl.py index d9ded1f..b12fb87 100644 --- a/shortUrl.py +++ b/curl.py @@ -1,23 +1,36 @@ from flask import Flask, escape, url_for, request, render_template, redirect, abort, send_from_directory from lib.functions import manageInsert, manageRequest - +import os app = Flask(__name__) -if __name__ == '__main__': - app.run(host="0.0.0.0", debug=True, port="80") +# 引入跨域访问处理模块 +from flask_cors import CORS +# 取消跨域访问限制,方便本地测试 注册CORS, "/*" 允许访问所有api +CORS(app, resources=r'/*') + +@app.route('/') +def base(): + return 'Hello! Glad to serve you.' @app.route('/insert',methods=['POST']) def insert(): return manageInsert(request) +# 图标 +@app.route('/favicon.ico') +def favicon(): + return send_from_directory(os.path.join(app.root_path, 'static'),'favicon.ico', mimetype='image/vnd.microsoft.icon') + + @app.route('/') def tail(tail): res = manageRequest(tail) + print(res[0]) if(res[-1] != 200): abort(res[-1]) else: - redirect(res[0]) + return redirect(res[0]) @app.errorhandler(404) @@ -34,4 +47,7 @@ def page_not_found(e): @app.errorhandler(410) def page_not_found(e): - return render_template('410.html'), 500 \ No newline at end of file + return render_template('410.html'), 500 + +if __name__ == '__main__': + app.run(host="0.0.0.0", debug=True, port="80") \ No newline at end of file diff --git a/go.sh b/go.sh new file mode 100644 index 0000000..4299dbb --- /dev/null +++ b/go.sh @@ -0,0 +1,3 @@ +#!/bin/sh +echo start +gunicorn curl:app -c gunicorn.conf.py \ No newline at end of file diff --git a/gunicorn.conf.py b/gunicorn.conf.py new file mode 100644 index 0000000..80f8002 --- /dev/null +++ b/gunicorn.conf.py @@ -0,0 +1,8 @@ +# 并行工作线程数 +workers = 4 +bind = '0.0.0.0:80' +daemon = True +timeout = 120 +accesslog = './logs/acess.log' +errorlog = './logs/error.log' +autostart = True \ No newline at end of file diff --git a/lib/db.py b/lib/db.py index 0224228..ca9c823 100644 --- a/lib/db.py +++ b/lib/db.py @@ -3,8 +3,8 @@ from pymongo import MongoClient # 获取数据集 def col(): # 链接数据库 - conn = MongoClient('mongodb://surl:jV9cL0eW6mX4@mongo:27017/surl') - return conn.surl['surl'] + conn = MongoClient('mongodb://curl:jV9cL0eW6mX4@mongo:27017/curl') + return conn.curl['curl'] # 通过尾缀获取源地址 def getUrlByTail(tail): diff --git a/lib/functions.py b/lib/functions.py index 291d131..13029b6 100644 --- a/lib/functions.py +++ b/lib/functions.py @@ -11,7 +11,7 @@ def manageInsert(request): except Exception as e: print(e) return '数据不合法', 400 - url = data.url + url = data['url'] tail_res = getTailByUrl(url) # 如果存在对应尾缀或者数据库查询失败就直接返回 if tail_res[-1] != 102: @@ -35,9 +35,9 @@ def manageInsert(request): # 访问链接进行跳转 def manageRequest(tail): - if(str(tail).length != 5): + if(len(str(tail)) != 5): return ('参数错误', 400) url_res = getUrlByTail(tail) if(url_res[-1] != 200): return ('无该链接', 404) - return url_res[0], 200 + return url_res[0]['url'], 200 diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..aea43042b2ea9540d28d4588f0adad352a85b8ea GIT binary patch literal 4286 zcmeHJe@v8R9DgF#7<0sGg94IEsf;@A{81puouX~r0V*7k0Y+jjXJy8cXcn?aLgR;X zENqreAY^f)!NP%-GB=b4L<8r{S~00sF5mZryL;c`&inRxPLChQZE?VV@vzT5@B6&Z z_w)IDzt8vXg|U0^r%*8d$r^(h3t@~c1F*!_0(^a8EL31VD$vw!_X8rDI_#^A9S#i; zhx^BYfcfC}#$i0`VBpsqJM7Jv1!$5dur4=sIJ)60AJ>82cxJl>zFo$4`!r2Y4-Mbg z=}4`OJ~<|LDs|$#d4NuavE4D|spr10Z?RMEUNfys6=`|O9jNqz86K*EpxNdV1(@eek9Wo_ubJF@e8b{(Qx9Pde5tj#Ll6Z7-F1}nN)-OgU z9@poMP{K5spO^gE~S(dNjgzvzfb68US< zr=i{~Fb(vLXPng4Pqd?GD!2Qr;|!zptieK6CyA~N5!EzK)FCdz%)bN8=p&!B-J4PW za~FCXbmD8G=Cef4zdGH+Gijr=ufj?n9C6b2_lfqF^Ex;wb*GKzejVCjZa!aU#Ad!- zVy1>RC$*j+=t`P^kx1;YOeARrqO;RY^q!b>f z(uuqWKQF4X&?$H@yfvY(-Rhv_skiXm67{N$*q0zf(-y_=!5sj- zbf6dgyv(zwuNn2$9~X#=M*KUN1EHM)WHG_! z&%=~DAs#yQ-Y8HH4Qk&w`I&0i3Vmyo>bIHqKWe9jc7gJ=ya?JH3O6V6djlGUAs0*i zL%I$G1NZS~F?x}~S2H|pc&g3J5I^t#kKi4|&)~`vttWoicGW1neyxQzU#>GR{l2{Z z$=qMIK>v&?Nr1L>5%ja%p65D)D;~9Q*FRO9sDcwQfX&cPuW;l&q2q--5>u7{rs77&1N6?g8)5zq=$ALc;LYcB@FigKp-$1 z%7vK!c?HPZ7`mUR^Im`v4YB=zmWuC!VV=N#tP>T#i+vK2T{;hdQ6w^{h~!8h9M|A8 I;o8gi7gK?^d;kCd literal 0 HcmV?d00001