选择Flask+MongoDB已毕基于REST的接口容易操作宗教活动

style=”font-size: 18pt;”>目录

style=”font-size: 14pt;”>前言

style=”font-size: 14pt;”>1
准备工作

style=”font-size: 14pt;”>2
具体已毕

来自:活动盒子

 

作者:等待八戒

 

新近,“蓝瘦,香菇”梗已经化为互连网营销人士借势梗了,相信大家也深藏了成千上万蓝瘦香菇的表情包了啊。


用作频频和app活动打交道的一只活动运营,也来借着那些话题,说说我从蓝瘦香菇引发的盘算:app促活活动应当如何做?

前言

近期在捣鼓如何运用阿里云服务器搭建一个简练的基于Flask框架的后端接口,刚开始为了图便宜,就直接买了一个Windows
Server 2008系统服务器,那也埋下了不小的坑。

 

劳动买下来后,会给你一个公网IP和内网IP,由于是第二回学习搭建后端接口,对于什么正确行使阿里云服务器,来拍卖好公网IP和内网IP之间的关联埋下了不小的坑,真是对应的一句话:技术的成才往往是一步一个坑。

 

上边简单说一下搭建Flask服务器端碰到的标题:

先是,Flask自带了一个服务器,直接使用很有利,然而那一个服务器的习性太低,不过对于调试和上学或者绰绰有余。刚初步把代码放到阿里云服务器上,并跑通后,测试接口时公网IP不可能访问,那时我以为是Flask自带服务器的难点,即因为Flask自带服务器原因导致无法运用公网IP访问。

 

那就是说,难题应运而生了,就要物色解决办法吧,网上检索资料提交参照意见:使用nginx
+gunicorn来布署Flask相关服务,可以制止公网IP无法访问难题。然后,我就去找材料,安装gunicorn,结果运行测试时间接报错,最后发现gunicorn不协理Windows系统,那也太坑了,早领会我即刻买服务器时就不应该图方便,直接买一个基于Linux的连串了。

 

现在,新的题目又来了,既然不可以利用nginx
+gunicorn来布局Flask相关服务,那就要选取其它方法来解决吗,网上资料参照结果:使用tornado。好,那么自己又来查阅学习tornado安插应用开发文档,根据支付文档布署完毕后,在服务器上跑通后,发现依然不可以应用公网IP举办接口访问和测试。

 

到了那里,就让我反省,这么些难道真是Flask安顿应用服务器难点呢?后来,就在网上找到了一篇关于阿里云公网IP不可能访问难点的篇章,发现那些要求自己去阿里云官网上去配置安装。

 

即以上遇到的题材,压根就不是Flask布置服务器难点,是上下一心并未搞通晓阿里云服务器怎么着使用的题材……

 

具体布署安装形式见:阿里云服务器 ECS 访问不了公网 ip 可能的原因及解决办法

附:

 宗教活动 1

 

 


1、采纳流行的移位样式

1 准备干活

导入Flask及连锁扩张:

pip
install flask

pip
install flask-pymongo

pip
install
tornado(此处可选可不选。假如不选取,直接使用Flask自带的服务器安插即可;即使接纳,可以选拔tornado安插)

 

MongoDB数据库绑定服务ip地址设置(PS:要是不开展下述设置,默许ip为本机127.0.0.1地方):

打开CMD,进入MongoDB安装的bin文件夹下,例如我的安装目录为:C:\Program
Files\MongoDB\Server\3.2\bin

然后在CMD中输入mongod.exe
–bind_ip yourIPadress

其间参数–bind_ip意思:绑定服务IP,若绑定127.0.0.1,则只好本机访问,不指定默许本地所有IP。(注意:其中yourIPadress填写自己搭建服务器的内网ip地址)

现实如下图:

 宗教活动 2

宗教活动 3

 

打开Flask自带的服务器,一般拔取app.run(),其中一般选拔如下七个参数:host(指定ip地址,假如不填写,默许为127.0.0.1)、port(指定使用的端口,即使不点名,默许为5000端口)、debug(开启调试形式,默许值为Flase,即不开启调试格局,如要开启则能够安装为True)。

 

一经在服务器上搭建Flask接口相关服务,设置其中host=’0.0.0.0’表示在公网ip下的同一个局域网段所有ip都可以访问那一个服务,若是把host指定为其中一个内网ip地址,则那个局域网下所有用户可以由此走访这几个指定的ip地址访问Flask服务。

 

前边介绍可以稍微看看,也一定于是询问一下nginx
+gunicorn以及tornado的基本概念。也可以忽略,直接查看2
具体完结

 

接纳nginx
+gunicorn来布置Flask相关服务,即不使用Flask自带的服务器。

 

观察地点的配置情势,作为初学者,不免会有新的疑问,什么是nginx和gunicorn呢?

本身要好也是新接触的,查看了一晃网上资料,大约通晓了瞬间。

 

什么是nginx呢?

摘要自百度百科(https://baike.baidu.com/item/nginx/3817705?fr=aladdin)的一段解释:Nginx是一款[轻量级](https://baike.baidu.com/item/%E8%BD%BB%E9%87%8F%E7%BA%A7/10002835)的[Web](https://baike.baidu.com/item/Web/150564) 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like
协议下发行。其特点是占据内存少,并发能力强,事实上nginx的面世能力确实在同品种的网页服务器中表现较好,中国次大陆使用nginx网站用户有:百度、京东、天涯论坛、和讯、腾讯、Taobao等。

 

什么是gunicorn呢?

摘要自网上两遍文章(http://www.pythontip.com/blog/post/5155/)一段解释:Gunicorn“绿色独角兽”是一个被广泛使用的高性能的Python
WSGI UNIX HTTP服务器,移植自Ruby的独角兽(Unicorn )项目,使用pre-fork
worker形式,具有应用非凡简单,轻量级的资源消耗,以及高质量等特点。

Gunicorn
服务器作为wsgi
app的器皿,可以与各样Web框架包容(flask,django等),得益于gevent等技能,使用Gunicorn可以在基本不转移wsgi
app代码的前提下,大幅度升高wsgi app的品质。

 

看来地点的解决办法,试着搭建安装,发现gunicorn不辅助Windows系统,坑啊,早驾驭这么就买一个Linux服务器。

接纳gunicorn报错新闻:

Traceback (most recent call last):

  File "d:\program files (x86)\python27\Lib\runpy.py", line 174, in _run_module_as_main

    "__main__", fname, loader, pkg_name)

  File "d:\program files (x86)\python27\Lib\runpy.py", line 72, in _run_code

    exec code in run_globals

  File "E:\WorkPlace\Git_python\liu_demo\venv\Scripts\gunicorn.exe\__main__.py", line 5, in <module>

  File "e:\workplace\git_python\liu_demo\venv\lib\site-packages\gunicorn\app\wsgiapp.py", line 10, in <module>

    from gunicorn.app.base import Application

  File "e:\workplace\git_python\liu_demo\venv\lib\site-packages\gunicorn\app\base.py", line 12, in <module>

    from gunicorn import util

  File "e:\workplace\git_python\liu_demo\venv\lib\site-packages\gunicorn\util.py", line 9, in <module>

    import fcntl

ImportError: No module named fcntl

 

 宗教活动 4

 

然则我的服务器依然是Windows版本,Flask服务器环境如故要搭建,那么得使用什么方案吗?

此处推荐使用tornado。

那么怎么着是tornado呢?

摘抄至网上一篇小说http://www.tornadoweb.cn/)介绍:Tornado 是 FriendFeed 使用的可增添的非阻塞式
web 服务器及其有关工具的开源版本。那几个 Web
框架看起来有点像 web.py 或者 Google 的
webapp
,不过为了能有效使用非阻塞式服务器环境,那么些Web 框架还包涵了有的唇亡齿寒的卓有成效工具 和优化。

Tornado
和现行的主流 Web 服务器框架(包涵半数以上 Python
的框架)有着明确的不相同:它是非阻塞式服务器,而且速度卓殊快。得利于其
非阻塞的措施和对 epoll 的施用,Tornado
每秒可以处理数以千计的接连,那象征对于实时 Web 服务来说,Tornado
是一个优秀的 Web 框架。大家付出这几个 Web 服务器的严重性目标就是为了处理
FriendFeed 的实时功用 ——在 FriendFeed
的利用里每一个活动用户都会维持着一个服务器连接。(关于怎么着扩容
服务器,以拍卖数以千计的客户端的连接的难点,请参阅 C10K
problem
。)

 

至于具体怎么使用,可以查看下面小说介绍,也得以瞻仰下文的切切实实使用代码。

 

 


一个时期有一个期间的风尚,跟天天尚风尚做运营不会错得太不可靠。蓝瘦香菇视频是由此可以变成热门话题,和其应用的眼前最受欢迎的短摄像方式是脱不了关系的。近年来的短摄像因其制作传播门槛低而惨遭网友欢迎。蓝瘦香菇短摄像一出来,不管您是大腕仍旧常常网友,都可以效仿和中转,大大升高了视频的传播范围。

2 具体贯彻

见到下边具体落实代码,会让我们感慨,Python的确是一个美丽的语言,Flask框架也确实是对应小而又轻量级的框架美称呀。使用MongoDB数据库,操作数据库也变得极为简略。

 

在看上面代码此前,要求简单说一下REST的主干考虑原理,也相当于是自个儿要好越发加深印象吧。上边解释应用自阮一峰博客的一个说长道短,我觉得那样讲述的很合理。

 

REST三个主题条件:
1.使用HTTP动词:GET
POST PUT DELETE;
2.无状态连接,服务器端不应保存过多上下文状态,即每个请求都是独立的;
3.为各类资源设置URI;
4.透过XML
JSON举行数据传递;
完成上述条件的架构即可称为RESTFul架构。
1.网络环境下,任何利用的架构和API可以被高效明白;
2.分布式环境下,任何请求都足以被发送到任意服务器;
3.异构环境下,任何资源的访问和使用方法都合并;

 

观望下边介绍,既然说了REST格局使用HTTP动词GET
POST PUT DELETE来完毕相关操作。

那就是说下边代码就概括完结一下这三个动词的具体操作作用。

GET:落成从服务器后台获取数据功用,例如登陆接口功用完成;

POST:完结向服务器后台提交数据功用,例如登记接口功用落成;

PUT:完毕修改服务器后台已有数量成效;

DELETE:达成删除服务器后台已有数据功用。

 

看完下面介绍,上边就请看代码:

即使不利用tornado,直接采纳上边一个mongo.py文件中代码即可兑现本文标题所述功效:

#coding=utf-8
#mongo.py
from flask import Flask,abort
from flask import jsonify
from flask import request
from flask_pymongo import PyMongo


app = Flask(__name__)

app.config['MONGO_DBNAME'] = 'rest'
app.config['MONGO_URI'] = 'mongodb://172.18.252.20:27017/rest'  #如果部署在本上,其中ip地址可填127.0.0.1

mongo = PyMongo(app)

@app.route('/login', methods=['GET'])
def get_all_users():
  star = mongo.db.userInfo.find()
  output = []
  for s in star:
    output.append({'name' : s['name'], 'pwd' : s['pwd']})
  return jsonify({'result' : output})


@app.route('/register', methods=['POST'])
def add_user():
  star = mongo.db.userInfo
  name = request.json['name']
  pwd = request.json['pwd']
  star_id = star.insert({'name': name, 'pwd': pwd})
  new_star = star.find_one({'_id': star_id })
  output = {'name' : new_star['name'], 'pwd' : new_star['pwd']}
  return jsonify({'result' : output})

@app.route('/modify/<string:name>', methods=['PUT'])
def update_user(name):
    user = mongo.db.userInfo.find({"name":name})
    output = []
    for s in user:
      output.append({'name': s['name'], 'pwd': s['pwd']})
    if len(output) == 0:
      abort(404)
    mongo.db.userInfo.update({"name":name},{'$set':{"name":"LZ111"}})
    return jsonify({'result': output})

@app.route('/delete/<string:name>', methods=['DELETE'])
def delete_user(name):
    user = mongo.db.userInfo.find({"name": name})
    output = []
    for s in user:
      output.append({'name': s['name'], 'pwd': s['pwd']})
    if len(output) == 0:
      abort(404)
    mongo.db.userInfo.remove({'name': name})
    return jsonify({'result': True})



if __name__ == '__main__':
    # app.run(host = '0.0.0.0', port = 80, debug = True)
    app.run()

 

一旦选择tornado,新建一个tornado_server.py文件,添加以下代码,作为Flask服务启动陈设,也可以完成相关作用:

#coding=utf-8
#tornado_server.py
from tornado.wsgi import WSGIContainer
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop

from mongo import app


http_server = HTTPServer(WSGIContainer(app))
# http_server.listen(9000)  #此时,开启端口9000,默认本机127.0.0.1的IP地址
http_server.bind(80, "172.18.252.20")# 开启端口为9000,172.18.252.20为内网ip地址,也可以设置为0.0.0.0,
http_server.start(1)
IOLoop.instance().start()

 

看完上面代码,点击运行,即可兑现相关接口效率了。既然是接口,GET格局还好说,要是是POST方式,使用浏览器就不那么好操作了,此时我们必要使用一款接口测试软件,在此处我引进应用Postman(PS:Postman百度经验介绍Postman官网下载链接),假诺有同学利用基于Linux相关系统,推荐应用CURL来贯彻。

 

下边就规范开班采纳Postman测试Get、Post、Put和Delete格局接口:

Get形式,选中下图中下拉框GET格局,间接输入URL,然后点击Send蓝色按钮即可得到请求数据。

 宗教活动 5

 

宗教活动,Post方式,选中下拉框中Post格局,这里由于要发送数据,须求有些设置一下。

率先,在下图中Headers中要挑选Content-Type的数目方式,那里我采纳的是json格式:

 宗教活动 6

接下来,点开下图中Body,拔取raw,添加要存入的json格式数据,如下:

 宗教活动 7

最终,点击Send按钮,在最上面出现有关提醒新闻后,即可查看Post请求结果。

 

Put形式操作和Get方式同样,差其余是必要选中操作形式为Put,具体如下图:

 宗教活动 8

 

Delete形式和Put请求差不多相同,分裂的是一个举行修改操作,一个推行删除操作而已,具体如下图:

 宗教活动 9

 

基本操作就像此,看完上边代码,发现拔取FLask+MongoDB写后端接口是否特地简单?

 

 

参考资料:
1.Designing a
RESTful API with Python and
Flask
(PS:附加一个中文版,但是里面代码有bug)

2.理解RESTful架构

3.MONGODB
RESTFUL API WITH
FLASK

 

App运营在做app活动在此之前可以先通晓现阶段的用户青眼哪个种类档次的位移格局和体裁,是H5活动、摇一摇、大转盘、刮刮乐仍旧问卷形式(以上关联的app活动方式都可以在【活动盒子】达成)。再结合产品稳定、用户定位来控制到底采纳哪个种类形式。

2、精通用户对移动的盼望

蓝瘦香菇能够在长期内红遍互连网,是因其主人公是小人物,而且还和民众关切的心思难题挂钩,不难引起群众的共鸣。

作为三遍以促活app用户为重中之重目标app活动,活动面向的是app老客户或刚开端拔取app的新用户。想要成功的促活这么些用户,对用户的思想是亟需自然认知的。也就是说,在做活动从前,运营要领悟活动要力促的用户年龄阶段、心境特征,你的移动能够满意用户的哪些心思。

恶搞营销型活动:够奇葩、够搞笑、够好玩。如二零一五年岁暮的搜狐娱乐“生成自己的玩乐头条”的H5活动。

猎奇型活动:活动内容/对象/方式新奇独特,用户一看就有中央进去的欲望。如从前很火的“吴亦凡(英文名:wú yì fán)即将当兵H5”活动。

隐私型活动:和性、人性等话题有关的活动,案例自行脑补。

互动型活动:格局马自达,半数以上加入用户有过此经验。如平日能在网上看看的各样互动话题活动。

认可型活动:能让用户获得某种自身认知或获得旁人评价的位移,如二零一九年火了一段时间的“性格标签”H5活动。

自然,前面列举可以满足用户心绪的位移格局都是内需组合产品稳定的,要保管可以进步app产品的品牌形象。

3、利用总体可以选拔的元素

蓝瘦香菇本来是一种地点方言的失声,是“悲哀、想哭”的意味。方言独有喜感和对方言关怀用户的递进,加之摄像本身的话题性,让蓝瘦香菇已经Jeep转载就火了。

这也给了app运营一些提示,做app活动(不管是拉新、促活照旧存在活动)都足以借助一些方可接纳的因素。俗话说,不管是白猫照旧黑猫,能抓到老鼠的就是好猫。不管是方言或者小品相声都是做app活动的好资料,只要使用得当都能起到意想不到的成效。

4、加入门槛不宜过高

所谓“独乐了不如众乐乐”,一个人与会运动不如带上身边的伙伴。那就事关到app活动门槛的难题。门槛太高,参预人数寥寥无几,活动从未意思。由此,app活动的参加门槛不能过高,可以设想活动对象、活动奖品、活动形式来确定适合的奥妙。

5、活动创意很要紧

好的创意是打响的初阶。纵观那个互联网盛名app活动都是极具创意的,如微信朋友圈测试的“红包照片”,新世相策划的“4时辰逃离北上广”活动。“蓝瘦香菇”表情包的恢宏传播也是让蓝瘦香菇话题在各大社交网站霸屏的紧要性缘由之一。

App活动要想在用户群体中火起来,可多从运动创意方面起始。

6、选拔适宜的移位传出路径

再好产品需求运营推广出去才能被用户所熟练并行使,再好的移动从未传到得够广也是自嗨。蓝瘦香菇话题先从QQ空间、贴吧,到乐乎,到明星转载,再到对象圈,最终到各样表情包,正是由多样交道渠道协同发酵才成功了它的猛烈。

App促活活动的加大传播渠道大概分成两类:免费渠道和付费渠道。其中免费推广活动的沟渠包含app内部渠道,如官方网站、天涯论坛、微信公众号等;app外部免费渠道则带有部分自媒体营销平台、论坛社区、社群等。此外,app活动推广的付费渠道则主要指通过钱可以达到推广效果的水道,如KOL软文投放、百度竞价、网盟推广、广点通、新浪广告、微信朋友圈广告、有名气的人转载等。

7、学会借势做运动营销

会借势做营销是网络运营的必不可少技能之一。作为app活动运营不仅要时时关注互联网热门,更关键的是遇上一些方可将自己的制品融入进去的热门要明白怎么着借势,适当的借势营销可以抓实活动的不胫而走速度和范围。

如奥运时期借势活动——“里约大冒险”H5活动

王建林的“小目标”借势活动——中兴“小目的”网易转载活动

近来“蓝瘦香菇”借势活动——某app的“蓝瘦喊你摘香菇啦”小游戏

8、升高运动投放的精准度

最终,为了操纵移动资金,提升运动后产品的转化率,app活动运营要借助自身条件(对用户的认知)或工具(一些可以增加活动精准度的第三方工具)对运动进展精准投放。如运动盒子可以帮助app运营对移动的触发场景、触发用户、触发时间、触发次数等开展设定,尽量促成没一个运动推送给方便的用户。

有一句话说得好,热点都不是凭空发生的。先不说热点背后的推手,热点之所以可以成为热门,其被群众肯定(有共鸣、争议性大,值得探讨等)是十分主要的。而一个打响的app促活活动也是这么,可以赢得app用户的协理和肯定,让用户主动到场并能得到肯定满意(奖品、心思等)才是至关紧要的。

正如动漫火影中一句名言:“不是变成火最佳女主角才被人确认,而是被确认的人才能成为火影”一遍app促活活动不是app运营人士觉得可以火才会成功,而是被app用户所认同才能真的达到促活的功力。

小编:等待八戒,活动盒子(huodonghezi.com)品牌运营推广专员,关怀网络及运动营销推广领域。活动盒子是一款精准、高效、点对点的位移运营工具。

版权声明:本文为作者观点。商业转发请联系小编获得授权,非商业转发请声明出处:http://www.huodonghezi.com/news-493.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注