Python Tornado集成JSON Web Token方式登录
IO multiplexing(IO多路复用)select虽然是阻塞的,但是它的优势在于它可以用一个进程处理多个连接,这个利用非阻塞的轮询方式是无法实现的,当连接数增多时优势就明显,而对于单个连接则跟同步IO区别不大甚至性能还要更低。select,poll,epoll都是IO多路复用的机制,IO多路复用就是通过机制用一个进程监视多个描述符,一旦某个描述符就绪(可读或者可写或者异常),能够通知进程进行响应的操作。但是select,poll,epoll本质上是同步IO,因为他们都需要在读写事件就绪后自己负责读写,这个过程是阻塞的。下面用Python的socket编程模拟IO多路复用(IO多路复用+回调+事件循环)class Fetcher: def connected(self, key): selector.unregister(key.fd) self.con.send('GET {} HTTP/1.1\r\nHost:{}\r\nConnection:close\r\n\r\n'.format(self.path,self.host).encode('utf-8')) sele...
Python Tornado集成JSON Web Token方式登录
IO multiplexing(IO多路复用)select虽然是阻塞的,但是它的优势在于它可以用一个进程处理多个连接,这个利用非阻塞的轮询方式是无法实现的,当连接数增多时优势就明显,而对于单个连接则跟同步IO区别不大甚至性能还要更低。select,poll,epoll都是IO多路复用的机制,IO多路复用就是通过机制用一个进程监视多个描述符,一旦某个描述符就绪(可读或者可写或者异常),能够通知进程进行响应的操作。但是select,poll,epoll本质上是同步IO,因为他们都需要在读写事件就绪后自己负责读写,这个过程是阻塞的。下面用Python的socket编程模拟IO多路复用(IO多路复用+回调+事件循环)class Fetcher: def connected(self, key): selector.unregister(key.fd) self.con.send('GET {} HTTP/1.1\r\nHost:{}\r\nConnection:close\r\n\r\n'.format(self.path,self.host).encode('utf-8')) sele...
Docker-compose部署Django+PostgreSQL+Redis+uWSGI+Nginx
前言部署Python Web项目时,通常会使用uWSGI+Nginx或者Gunicorn+Nginx,需要开发者同时安装这些软件,做一系列的配置,费时费力,而容器技术如今已经非常火热,开发者可以使用Docker容器来部署Web应用,达到和本地开发一样的环境。准备工作1.准备一个Django项目,通过python manage.py runserver 0.0.0.0:8000可以运行起来 2.项目设置中配置PostgreSQL数据库信息 代码如下:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'postgres', # 数据库名称 使用docker默认的 'USER': 'postgres', # 使用docker默认的用户名 'HOST': 'db', 'PORT': 5432 } } 3.设置配置Redis的信息。 代码如下:CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCac...
Docker-compose部署Django+PostgreSQL+Redis+uWSGI+Nginx
前言部署Python Web项目时,通常会使用uWSGI+Nginx或者Gunicorn+Nginx,需要开发者同时安装这些软件,做一系列的配置,费时费力,而容器技术如今已经非常火热,开发者可以使用Docker容器来部署Web应用,达到和本地开发一样的环境。准备工作1.准备一个Django项目,通过python manage.py runserver 0.0.0.0:8000可以运行起来 2.项目设置中配置PostgreSQL数据库信息 代码如下:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'postgres', # 数据库名称 使用docker默认的 'USER': 'postgres', # 使用docker默认的用户名 'HOST': 'db', 'PORT': 5432 } } 3.设置配置Redis的信息。 代码如下:CACHES = { 'default': { 'BACKEND': 'django_redis.cache.RedisCac...
CentOS7安装mysql8.0版本详细步骤
一、下载mysql yum包官方下载地址:https://dev.mysql.com/downloads/repo/yum/ 或者直接使用wget下载wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm #二、安装软件源rpm -Uvh https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm #三、安装mysqlyum install -y mysql-community-server #四、启动&配置#启动 service mysqld start #查看运行状态 service mysqld status 看到绿色的running代表已经启动成功,然后mysql在5.6之后的版本都会默认生成一个默认密码,是root用户的。通过如下命令查看密码grep 'temporary password' /var/log/mysqld.log #五、进入mysql 执行完如下命令之后输入默认密码mysql -u root ...
CentOS7安装mysql8.0版本详细步骤
一、下载mysql yum包官方下载地址:https://dev.mysql.com/downloads/repo/yum/ 或者直接使用wget下载wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm #二、安装软件源rpm -Uvh https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm #三、安装mysqlyum install -y mysql-community-server #四、启动&配置#启动 service mysqld start #查看运行状态 service mysqld status 看到绿色的running代表已经启动成功,然后mysql在5.6之后的版本都会默认生成一个默认密码,是root用户的。通过如下命令查看密码grep 'temporary password' /var/log/mysqld.log #五、进入mysql 执行完如下命令之后输入默认密码mysql -u root ...
Apache+mod_wsgi+Python3.7.4部署Django HTTP应用
#一、阿里云CentOS7配置 以下以root用户来操作 赋予执行权限!!(root)$ chmod +x /root 安装系统依赖有Python、MySQL(可选)依赖、Elasticsearch对Java的依赖,Django-compressor的压缩需要的依赖bzip2-devel等(root)$ yum -y update (root)$ yum install -y install python-devel zlib-devel mysql-devel libffi-devel openssl-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel java wget gcc make tmux 1.3 安装Python3.7.4最新版本(root)$ wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz #编译python (root)$ tar -zxvf Python-3.7.4.tgz (root)$ cd Py...
Apache+mod_wsgi+Python3.7.4部署Django HTTP应用
#一、阿里云CentOS7配置 以下以root用户来操作 赋予执行权限!!(root)$ chmod +x /root 安装系统依赖有Python、MySQL(可选)依赖、Elasticsearch对Java的依赖,Django-compressor的压缩需要的依赖bzip2-devel等(root)$ yum -y update (root)$ yum install -y install python-devel zlib-devel mysql-devel libffi-devel openssl-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel java wget gcc make tmux 1.3 安装Python3.7.4最新版本(root)$ wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz #编译python (root)$ tar -zxvf Python-3.7.4.tgz (root)$ cd Py...
Nginx+Gunicorn+Daphne+Supervisor部署Django channels项目
Nginx做为反向代理,gunicorn转发到wsgi服务实现http或https服务,daphne转发到asgi服务实现websocket通信。 #一、CentOS7初始化配置1.1 创建组和用户(root)$ groupadd zhihu (root)$ useradd -m zhihu -g zhihu (root)$ passwd zhihu 赋予执行权限!!(root)$ chmod +x /home/zhihu 1.2 安装系统依赖有Python、MySQL(可选)依赖、Elasticsearch对Java的依赖,Django-compressor的压缩需要的依赖bzip2-devel等(root)$ yum -y update (root)$ yum install -y install python-devel zlib-devel mysql-devel libffi-devel openssl-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel java wget gcc m...
Nginx+Gunicorn+Daphne+Supervisor部署Django channels项目
Nginx做为反向代理,gunicorn转发到wsgi服务实现http或https服务,daphne转发到asgi服务实现websocket通信。 #一、CentOS7初始化配置1.1 创建组和用户(root)$ groupadd zhihu (root)$ useradd -m zhihu -g zhihu (root)$ passwd zhihu 赋予执行权限!!(root)$ chmod +x /home/zhihu 1.2 安装系统依赖有Python、MySQL(可选)依赖、Elasticsearch对Java的依赖,Django-compressor的压缩需要的依赖bzip2-devel等(root)$ yum -y update (root)$ yum install -y install python-devel zlib-devel mysql-devel libffi-devel openssl-devel bzip2-devel ncurses-devel sqlite-devel readline-devel tk-devel java wget gcc m...