Пример #1
0
def main():
    logger.init_log('lvl_core', 'lvl_core')
    setproctitle('lvl:core')
    IncomingServer(handle_req, log=False).listen(
        parse_ip_port(
            dict(conf_load('leveldb.ini')).get('leveldb.ini').get(
                'default', 'host'))[-1])
    IOLoop.instance().start()
Пример #2
0
#coding:utf-8

from tornado.ioloop import IOLoop
from tornado.gen import coroutine
from core import APNsClient
from util.stream_config_client import load as conf_load
import time
from encoding import v2_encode
from util.convert import parse_ip_port

compile_type = 'dev'
bundle_id = 'com.beiqi.helpers'

conf = dict(conf_load('apns.ini')).get('apns.ini')
section = ':'.join((compile_type, bundle_id))
cert_fn = conf.get(section, 'cert')


def run():
    device_token = 'fe9ffe531afbab4f8f44cf220de67e9c39ddf45874eaaa90559426d002f56a91'
    device_token = '3f24b320810a1ee6de177f2362f7fb6706a84b92e30a1182ee77443d239c634e'
    apns_client = APNsClient(cert_fn,
                             parse_ip_port(conf.get('_apns', compile_type)),
                             v2_encode)
    for i in xrange(10):
        print 'i = ', i
        apns_client.queue_push(
            device_token, {
                'aps': {
                    'alert': 'hello tornado push' + str(i),
                    'badge': 1,
Пример #3
0
#coding:utf-8
import site, os
site.addsitedir(os.path.dirname(os.path.realpath(__file__)))
site.addsitedir(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
site.addsitedir(
    os.path.join(os.path.dirname(os.path.dirname(os.path.realpath(__file__))),
                 "common_server"))
from util.stream_config_client import load as conf_load
from util.convert import resolve_redis_url

mq_conf = dict(conf_load('mq.ini')).get('mq.ini')
#单通道默认进程数,通过 ratio 字段覆盖
default_process_ratio = mq_conf.get('_task', 'process_ratio')
#单通道是否启动,通过 run 字段覆盖
run_process = mq_conf.get('_task', 'run_process')

for section in (s for s in mq_conf.get_sections() if not s.startswith('_')):
    ratio = mq_conf.get(section, 'ratio') or default_process_ratio
    run_or_not = mq_conf.get(section, 'run') or run_process

    for field in (f for f in mq_conf.get_fields(section)
                  if f.startswith('url_')):
        host, port, db_list, pwd = resolve_redis_url(
            mq_conf.get(section, field))
        channel = mq_conf.get(section, 'ch')
        if isinstance(db_list, int):
            db_list = (db_list, )
        for db in db_list:
            #通过|分隔参数
            output = '|'.join(('redis://{0}:{1}/{2}?pwd={3}#{4}'.format(
                host, port, db, pwd, channel), ratio, run_or_not))
Пример #4
0
#coding: utf-8

from util.redis.redis_client import Redis
from util.stream_config_client import load as conf_load

_redis_conf = dict(conf_load('redis.ini')).get('redis.ini')
baidu_api_redis = Redis(_redis_conf.get('cloud_push', 'url'))


def set_api_key(app_id, api_key, secret_key):
    baidu_api_redis.send_multi_cmd(('set', ':'.join(
        ('appid', app_id, 'apikey')), api_key), ('set', ':'.join(
            ('appid', app_id, 'secretkey')), secret_key))


def init_app():
    app_id = raw_input('app id:')
    api_key = raw_input('API Key:')
    secret_key = raw_input('Secret Key:')
    set_api_key(app_id, api_key, secret_key)

    #不用在此处设置ios证书,因为实际上百度api也是上传证书内容到其服务器
    #与在百度管理后台设置效果一样

    print('初始化成功')


if __name__ == '__main__':
    init_app()
Пример #5
0
#coding:utf-8
from utils import logger
from util.oem_account_key import oem_accounts, beiqi_keys
from util.stream_config_client import load as conf_load
from util.redis.redis_client import Redis
from util.oem_conv import get_mb_key
from util.lib_tr.tr import tr_txt, resolve_lang
from util.lib_tr.langs import sms_template
from vcomcn import vcomcn_sms

_account_cache = Redis(
    dict(conf_load('redis.ini')).get('redis.ini').get('oauth', 'url'))
default_arg = {
    0: '凌拓',
    1: '邦邦熊',
}


def sms_func(api_key):
    """
    获取调用短信方法
    :param api_key:
    """
    logger.debug('sms_func: {0}'.format(api_key))
    if not api_key or api_key in beiqi_keys:
        #没有akey
        return vcomcn_sms

    ob = oem_accounts.get(api_key)
    if not ob:
        #oem key不存在
Пример #6
0
#coding:utf8
from utils import logger
from util.sso.dev_active import *
from util.redis.redis_client import Redis
from util.stream_config_client import load as conf_load
from util.convert import combine_redis_cmds
from util.bit import span_bits
from . import find_push
from copy import deepcopy


group = dict(conf_load('redis.ini'))
redis_conf = group.get('redis.ini')

redis_cal = Redis(redis_conf.get('calculation', 'url'))
dev_filter = Redis(redis_conf.get('dev_filter', 'url'))
account_cache = Redis(redis_conf.get('oauth', 'url'))


def handle_pid_account(account):
    if len(account) == 6:
        # pid
        return account + '@jiashu.com'
    return account

def app_1push(push_body, account):
    """
    app1次推送
    :param push_body:
    :param account:
    :return:
Пример #7
0
#coding:utf-8

from utils import logger
from util.internal_forward.apple_push_encode import encode as apns_encode
from tornado.gen import coroutine
from util.internal_forward.gen_internal_client import GeneralInternalClient
from util.stream_config_client import load as conf_load
from util.convert import parse_ip_port

apns_client = GeneralInternalClient(
    parse_ip_port(
        dict(conf_load('apns.ini')).get('apns.ini').get('_default', 'host')))


@coroutine
def invoke(push_body, channel_args):
    """
    :param push_body: dict
    """
    try:
        if not (push_body and isinstance(push_body, dict)):
            logger.warn('ios_invoke push_body: {0}'.format(push_body))
            return
        if 3 != len(channel_args):
            logger.warn('invalid ios args: {0}'.format(channel_args))
            return

        alert = push_body.get('description')
        push_body = dict(((k, push_body.get(k)) for k in ('cb', 'f', 'id')))

        r = yield apns_client.forward(
Пример #8
0
#coding:utf-8
import torndb
from util.stream_config_client import load as conf_load
from utils import logger
from util.sql_expr import exec_sql
from util.redis.redis_client import Redis
from util.mq_packs.uni_pack import shortcut_mq

group = dict(conf_load('mysql.ini', 'mq.ini'))
mysql_db = torndb.Connection(**group.get('mysql.ini').get_fields('cms'))
mq_conf = group.get('mq.ini')
uni_mq = Redis(mq_conf.get('_dispatch', 'url'))


def _re_notify(pk, packet):
    """
    重新投递
    :param pk: 主键
    :param packet:
    """
    #非mysql频道的投递
    _non_ms = packet.get('_non_mysql')
    if isinstance(_non_ms, dict):
        yield shortcut_mq(_non_ms.get('mqc'), _non_ms.get('mqp'))

    #一次性提交多个外键任务
    for k, is_ms in packet.iteritems():
        if not k.startswith('_mysql'):
            continue
        if not is_ms:
            continue
Пример #9
0
#coding:utf-8
from utils import logger
from datetime import datetime
from langs import date_langs, _mcc_map, time_langs, DEFAULT_LANG
from util.oem_account_key import beiqi_keys, oem_accounts
from util.redis.redis_client import Redis
from util.stream_config_client import load as conf_load
from util.sso.dev_active import get_dev_imeiimsi_etc
from util.convert import is_num, pretty_unit

dev_filter = Redis(
    dict(conf_load('redis.ini')).get('redis.ini').get('dev_filter', 'url'))
CHINA_AREA = {'chs', 'cht'}


def resolve_lang(mcc=None, api_key=None, pid=None):
    """
    多语言翻译策略:
    1. 设备mcc
    2. 无mcc的设备,以帐号api_key优先
    :param mcc:
    :param api_key:
    :param pid:
    """
    if mcc is not None:
        return _mcc_map.get(mcc, DEFAULT_LANG)
    if api_key is not None:
        if api_key in beiqi_keys:
            return DEFAULT_LANG
        d = oem_accounts.get(api_key)
        if d is not None:
Пример #10
0
from utils import logger
from util.convert import resolve_redis_url
from tornado.process import fork_processes
import msgpack
from tornado.ioloop import IOLoop
from tornado.concurrent import TracebackFuture, Future
from tornado.options import options
from setproctitle import setproctitle
from util.stream_config_client import load as conf_load
from util.load import import_object
from util.redis.redis_client import Redis as AsyncRedis
from tornado.gen import coroutine
from util.convert import parse_ip_port
from util.internal_forward.gen_internal_client import GeneralInternalClient

redis_conf = dict(conf_load('redis.ini')).get('redis.ini')
leveldb_conf = dict(conf_load('leveldb.ini')).get('leveldb.ini')


@coroutine
def consume_mq():
    """
    执行单个任务
    :return:
    """
    resp = yield watch_redis.send_cmd('blpop',
                                      0,
                                      watch_channel,
                                      active_trans=False)
    if resp is None:
        return