概述

本项目使用最新的Tornado开发。实现了在线提问,回答,评论等功能。使用到Tornado的generator,长轮询等等技术, 支持MySQL的异步连接。

详细

项目介绍:本项目最初是为了模仿StackOverflow的练手项目,实现了部分StackOverflow的功能。

项目说明:推荐使用Linux部署该项目,这样可以优化Tornado的性能。我的环境是Windows加Python3.6.5。

目录结构:

database:MySQL/Redis等异步连接器,数据操作方法。

handlers:Tornado控制器文件

static:静态文件地址

templats:html页面地址

utils:Python实用工具脚本

conf:配置文件

local_conf.bak.py:本地配置文件示例

manage.py:程序启动入口

require:依赖包,使用pip安装

router.py:路由

0:下载压缩包,将项目源文件解压到指定目录。我的目录是C:\Users\zhang\Downloads\tequila-master\tequila-master>

1:在项目根目录创建venv虚拟环境,virtualenv venv --no-site-packages

2:激活虚拟环境 venv\Scripts\activate

3:安装Python包依赖 pip install -r require

4:将local_conf.bak.py文件名修改为local_conf.py,并且编辑local_conf.py文件为如下内容:

# -*- coding: utf-8 -*-
import os
DOMAIN = 'http://127.0.0.1:9000'
DEFAULT_UPLOAD_PATH = os.path.join(os.path.dirname(__file__), 'pics')
DATABASE = {
'default': {
'host': 'localhost',
'port': 3306,
'database': 'tequila_demo',
'user': 'root',
'password': '你的数据库密码',
'charset': 'utf8'
}
}
REDIS = {
'default': {
'host': 'localhost',
'port': 6379,
'password': '',
'selected_db': 0,
}
}

5:创建数据库,create database tequila_demo;

6:执行脚本迁移,创建初始化数据。python manage.py migrate

7:查看数据表是否创建成功,并且检查redis是否可用

8:运行项目,python manage.py run,如果您的系统是windows,那将无法使用Tornado的fork进程模式,会遇到下面的错误:

这时不要惊慌,你只需要修改manage.py文件,将server.start(num_process=4)修改为server.start()即可

最后重新运行项目: python manage.py run

9:浏览器访问http://127.0.0.1:9000

以上是部分项目页面截图,如果对于项目有什么问题可以联系我~

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

基于Python Tornado的在线问答系统的更多相关文章

  1. 从Theano到Lasagne:基于Python的深度学习的框架和库

    从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...

  2. 仿StackOverflow开发在线问答系统

    仿StackOverflow开发在线问答系统 [第二期11月9日开课]使用Python Flask Web开发框架实现一套类似StackOverflow的在线问答平台LouQA,具备提问,回答,评论点 ...

  3. 数据分析:基于Python的自定义文件格式转换系统

    *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...

  4. 监控redis数据库应用状态:python,tornado实现

    公司里最近redis服务器压力越来越大,其大概情况,只能从操作系统层面看,并不详尽,故同事在网上找了一个叫做 redis-live的开源项目,我配合部署了一下,还真有点意思,并解决了其中部分小debu ...

  5. Python Tornado框架(ioloop对象分析)

    网上都说nginx和lighthttpd是高性能web服务器,而tornado也是著名的高抗负载应用,它们间有什么相似处呢?上节提到的ioloop对象是如何循环的呢?往下看. 首先关于TCP服务器的开 ...

  6. selenium2自动化测试实战--基于Python语言

    自动化测试基础 一. 软件测试分类 1.1 根据项目流程阶段划分软件测试 1.1.1 单元测试 单元测试(或模块测试)是对程序中的单个子程序或具有独立功能的代码段进行测试的过程. 1.1.2 集成测试 ...

  7. selenium2环境搭建----基于python语言

    selenium支持多种语言如java.c#.Python.PHP等,这里基于python语言,所以这里搭建环境时需做俩步操作: ----1.Python环境的搭建 ----2.selenium的安装 ...

  8. 【Machine Learning】决策树案例:基于python的商品购买能力预测系统

    决策树在商品购买能力预测案例中的算法实现 作者:白宁超 2016年12月24日22:05:42 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本 ...

  9. 基于CkEditor实现.net在线开发之路(7)列表页面开发动作介绍

    一个列表页面不止是查询,它也包含了很多业务上功能的实现,这些业务功能的实现的逻辑我称之为动作.如触发单击按钮删除数据,更改业务表数据,调用webService,调用WCF接口,弹出新窗体新增.修改.查 ...

随机推荐

  1. noip200805笨小猴

    试题描述: 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设maxn是单词中出现次数最 ...

  2. python开发_tarfile_文档归档压缩|解压缩

    ''' python中的tarfile模块实现文档的归档压缩和解压缩 功能: 把工作空间下面的所有文件,打包生成一个tar文件 同时提供一个方法把该tar文件中的一些文件解压缩到 指定的目录中 ''' ...

  3. [转]Intent和IntentFilter详解

        Intent   Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描 ...

  4. 如何判断c语言的变量类型

    变量三要素: 一个变量有三个基本的要素,变量的名称,变量的类型,变量的值.所以int a = 10; 变量名为a,变量的存储类型为int型,变量的值为10. 变量还有一些属性如作用范围和存储类型. 变 ...

  5. mybatis源码分析(8)-----事务(mybatis管理、spring管理)

    写在前面 接口:MyBatis的事务Transaction的接口有一下实现类 JdbcTransaction 由jdbc管理的事务(即利用Connection对象完成对事务的提交(commit()). ...

  6. Spark编程指南V1.4.0(翻译)

    Spark编程指南V1.4.0 ·        简单介绍 ·        接入Spark ·        Spark初始化 ·        使用Shell ·        在集群上部署代码 ...

  7. OpenCV2马拉松第12圈——直方图比較

    收入囊中 使用4种不同的方法进行直方图比較 葵花宝典 要比較两个直方图, 首先必需要选择一个衡量直方图相似度的对照标准.也就是先说明要在哪个方面做对照. 我们能够想出非常多办法,OpenCV採用了下面 ...

  8. GO -- 一个经验

    加锁要在有用的的上下文再加锁, 不要加的范围多了, 否则被锁住.

  9. php 将网页执行的输出写入到本地文件中

    php -f /var/www/html/default/script/lol_score_calculate/calculate.php >>score_calcutelate.log

  10. 仿LOL项目开发第二天

    仿LOL项目开发第二天 by草帽 接着上节来讲,上节更新还没开始写代码逻辑,今天我们补充完整. 我们找到VersionManager脚本里面的CheckVersion方法: 首先我们想到检测版本,需要 ...