正文
关于并发,异步,非阻塞(python)疑惑的一些资料解答
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
从iterable/iterator到generator到coroutine
理解python的迭代器: http://python.jobbole.com/81916/
理解python的生成器: http://python.jobbole.com/81911/
python中协程:http://python.jobbole.com/87156/
从yield/send到yield from/asycio到asyc/awati
Python协程从yield/send到async/await: http://python.jobbole.com/86069/
深入理解 Python 异步编程(上):http://python.jobbole.com/88291/
服务器是如何承受大量的用户请求的:https://www.zhihu.com/question/27629526
flask是如何处理多个访问请求的:https://segmentfault.com/q/1010000004532745
tornado 异步笔记:https://www.jianshu.com/p/31fae7dd05ba
tornado和flask异步的例子,请求非阻塞
#-*-coding:utf8-*- import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web import time
import os
import urllib.request
from tornado.options import define,options
define("port",default=8000,help="run on the given port",type=int) class Async1Handler(tornado.web.RequestHandler):
@tornado.web.asynchronous
@tornado.gen.coroutine
def get(self,*args,**kwargs):
print("begin!")
response = yield tornado.gen.Task(self.open)
print(response)
self.finish("it works") @tornado.gen.coroutine
def open(self): return (urllib.request.urlopen('http://127.0.0.1:5000/asyn/'))
#os.system("ping -c 5 127.0.0.1") if __name__ == "__main__":
tornado.options.parse_command_line()
print("****listening 127.0.0.1:8000****")
app = tornado.web.Application(
handlers=[(r'/async',Async1Handler)],
debug="True")
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
# coding=utf-8
# Python Version: 3.5.1 # Flask
from flask import Flask, request, g
import urllib.request import os
from gevent import monkey
from gevent.pywsgi import WSGIServer
monkey.patch_all() import time app = Flask(__name__)
app.config.update(DEBUG=True) @app.route('/asyn/', methods=['GET'])
def test_asyn_one():
print("asyn has a request!")
#print(urllib.request.urlopen('http://127.0.0.1:8000/async1'))
os.system("ping -c 5 127.0.0.1")
return 'hello asyn' if __name__ == "__main__":
# app.run()
http_server = WSGIServer(('', 5000), app)
http_server.serve_forever()