django datawatch在django安装中运行自动数据检查
django-datawatch的Python项目详细描述
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
刷新仪表板视图后,您现在将看到一些失败的检查。
运行测试
docker-compose run --rm django test
制作新版本
bumpversion用于管理发布。
将更改添加到CHANGELOG,运行
docker-compose run django bumpversion <major|minor|patch>
然后按下(包括标签)。