Metadata-Version: 2.1
Name: sense-core
Version: 0.2.2
Summary: sense core
Home-page: UNKNOWN
Author: kafka0102
Author-email: yujianjia@sensedeal.ai
License: BSD License
Description: # sense-core
        
        sense-core目前包含的功能主要有：
        
        1）配置解析和管理
        
        2）日志打印和收集
        
        3）mysql、es、redis、rabbit基类
        
        4）唯一主键生成
        
        5）多线程和多进程操作封装
        
        6）实用函数
        
        ## 安装方式
        
            pip install sense-core
            
        当前版本是0.1.12
        
        ## 使用指南
        
        使用
            
            import sense_core as sd 
           
        导入模块。sense_core实现上是把库里的文件都导入到__init__.py，所以不需要指定sense_core下的文件。
        另外，最好使用sd别名，避免和其他库使用上冲突。
        
        ### 配置解析和管理
        约定：项目根目录放置配置文件settings.ini，按模块label分块配置各服务模块，格式类似：
        
            [rabbit]
            host = 52.82.48.248
            port = 5672
            user = admin
            password = sense_mq@2018
            
        
        通用配置（如log_path）放到[settings]下，[settings]建议放到配置文件最后。
        
        程序内通过sd.config('label','item')调用,要确保item的key是存在的，否则解析配置会抛出异常。
        
        如果不确定item是否存在可以使用sd.config('label','item','')，不存在的item会赋默认的空值。
        
        对于非docker部署模式，根目录可以放settings.local.ini用于本地开发使用，该文件不要提到git里。
        
        
        ### [日志打印和收集](./docs/log.md)
        
        ### [Mysql封装](./docs/sqlalchemy.md)
        
        ### [ES封装](./docs/es.md)
        
        ### [RabbitMQ封装](./docs/rabbit.md)
        
        ### Reids 封装
        
        只是简单的提供了一个 get_redis_client
        
        ### 其他实用方法
        
        #### 装饰器 try_catch_exception
        脚本的最顶层调用最好都加上这个装饰器，把抛出的异常都捕捉到
        
        #### 装饰器 catch_raise_exception
        
        底层代码调用，打出log并把日志抛到外部
        
        另外，django项目可以依赖sense-django,其提供了 @catch_view_exception ,在每个view方法上面装饰下，
        不需要自己catch异常返回错误的json的信息，简化代码。
        
        #### 多线程和多进程封装
        
        示例代码：
        
            def handle_process_work(job):
                sd.log_info("job={0}".format(job))
                time.sleep(0.1)
            
            def test_multi_process():
                jobs = [i for i in range(100)]
                sd.execute_multi_core("dumb", handle_process_work, jobs, 4, True)
        
        execute_multi_core的最后一个参数表示使用多线程还是多进程，如果work num是1就主进程顺序执行了。
        
        #### 其他
        
        可参考utils.py源码
        
        
        
        
        
Platform: UNKNOWN
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 2.1
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Description-Content-Type: text/markdown
