srv_utils.py 2.0 KB
Newer Older
B
BinLong 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#coding:utf-8
# Copyright (c) 2019  PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import requests
B
BinLong 已提交
17
import time
18
import paddle
S
shenyuhan 已提交
19
import socket
B
BinLong 已提交
20

B
BinLong 已提交
21
from random import randint, seed
22

B
BinLong 已提交
23
from paddlehub import version
B
BinLong 已提交
24
from paddlehub.common.server_config import default_stat_config
B
BinLong 已提交
25 26 27


def get_stat_server():
B
BinLong 已提交
28 29 30 31 32
    seed(int(time.time()))
    stat_env = os.environ.get('HUB_SERVER_STAT_SRV')
    if stat_env:
        server_list = stat_env.split(';')
    else:
33
        server_list = default_stat_config['server_list']
B
BinLong 已提交
34
    return server_list[randint(0, len(server_list) - 1)]
B
BinLong 已提交
35 36 37 38


def hub_stat(argv):
    try:
S
shenyuhan 已提交
39 40 41
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(('bj.bcebos.com', 80))
        ip_addr = s.getsockname()[0]
42 43 44
        params = {
            'command': ' '.join(argv),
            'hub_version': version.hub_version,
S
shenyuhan 已提交
45 46
            'paddle_version': paddle.__version__,
            'ip_addr': ip_addr
47
        }
B
BinLong 已提交
48 49 50 51
        stat_api = get_stat_server()
        r = requests.get(stat_api, params=params, timeout=0.5)
    except:
        pass
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70


def uri_path(server_url, api):
    srv = server_url
    if server_url.endswith('/'):
        srv = server_url[:-1]
    if api.startswith('/'):
        srv += api
    else:
        api = '/' + api
        srv += api
    return srv


def hub_request(api, params):
    params['hub_version'] = version.hub_version
    params['paddle_version'] = paddle.__version__
    r = requests.get(api, params)
    return r.json()