django datawatch在django安装中运行自动数据检查

django-datawatch的Python项目详细描述


PyPI versionTravis CI build statusCoverage StatusOpen Source LoveMIT Licence

Django数据观察

使用django datawatch,您可以对数据执行任意检查,查看它们的状态,甚至描述如何解决它们。 想想数据的nagios/icinga

检查执行后端

同步

将同步执行所有任务,这不是推荐的,但却是最简单的开始方式。

芹菜

将使用芹菜作为任务代理和执行器异步执行任务。 芹菜由3.1.25支持。

其他后端

可以随意实现其他任务执行后端并发送请求。

安装

$ pip install django-datawatch

django_datawatch添加到INSTALLED_APPS

芹菜节拍数据库调度程序

如果应该使用芹菜节拍数据库调度程序运行datawatch调度程序,则需要为芹菜安装django_celery_beat=4或为芹菜安装django-celery<;4。

django_datawatch.tasks.django_datawatch_scheduler添加到应用程序的CELERYBEAT_SCHEDULE。 此任务应每分钟执行一次,例如crontab(minute='*/1'),请参见示例应用程序。

编写自定义支票

在模块中创建checks.py

fromdatetimeimportdatetimefromcelery.schedulesimportcrontabfromdjango_datawatch.datawatchimportdatawatchfromdjango_datawatch.baseimportBaseCheck,CheckResponsefromdjango_datawatch.modelsimportResult@datawatch.registerclassCheckTime(BaseCheck):run_every=crontab(minute='*/5')# scheduler will execute this check every 5 minutesdefgenerate(self):yielddatetime.now()defcheck(self,payload):response=CheckResponse()ifpayload.hour<=7:response.set_status(Result.STATUS.ok)elifpayload.hour<=12:response.set_status(Result.STATUS.warning)else:response.set_status(Result.STATUS.critical)returnresponsedefget_identifier(self,payload):# payload will be our datetime object that we are getting from generate methodreturnpayloaddefget_payload(self,identifier):# as get_identifier returns the object we don't need to process it# we can return identifier directlyreturnidentifier

。生成

必须产生要检查的有效载荷。然后将为每个有效负载调用check方法。

。检查

必须返回checkResponse的实例。

。获取标识符

必须返回有效负载的唯一标识符。

触发检查更新

当相关数据集发生更改时,也可以触发单个有效载荷的检查更新。 更新触发器的映射在check类的trigger\u update属性中定义。

trigger_update = dict(subproduct=models_customer.SubProduct)

关键是定义触发器的slug,而值是保存时发出触发器的模型。 您必须为每个名为get“slug”>;“u payload”的条目实现一个解析器函数,该函数返回要检查的负载(与.check预期的数据类型或.generate将产生的数据类型相同)。

def get_subproduct_payload(self, instance):
    return instance.product

进行检查

提供了一个管理命令,用于根据所有检查的日程安排对其执行进行排队。 添加crontab以每分钟运行此命令,它将检查是否有事情要做。

$ ./manage.py datawatch_run_checks
$ ./manage.py datawatch_run_checks --slug=example.checks.UserHasEnoughBalance

刷新检查结果

提供管理命令以强制刷新所有现有结果以进行检查。 如果您更改了检查的逻辑,并且不想等到周期性执行或更新触发器时,这将非常有用。

$ ./manage.py datawatch_refresh_results
$ ./manage.py datawatch_refresh_results --slug=example.checks.UserHasEnoughBalance

获取已注册支票的列表

$ ./manage.py datawatch_list_checks

清理数据库

如果删除了检查代码,请删除不必要的检查结果和执行。

$ ./manage.py datawatch_clean_up

设置

DJANGO_DATAWATCH_BACKEND='django_datawatch.backends.synchronous'DJANGO_DATAWATCH_RUN_SIGNALS=True

Django_Datawatch_后端

您可以选择后端来运行任务。支持“django_datawatch.backends.synchronous”和“django_datawatch.backends.celeriy”。

默认值:“django_datawatch.backends.synchronous”

django_datawatch_run_信号

如果需要,请使用此设置禁用在单元测试期间运行post-save更新。

默认值:真

芹菜任务队列

datawatch支持在release<;0.4.0中设置特定队列

切换到芹菜4时,应该使用任务路由来定义任务的队列,请参见http://docs.celeryproject.org/en/latest/userguide/routing.html

贡献

开发环境

  • Docker(至少17.12.0+)
  • Docker合成(至少1.18.0)
  • Docker主机管理器

Docker主机管理器

为了访问浏览器上的应用程序,主机必须能够解析容器的主机名。 我们使用Docker主机管理器来管理主机文件项。

Linux:

$ docker run -d --name docker-hostmanager --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /etc/hosts:/hosts iamluc/docker-hostmanager

对于其他环境,请参见https://github.com/iamluc/docker-hostmanager

设置

我们提供了一个示例应用程序来演示django_datawatch的工作原理。 首先启动包含的Docker容器。

docker-compose up -d

然后设置示例应用程序环境。

docker-compose run --rm django migrate
docker-compose run --rm django loaddata example

安装的suPeruser是密码为“datawatch”的“示例”。

运行检查

登录管理界面,然后打开http://datawatch.rh-dev.eu:8000/。 系统将提示您使用空仪表板。那是因为我们还没有开支票。 让我们排队更新。

docker-compose run --rm django datawatch_run_checks --force

示例应用程序的检查是同步运行的,应立即更新。 如果您决定切换到芹菜后端,现在应该启动芹菜工人来处理检查。

docker-compose run --rm --entrypoint=celery django worker -A example -l DEBUG

要执行芹菜节拍调度程序(它每分钟运行一次datawatch调度程序),只需运行:

docker-compose run --rm --entrypoint=celery django beat --scheduler django_celery_beat.schedulers:DatabaseScheduler -A example

刷新仪表板视图后,您现在将看到一些失败的检查。

Django Datawatch dashboard

运行测试

docker-compose run --rm django test

制作新版本

bumpversion用于管理发布。

将更改添加到CHANGELOG,运行

docker-compose run django bumpversion <major|minor|patch>

然后按下(包括标签)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
创建大十进制对象时发生java错误   java为什么netty日志不显示正确的类和包信息   java AWS Lambda,如何正确实例化AmazonHttpClient?   java如何防止控制器中的Put API受到CheckMarx扫描中反映的XSS攻击?   java如何在Android上滚动时更改图像   java为什么通知没有显示在API 28中?   java分配问题OCJP;为什么我不能将int传递给short?   java在非静态内部类中使用泛型   正则表达式从Java字符串中提取word中指定的日期值   java Primefaces selectManyCheckbox未在bean中填充   美化javaxml输出   java带2个箭头的按位移位和带3个箭头的按位移位有什么区别?   使用JAXB和SpringMVC进行java XML绑定   Java高级功能weblogic中的Web服务   java IIN插入HQL中   缺少java PrintCommandListener   java如何模拟SpringBean的自动连接列表?   javasocket服务器、客户端检测服务器已死亡   将按钮添加到使用java图形的contentPane   java EJB3在第一次运行时调用计时器超时时出错