通过firebase监视django命令的工具集。
django-command-monitor的Python项目详细描述
django命令监视
说明
django命令监视是一个记录django命令进度的工具。它将进程写入firebase中,然后您可以在其中读取数据并对数据执行任何所需的操作。目前,它为每个命令保存最后100次迭代的日志,以避免过度使用firebase数据库。
当前支持:
- django>;=1.11
- Python2&3
如何安装
软件包安装
使用
pip install django-command-monitor
pip install git+https://github.com/orfium/django-command-monitoring.git
设置环境
在django设置文件中,必须包含firebase凭据和标识 项目。
对于您的firebase凭据:
FIREBASE_MONITORING={'API_KEY':'<your FireBase API key>','DOMAIN':'<your FireBase domain>','NAME':'<your FireBase name>','PROJECT_ID':'<your FireBase project id>','SENDER_ID':'<your FireBase sender id>'}
对于您的firebase文件夹:
FIREBASE_MONITORING_KEY='monitor-myapp-production'
如何使用django命令监视运行
完成设置后,只需包含工具并使用MonitoredCommand
类
而不是django的BaseCommand
fromdjango_command_monitorimportmonitorclassCommand(monitor.MonitoredCommand):...
设置变量和命令输入
要为一个用于开发运行的命令禁用命令监视功能,可以包括
--disable_monitor
作为命令中的参数
如果要禁用测试环境中的监视,可以在测试设置中添加变量:
TESTING=True
要设置每次ping之间的时间,请在settingsFIREBASE_MONITORING_INTERVAL_PING=<secs>
中设置以下变量,其中<secs>
为整数,默认为30秒。
要禁用对整个项目的监视,请在“设置”中设置变量FIREBASE_MONITORING_RUN=False
安装后
要为一个用于开发运行的命令禁用命令监视功能,可以包括
--disable_monitor
作为命令中的参数
如果要禁用测试环境中的监视,可以在测试设置中添加变量:
TESTING=True
要设置每次ping之间的时间,请在settingsFIREBASE_MONITORING_INTERVAL_PING=<secs>
中设置以下变量,其中<secs>
为整数,默认为30秒。
要禁用对整个项目的监视,请在“设置”中设置变量FIREBASE_MONITORING_RUN=False
您在firebase中的数据如下:
{"monitor-myapp-production":{"commands":{"<the name of your command with arguments>":{"log":[{"finished":"<DATETIME>","id":"<COMMAND ID>","latest":"<DATETIME>","message":"<MESSAGE>","name":"<COMMAND NAME>","params":"<PARAMETERS>","started":"<DATETIME>","status":"<STATUS>","exception_type":"<EXCEPTION AS STRING>"},{"...":"..."},"..."]},"<another command>":{"...":"..."}}}}
首先,firebase表的名称与settingsFIREBASE_TABLE
中的名称相同。
在键commands
下列出了在monitor.MonitoredCommand
下运行的所有命令。
每个命令都由其名称及其参数标识,即在运行时
python manage.py test_command --verbosity=2
命令名转换为test_command__verbosity_2
。
在每个命令下都有一个键log
,它包含该命令所有运行的列表,其中包含相应的详细信息
对于每个日志,它都保留以下数据:
id
:命令的标识符(目前与上述命令的键相同)name
:命令的名称,即在运行python manage.py test_command --verbossity=2
时,该名称为test_command
status
:命令的状态STARTED
:命令刚刚启动RUNNING
:当前运行的命令FINISHED
:命令自然完成了FAILED
:运行命令时出错。message
保存错误消息,并且exception_type
保留异常的类型SYSTEM_KILL
:命令被系统终止,即heroku根据给定的间隔重新启动dyno。这个 当同一个命令启动一个新周期,并且前一个日志的状态为RUNNING
时,将分配状态,这意味着 在写入firebase之前,命令被强制停止
started
:进程开始的日期时间finished
:进程完成的日期时间。如果流程尚未完成,则值为“无”latest
:最新ping的日期时间。进程在一个线程下运行,该线程在 时间间隔message
:失败命令的消息exception_type
:命令失败时的异常类型params
:命令的参数即python manage.py test_command --verbosity=2
转到verbosity=2
。 多个参数以逗号分隔
最后<DATETIME>
格式如下:yyyy-mm-ddthh:mm:ss.(float)z
待办事项
- [X]在FireBase上处理超时,至少重试3次
- []添加对
BaseCommand
以外的其他命令类的支持