今天想测试一下怎么通过一个.py文件写一段多线程代码,把原来的三个flask接口的py文件和成一个,在网上看了很多方法,但都没用上,最后测试时用了最简单的方法,代码如下:
from flask import Flask
import threading
import os
from werkzeug.serving import run_simple
from werkzeug.middleware.dispatcher import DispatcherMiddleware
# ----------服务1-----------------
app1 = Flask('app1')
@app1.route('/first/')
def foo():
print('app1')
return '1'
# ----------服务2-----------------
app2 = Flask('app2')
@app2.route('/second/')
def bar():
print('app2')
return 'hello world'
# ----------服务3-----------------
app3 = Flask('app3')
@app3.route('/third/')
def bar():
print('app3')
return 'it is the third one'
if __name__ == '__main__':
# print('main thread is {}'.format(threading.current_thread().name))
# os.environ 返回一个系统变量和系统变量值 的字典(键值对)
os.environ["WERKZEUG_RUN_MAIN"] = 'True'
threading.Thread(target=lambda: app1.run(port=5001, use_reloader=False)).start()
threading.Thread(target=lambda: app2.run(port=5002, use_reloader=False)).start()
threading.Thread(target=lambda: app3.run(port=5003, use_reloader=False)).start()
run之后输出的结果是:
* Serving Flask app 'app1' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Serving Flask app 'app2' (lazy loading)
* Serving Flask app 'app3' (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5001 (Press CTRL+C to quit)
* Running on http://127.0.0.1:5003 (Press CTRL+C to quit)
* Running on http://127.0.0.1:5002 (Press CTRL+C to quit)
感觉没什么问题