Example #1
0
def test():
    # 创建协程,多协程公用一个proxy_client
    conf = config.Config()
    conf.set("client", "service", "python_test$EchoService")
    conf.set("client", "zk_connect_str", "172.18.1.22:2181")
    manager = client.Client(TutorialService.Client, conf)
    proxy_client = manager.create_proxy()

    def test_echo(msg):
        global error
        for i in xrange(req_num):
            try:
                proxy_client.echo(msg)
            except Exception, e:
                error += 1
Example #2
0
def process(process_num):
    conf = config.Config()
    conf.set("client", "service", "python_test$EchoService")
    conf.set("client", "zk_connect_str", "172.18.1.22:2181")
    # 每个进程创建一个 client,多个线程公用一个client
    manager = client.Client(TutorialService.Client, conf)
    proxy_client = manager.create_proxy()
    jobs = []
    def test(num):
        for i in range(0,req_num):
            try:
                proxy_client.echo(data)
            except Exception as e:
                print "request error: %s" %e
    thread_jobs = []
    for j in range(0, threads):
        ttd = threading.Thread(target=test, args=(j,))
        ttd.start()
        thread_jobs.append(ttd)
    for thread_job in thread_jobs:
        thread_job.join()
    def phrase_detect(self, text, topN=7):
        d_res = {}
        res = phrase_detect_obj.process(text, topN)
        for (k, v) in res:
            d_res[k] = v
        return d_res


def callback():
    print '\n-----init server object phrase_detect-----\n'
    global phrase_detect_obj
    phrase_detect_obj = Phrase_Detection()


def setLogger():
    filename = "logs/server.log"
    return set_logger(filename)


if __name__ == '__main__':
    branch = sys.argv[1]
    conf_path = 'etc/server.conf.' + branch
    conf = config.Config(conf_path)
    server_demo = server.GeventProcessPoolThriftServer(Processor,
                                                       PhraseHander(), conf)
    server_demo.set_post_fork_callback(setLogger)
    server_demo.set_post_fork_callback(callback)
    print "\n*** Start server ***\n"
    server_demo.start()
Example #4
0
    def echo(self, msg):
        return msg


#定义回调函数, harpc 采用的是多进程方式,此函数在创建进程的时候会进行调用, 具体可以参考thrift python 多进程server
def callback():
    filename = "./logs/serverdemo.log_%s" % os.getgid()
    logging.basicConfig(
        level=logging.DEBUG,
        format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
        filename=filename,
        filemode='w')


if __name__ == '__main__':
    # setting config
    #conf = config.Config("./etc/demo_server.conf")
    conf = config.Config()  # 创建配置文件类
    conf.set("server", "service", "python_test$EchoService")
    #设置服务名,此服务名会在zk上注册
    conf.set("server", "port", "9095")  #设置server 的端口
    conf.set("server", "zk_connect_str", "172.18.1.22:2181")  #设置zk的连接地址
    conf.set("server", "auth_user", "test")  # 设置zk 的授权用户名
    conf.set("server", "auth_password", "test")  # 设置zk 的 授权密码
    conf.set("server", "monitor", "True")  # 设置是否监控server
    # TutorialService.Processor thrift生成的Processor, EchoServiceHandler 上面定义的handler, 此处和原生的thrift相同
    server_demo = server.GeventProcessPoolThriftServer(
        TutorialService.Processor, EchoServiceHandler(), conf)
    server_demo.set_post_fork_callback(callback)  #设置回调函数
    server_demo.start()  #启动服务
Example #5
0
# -*- coding: utf-8 -*-
import time
import logging
from tutorial import TutorialService # 导入thrift生成的service
from bfd.harpc import client  # 导入harpc 的client
from bfd.harpc.common import config # 导入harpc 配置库

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
                    filename='./logs/clientdemo.log',
                    filemode='w')

if __name__ == '__main__':
    # read config file
    conf = config.Config("./etc/demo_client.conf") #读取配置文件
    # setting config  use zk
    # conf = config.Config() # 初始化配置文件
    # conf.set("client", "service", "python_test$EchoService") # 设置服务名,此处和server的相同
    # conf.set("client", "zk_connect_str", "172.18.1.22:2181") # zk 连接地址

    # setting config direct connect, 不通过zk 进行直连的方式连接server
    # conf = config.Config()
    # conf.set("client", "use_zk", "False")
    # conf.set("client", "direct_address", "127.0.0.1:9095") # ip:port 对应server的ip 和 端口
    manager = client.Client(TutorialService.Client, conf)  #TutorialService.Client thrift生成的Client
    proxy_client = manager.create_proxy()
    for i in range(0, 40):
        print proxy_client.echo("hello world!")
        time.sleep(0.1)
    manager.close()
Example #6
0
def process(proxy_client, process_num):
    global error
    for i in range(0, req_num):
        try:
            proxy_client.echo(test_msg)
        except Exception as e:
            error = error + 1
            print "request error %s" % e
    print("process_num:%s end" % process_num)


if __name__ == '__main__':
    # read config file
    #conf = config.Config("./etc/demo_client.conf")
    # setting config  use zk
    conf = config.Config()
    conf.set("client", "service", "python_test$EchoService")
    conf.set("client", "zk_connect_str", "172.18.1.22:2181")
    manager = client.Client(TutorialService.Client, conf)
    proxy_client = manager.create_proxy()
    jobs = []
    # 创建多线程,多线程公用一个proxy_client
    start = time.time()
    for i in range(0, threads):
        td = threading.Thread(target=process, args=(proxy_client, i))
        td.start()
        jobs.append(td)
    for job in jobs:
        job.join()
    end = time.time()
    req_time = end - start