最近在工做中使用 Django
和 django-rest-framework
来实现 API 开发功能,其中使用到 kafka
做为broker。python
实现功能以下:mysql
POST
方法将数据发送到服务器,经过kafka
写入指定的 topic
;sql
后台单独启动进程产生 消费者
将 broker
的数据写入到 MySQL
shell
此处的进程使用一个单独的 python
文件实现,此时须要配置中使用 django orm
的配置信息,包括一些其余的配置信息。django
其实这些信息也能够使用包含上下文信息的工具:服务器
python manage.py shell
此处特别推荐神器 ipython 安装以下:app
pip install ipython
若是在这个交互环境中,能够享用一切 django
的配置,我通常经常使用于测试 django
的 model
。工具
凡是都有个可是,可是咱们还有 方法二
。(都看到这里了,就忍忍看完)测试
方法一
中很方便,可是使用起来只能在指定的交互环境中使用,不够灵活。spa
【我想要实现的是】:我在任意位置的代码、脚本中均可以很爽的使用 django
的配置
代码以下:
import os,threading import sys BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.extend([BASE_DIR,]) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jrjidfa.settings") import django django.setup() from idfacollect.kafka_utils import Utils as kfk from idfacollect.kafka_utils import Config as cfg class Consumer(threading.Thread): def run(self): kfk.consume_to_mysql(host=cfg.KFK_HOST, port=cfg.KFK_PORT, topic=cfg.KFK_TOPIC_IDFA_DEVICE_STARTUP, group_id=cfg.KFK_GP_TO_MYSQL) kfk.consume_to_mysql(host=cfg.KFK_HOST, port=cfg.KFK_PORT, topic=cfg.KFK_TOPIC_IDFA_APP_CLICK, group_id=cfg.KFK_GP_TO_MYSQL) if __name__ == '__main__': try: for i in range(5): # create 5 thread exectue Consumer t = Consumer() t.start() except Exception as e: print e
说明一下:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 这个是想要使用的 `django` 工程的根目录; sys.path.extend([BASE_DIR,]) # 将项目根目录加入到 python 搜索的 path 中 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jrjidfa.settings") # 设置环境变量中的 DJANGO_SETTINGS_MODULE 设置为 django 配置 import django django.setup() # 启动 django 配置、注册 app 等等初始化操做
总结:接下来就能够愉快的使用了,看上面代码就知道真的很愉快。
以上です!ありがとうございました