导航:首页 > 编程语言 > python搭建服务器架构

python搭建服务器架构

发布时间:2022-05-24 06:19:41

A. 请教python JSON API 服务器选什么框架

1 3 这些框架都可以满足要求。 2 不犯错需要经验,基本上没有框架是没有坑的,只是挖坑的地方不同而已。
小项目不用担心犯严重错误,大不了重写嘛。小项目,业务逻辑写好了,换框架不费事。

推荐 flask 或者 bottle.
原因:轻量级,项目在持续维护,结构简单,性能可靠。

django 由于重量级,以及这个项目不需要 SQL 类型的 ORM ,也不需要模板渲染和相关的辅助工具,系统复杂带来的学习成本,不做考虑。
web.py 自从原作者前些年不幸去世之后,项目维护和发展不及 flask 和 bottle. 所以从文档和性能调优方面来看,不推荐。

如果追求性能 bottle + gevent 或者 bottle + uwsgi 挺靠谱的。
如果喜欢各种集成, flask 对周边东西的集成比 bottle 多一些。用 bottle 需要你自己比较懂 web , flask 即使不懂也可以开始用别人写好的一些东西。

B. python架构是什么

Python中的架构就是框架,这些框架可以让web应用的开发更轻松。

这些框架把不同的模块集成在一起,让你更快的开发程序而不用注意一些细节。

Python中几种框架的介绍:

Django: Python Web应用开发框架

Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

Flask:一个用Python编写的轻量级Web应用框架

Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

Web2py:全栈式Web框架

Web2py是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有快速、安全以及可移植的数据库驱动的应用,兼容Google App Engine。

Tornado:异步非阻塞IO的Python Web框架

Tornado的全称是Torado Web Server,从名字上看就可知道它可以用作Web服务器,但同时它也是一个Python Web的开发框架。最初是在FriendFeed公司的网站上使用,FaceBook收购了之后便开源了出来。

更多Python知识,请关注:Python自学网!!

C. python怎么搭建django框架

运行环境
Windows 7(64位) + Python 2.7 + Django 1.7.1
1.安装django框架
当然你首先要有python环境,对于学python的朋友们这个就不多说了~~
我使用的是setuptools工具来安装的,setuptools是python中安装第三方模块常用的安装工具
1.1安装setuptools工具(如果会安装的可以直接跳过)
先从这个地址下载ez_setup.py:
https://pypi.python.org/pypi/setuptools#windows(在页面最下面)
我下载的是setuptools-7.0.zip,将其解压,将解压的setuptools-7.0文件放到一个目录,我这里假定将其放到C:\workspace目录下
打开命令行cmd,在cmd中切换到C:\workspace\setuptools-7.0,即setuptools-7.0安装目录
运行命令:
python ez_setup.py
该命令会安装setuptools工具,安装后打开你的python安装目录下的Scripts目录(我的是C:\Python27\Scripts),会看到easy_install.exe等文件
注意将python安装目录下的Scripts目录(我的是C:\Python27\Scripts)添加到环境变量path,否则下面的easy_install命令会报错
1.2安装django框架
在cmd中输入:
easy_install django
有的安装过程可能会提示缺少vc++包,根据提示网址(我忘了~)下载包,我下载的是VCForPython27.msi,安装vc++后再执行安装
这样就自动安装了django,是不是很方便,哈哈

2.创建django项目,这里假定在c:\workspace\djangoTest下创建(和java有点差别,java是直接创建项目就可以了,python是要先创建项目再在项目里创建app)
进入c:\workspace\djangoTest目录,输入:
django-admin startproject mytodo #网上很多是python django-admin.py startproject mytodo,版本不一样可能命令有细微差别
就创建了mytodo项目

3.启动调试服务器
进入c:\workspace\djangoTest\djangoTest\mytodo目录:
cd mytodo
然后输入:
python manage.py runserver
在浏览器中输入http://127.0.0.1:8000/,看能否访问页面

4.创建app
输入命令:python manage.py startapp todo
就在mytodo项目下创建了一个app,即todo
编辑mytodo/settings.py文件,在INSTALLED_APPS添加条目todo
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'todo',
)
即在最后添加一行todo(有的版本是项目名+app名,即mytodo.todo)
再次输入:python manage.py runserver看看你app是否配置好了,养成边写边测试的好习惯,哈哈~

5.配置数据库
django默认的是使用SQLite数据库作为后台数据库,仍然打开mytodo/settings.py,可以看到下面一段:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
这就是django项目的数据库配置,默认是使用SQLite,我们就使用使用默认配置,安装SQLite数据库,不需要修改配置文件
听到又要安装数据库,大家肯定又觉得好复杂,其实在python里安装三方模块,数据库什么的很简单,一条命令就可以搞定了~~
输入命令:
easy_install pysqlite
这样就安装了SQLite数据库
安装完数据库,我们也测试一下,输入命令:
python manage.py syncdb
出现successfully提示就安装成功了,打开mytodo目录,看看里面是否有一个db.sqlite3文件,这就是上面配置的数据库文件

D. Python网络编程

在当今Python服务器框架 (framework, 比如Django, Twisted, web.py等等) 横行的时代,从底层的socket开始写服务器似乎是一个出力不讨好的笨方法。框架的意义在于掩盖底层的细节,提供一套对于开发人员更加友好的API,并处理诸如MVC的布局问题。框架允许我们快速的构建一个成型而且成熟的Python服务器。然而,框架本身也是依赖于底层(比如socket)。对于底层socket的了解,不仅可以帮助我们更好的使用框架,更可以让我们明白框架是如何设计的。更进一步,如果拥有良好的底层socket编程知识和其他系统编程知识,你完全可以设计并开发一款自己的框架。如果你可以从底层socket开始,实现一个完整的Python服务器,支持用户层的协议,并处理好诸如MVC(Model-View-Control)、多线程(threading)等问题,并整理出一套清晰的函数或者类,作为接口(API)呈现给用户,你就相当于设计了一个框架。socket接口是实际上是操作系统提供的系统调用。socket的使用并不局限于Python语言,你可以用C或者JAVA来写出同样的socket服务器,而所有语言使用socket的方式都类似(Apache就是使用C实现的服务器)。而你不能跨语言的使用框架。框架的好处在于帮你处理了一些细节,从而实现快速开发,但同时受到Python本身性能的限制。我们已经看到,许多成功的网站都是利用动态语言(比如Python, Ruby或者PHP,比如twitter和facebook)快速开发,在网站成功之后,将代码转换成诸如C和JAVA这样一些效率比较高的语言,从而让服务器能更有效率的面对每天亿万次的请求。在这样一些时间,底层的重要性,就远远超过了框架。

E. python web开发 该用什么框架

Djang Python Web应用开发框架
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。
Flask:一个用Python编写的轻量级Web应用框架
Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2
。Flask使用 BSD 授权。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension
增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
Tornado:异步非阻塞IO的Python Web框架
Tornado是一种 Web 服务器软件的开源版本。Tornado 和主流Web 服务器框架(包括大多数 Python
的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。
得利于其非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,因此 Tornado 是实时 Web 服务的一个 理想框架。

F. python都有哪些应用服务器框架

django ,
flask ,
这两个是我常用的,也是比较好用的框架

G. 如何在Python中使用ZeroMQ和Docker构建微服务架构

微服务是什么?

微服务是一种架构风格,它包括多个彼此间进行通信的独立进程。在设计上,这些进程具有高度的可扩展性、相互解耦而且一次只完成一个较小的任务。这些服务都拥有自己的资源以及通过网络实现彼此间通信的进程。

相比于靠后端的 单体结构
来封装所有服务器逻辑的传统客户端-服务器架构(C/S架构)而言,微服务架构的差异性体现在关注点分离(Separation of
concern)。这种设计模式更易于维护,使得灵活性、可扩展性及容错能力更强。但是这种分布式架构所的不足之处体现在如果设计不合理就会使得排错及维
护变得复杂。

一个简单微服务的例子

让我们来分析这样的一个场景:你正在使用微服务模式构建一个电子商务网店。

对于一个电商网店上的常见商品,好比说iPhone,其详情页会显示:

。产品的及基本信息

。你的购买历史

。哪些人买了iPhone也买了手机套

。与苹果手机相关的优惠和折扣

。店家的数据

。送货方式

。推荐商品等等

此外,这个简单的产品详情页的接口将有多个版本的来匹配web、移动端以及用于第三方应用程序的REST API。

在微服务模式中数据分布在多个服务之间。在这个例子中,服务包括:

。产品详情服务

。商家服务

。支付服务

。优惠及折扣服务

。库存服务

。定价服务

。回顾服务

。推荐服务

这些独立的服务是如何被访问的呢?

解决办法是使用一个API网管,它作为所有客户端的单一入口并且根据需求调用分布在整个基础架构中的特定微服务。以上模式的行业应用案例是NetFlix API网关,它具有支持不同设备的多个API客户端。你可以点击此处 了解更多 。

构建一个简单的微服务

目前有很多方法可以用于构建你的微服务。

在本文中我们将使用ZeroMQ来创建两个进程之间的通信。ZeroMQ提供了用于在套接字之上开发可扩展、分布式systed的构建块。它使用椭圆曲线密码体制(第四版)来实现安全性,并提供了即刻开启的 通讯模式 。

关于ZMQ,还有很多 优点 。MQ即是针对异步工作而设计的线程化消息队列。谈论太多zeroMQ的内容已经超出了本文的范畴,你可以阅读 使用zeromq 以及 zeromq用于分布式系统 。

我们要使用的另一个工具是 Docker 。本文假设读者对Docker已经有了基础的了解。

ZeroMQ有很多种通讯模式,为了开始我们的工作,让我们用ZeroMQ和Flask来配置一个简单的PUB-SUB。下图展示了组件之间的关系和数据流。

1&3 - 一个flask服务器运行在5000端口上而且其URL是 /downcase/ 。该URL用来接受(GET)请求,而所有格式为的请求将收到回应:答谢字符将会转换为小写字符并返回。

2 - 回应的消息也被发送给同一个容器中的ZMQ发布者(Publisher)

4,5 - ZMQ订阅者(subscriber)持续监听并将来自ZMQ服务器的消息保存到名为 subscriber.log 的文件中

创建服务器

首先看一下我们的Dockerfile

<pre><code>

FROM ubuntu:14.04

RUN apt-get update

RUN apt-get install -y --force-yes python python-dev python-setuptools software-properties-common gcc python-pip

RUN apt-get clean all

RUN pip install pyzmq

RUN pip install Flask

ADD zmqserver.py /tmp/zmqserver.py

Flask Port

EXPOSE 5000

Zmq Sub Server

EXPOSE 4444

CMD ["python","/tmp/zmqserver.py"]

</code></pre>

我们选择Ubuntu
14.04作为容器操作系统。我们安装了基本的软件包。通过pip,我们安装pyzmq(zeromq的Python绑定)同时也安装了Flask。接着
我们导出端口5000(flask服务器)和4444(发布者运行的端口)。此外,我们复制了包含所有flask及zeromq
pythond代码的脚本文件 zmqserver.py 并运行它。

现在我们来看一下zmqserver.py的内容:

server.py

import time

import zmq

HOST = '127.0.0.1'

PORT = '4444'

_context = zmq.Context()

_publisher = _context.socket(zmq.PUB)

url = 'tcp://{}:{}'.format(HOST, PORT)

def publish_message(message):

try:

_publisher.bind(url)

time.sleep(1)

_publisher.send(message)

except Exception as e:

print "error {}".format(e)

finally: _publisher.unbind(url)

from flask import Flask

from flask import request

app = Flask(__name__)

@app.route("/downcase/", methods=['GET'])

def lowerString():

_strn = request.args.get('param')

response = 'lower case of {} is {}'.format(_strn, _strn.lower()) publish_message(response)

return response

if __name__ == '__main__':

app.run(host='0.0.0.0', debug=False)

ZMQ发布者运行在4444端口上。我们创建了一个context并且声明了URL。我们运行了flask app,它通过URL /downcase/ 把GET获得的参数 Param 转换成小写字符,这就是服务的应答。应答的字符串是 published ,它作为一个消息把相同的字符串返回给浏览器。

为了构建以上的Docker映像(image),我们执行以下的命令:
sudo docker build -t docker-zmq-pub

并且在该映像之上执行:
docker run --name docker-pub-server -p 5000:5000 -p 4444:4444 -t docker-zmq-pub

我们把容器中的端口5000和4444映射到这台主机上,于是无论客户端在哪里,它们都可以订阅这个发布者。

订阅者客户端

client.py

import zmq

import sys

import time

import logging

import os

HOST = '127.0.0.1'

PORT = '4444'

logging.basicConfig(filename='subscriber.log', level=logging.INFO)

class ZClient(object):

def __init__(self, host=HOST, port=PORT):

"""Initialize Worker"""

self.host = host

self.port = port

self._context = zmq.Context()

self._subscriber = self._context.socket(zmq.SUB)

print "Client Initiated"

def receive_message(self):

"""Start receiving messages"""

self._subscriber.connect('tcp://{}:{}'.format(self.host, self.port))

self._subscriber.setsockopt(zmq.SUBSCRIBE, b"")

while True:

print 'listening on tcp://{}:{}'.format(self.host, self.port)

message = self._subscriber.recv()

print message

logging.info(

'{} - {}'.format(message, time.strftime("%Y-%m-%d %H:%M")))

if __name__ == '__main__':

zs = ZClient()

zs.receive_message()

我们声明了发布者的IP地址及端口,当前它运行在同一个的主机上因此地址是127开头。我们在URL tcp://IP:PORT 上进行监听。一旦我们收到一个消息,就将其附上时间戳后记录到名为 subscriber.log 的文件中。运行客户端要做的所有工作就是执行 python <name_of_client_file>.py 。如果你在以上的架构上进行构建,它可以很好地充当近实时的日志聚合引擎。

我在Unbuntu主机上对以上的代码进行了测试。这里所用的代码保管在 github 上。这是一个如何配置zmq、docker和python服务器的基础讲解,在我的下一片文章中我们会使用我们已经学习的东西构建简单的微服务。

H. 请教Python,API,服务器选什么框架

Tornado, 异步的,不需要开一堆进程 /线程来跑。一个核开一个进程就好。

简单,没有 Flask 和 Django 那么多东西,易上手(特别是做 JSON API )。而且你也有异步编程的经验。
另外我用过 Flask ,特别讨厌它的 g 和 request 这种“全局”变量。刚开始用着方便,但是很容易犯下严重的设计错误( 必要地耦合到这些变量上)。

I. 怎么搭建 python 的接口自动化测试框架

1.框架搭建
1.1 将struts2中的jar文件导入到项目中
commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,freemarker-2.3.15.jar,ognl-2.7.3.jar
struts2-core-2.1.8.1.jar,xwork-core-2.1.6.jar
1.2 将struts.xml文件拷贝到项目的src目录下
1.3 修改web.xml文件
添加:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.action中方法的调用方式
2.1 自动方法调用(只能调用execute)
2.2 指定方法调用(通过设置action标签中的method属性)
2.3 动态方法调用(在调用时,在action后加!方法名称,如:login!deletUser)
注意:<constant name="struts.enable.DynamicMethodInvocation" value="true" />
2.4 通配符调用
3. action接收客户端参数的方式
3.1 直接在action中定义参数变量,并生成set和get方法
3.2 定义接收参数的类
注意:都要为action的成员变量提供get和set方法
3.3 让action实现ModelDriven接口,并实现里面的getModel方法
4.获取request,session,application的方式
4.1 用ActionContext获取,实际上获取到的都是Map对象
4.2 用ServletActionContext获取,获取到的是基于Servlet API的对象

J. 如何用 python 构建一个简单的分布式系统

从GitHub中整理出的15个最受欢迎的Python开源框架。这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等。

Django: Python Web应用开发框架
Django 应该是最出名的Python框架,GAE甚至Erlang都有框架受它影响。Django是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起ORM,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。

Diesel:基于Greenlet的事件I/O框架
Diesel提供一个整洁的API来编写网络客户端和服务器。支持TCP和UDP。

Flask:一个用Python编写的轻量级Web应用框架
Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2
模板引擎。Flask也被称为“microframework”,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数
据库、窗体验证工具。

Cubes:轻量级Python OLAP框架
Cubes是一个轻量级Python框架,包含OLAP、多维数据分析和浏览聚合数据(aggregated data)等工具。

Kartograph.py:创造矢量地图的轻量级Python框架
Kartograph是一个Python库,用来为ESRI生成SVG地图。Kartograph.py目前仍处于beta阶段,你可以在virtualenv环境下来测试。

Pulsar:Python的事件驱动并发框架
Pulsar是一个事件驱动的并发框架,有了pulsar,你可以写出在不同进程或线程中运行一个或多个活动的异步服务器。

Web2py:全栈式Web框架
Web2py是一个为Python语言提供的全功能Web应用框架,旨在敏捷快速的开发Web应用,具有快速、安全以及可移植的数据库驱动的应用,兼容Google App Engine。

Falcon:构建云API和网络应用后端的高性能Python框架
Falcon是一个构建云API的高性能Python框架,它鼓励使用REST架构风格,尽可能以最少的力气做最多的事情。

Dpark:Python版的Spark
DPark是Spark的Python克隆,是一个Python实现的分布式计算框架,可以非常方便地实现大规模数据处理和迭代计算。DPark由豆瓣实现,目前豆瓣内部的绝大多数数据分析都使用DPark完成,正日趋完善。

Buildbot:基于Python的持续集成测试框架
Buildbot是一个开源框架,可以自动化软件构建、测试和发布等过程。每当代码有改变,服务器要求不同平台上的客户端立即进行代码构建和测试,收集并报告不同平台的构建和测试结果。

Zerorpc:基于ZeroMQ的高性能分布式RPC框架
Zerorpc是一个基于ZeroMQ和MessagePack开发的远程过程调用协议(RPC)实现。和 Zerorpc 一起使用的 Service API 被称为 zeroservice。Zerorpc 可以通过编程或命令行方式调用。

Bottle: 微型Python Web框架
Bottle是一个简单高效的遵循WSGI的微型python Web框架。说微型,是因为它只有一个文件,除Python标准库外,它不依赖于任何第三方模块。

Tornado:异步非阻塞IO的Python Web框架
Tornado的全称是Torado Web Server,从名字上看就可知道它可以用作Web服务器,但同时它也是一个Python Web的开发框架。最初是在FriendFeed公司的网站上使用,FaceBook收购了之后便开源了出来。

webpy: 轻量级的Python Web框架
webpy的设计理念力求精简(Keep it simple and powerful),源码很简短,只提供一个框架所必须的东西,不依赖大量的第三方模块,它没有URL路由、没有模板也没有数据库的访问。

Scrapy:Python的爬虫框架
Scrapy是一个使用Python编写的,轻量级的,简单轻巧,并且使用起来非常的方便。

阅读全文

与python搭建服务器架构相关的资料

热点内容
微信程序APP怎怎么注册 浏览:118
java日历课程设计 浏览:451
pythonrequests假死 浏览:866
原生安卓怎么用nfc模拟卡 浏览:952
施耐德串口服务器是什么 浏览:499
小程序模板不给源码靠谱吗 浏览:977
程序员喷苹果 浏览:490
手机里面照片文件夹字母怎么写的 浏览:254
php中实现翻译功能用哪个函数 浏览:503
病毒加密文件恢复 浏览:116
无线路由如何设置成服务器 浏览:138
QQ飞车源码更新 浏览:899
虚拟机中编译器 浏览:476
台达PLC编译按钮在哪里 浏览:141
非编程计算器多少钱 浏览:655
房本还完贷款解压 浏览:818
中国程序员有出名吗 浏览:548
亳州云服务器 浏览:632
程序员最难的面试 浏览:894
配音秀app怎么诵读 浏览:751