关于Eureka的描述,可以参考Eureka简介,对Eureka和zookeeper对比,我个人觉得还是很容易看的明白的
Eureka作为服务的注册中心,即生产环境必须使用集群才能保证系统之间稳定运行
1、tornado集成eureka
参考Python Tornado之连接Eureka注册中心,pip install py_eureka_client
参考Tornado实现多线程、多进程HTTP服务配置多进程
import ssl
import py_eureka_client.eureka_client as eureka_client
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import logging
import tornado.log
from tornado.options import define, options
ssl._create_default_https_context = ssl._create_unverified_context
define("port", default=3333, help="run on the given port", type=int)
class Test01Handler(tornado.web.RequestHandler):
def post(self):
pass
class Test02Handler(tornado.web.RequestHandler):
def post(self):
pass
class LogFormatter(tornado.log.LogFormatter):
'''打印日志'''
def __init__(self):
super(LogFormatter, self).__init__(
fmt='%(color)s[%(asctime)s %(filename)s:%(funcName)s:%(lineno)d %(levelname)s]%(end_color)s %(message)s',
datefmt="%Y-%m-%d %H:%M:%S",
)
if __name__ == "__main__":
# 解析命令行
tornado.options.parse_command_line()
# 注册eureka服务
eureka_client.init_registry_client(eureka_server='http://eureka1x:9091/eureka/,http://eureka2x:9092/eureka/',
app_name='your_app_name', instance_port='3333')
# 采用tornado定义接口服务
app = tornado.web.Application(handlers=[(r"/test01Query", Test01Handler), (r"/test02Query", Test02Handler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
# 指定进程数
http_server.start(4)
tornado.ioloop.IOLoop.instance().start()
启动命令
workdir=$(cd $(dirname $0); pwd)
cd $workdir
cd api
nohup python your_server.py &
echo "start webserver"