在 django 项目之外使用 django 项目的配置 settings 信息

简介

最近在工作中使用 Djangodjango-rest-framework 来实现 API 开发功能,其中使用到 kafka 作为broker。

实现功能如下:

  1. POST 方法将数据发送到服务器,通过kafka写入指定的 topic

  2. 后台单独启动进程产生 消费者broker 的数据写入到 MySQL

此处的进程使用一个单独的 python 文件实现,此时需要配置中使用 django orm 的配置信息,包括一些其他的配置信息。

方法一

其实这些信息也可以使用包含上下文信息的工具:

python manage.py shell

此处特别推荐神器 ipython 安装如下:

pip install ipython 

如果在这个交互环境中,可以享用一切 django 的配置,我一般常用于测试 djangomodel

凡是都有个但是,但是我们还有 方法二。(都看到这里了,就忍忍看完)

方法二

方法一 中很方便,但是使用起来只能在指定的交互环境中使用,不够灵活。

【我想要实现的是】:我在任意位置的代码、脚本中都可以很爽的使用 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 等等初始化操作

总结:接下来就可以愉快的使用了,看上面代码就知道真的很愉快。

以上です!ありがとうございました

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值