通过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

安装后

您在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
  • 以外的其他命令类的支持

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

推荐PyPI第三方库


热门话题
我可以用C++代码使用java代码吗?   java使用JSR303在派生类中提供更具体的约束   java在这个查找唯一路径数算法中我做错了什么?   java如何为2个不同的服务提供商使用2个不同的SSL证书?   java在Gridview上绘制文本   java使用连接for循环构建字符串名   java StringBuilder拆分无法处理某些文件   java事件关注EditText   Java Web Start“找不到URL的缓存资源”   java程序从命令行运行的速度比在Eclipse中慢   java为什么HttpServletRequest会截断#字符上的url输入?   java自定义折叠工具栏平滑标题大小调整   使用Mockito对安卓 java中调用另一个静态函数的函数进行单元测试   http在java客户机中使用cachecontrol头   java如何使用。是否使用Delimiter从输入文件中排除标点符号和数字?   使用上下文作为参数/参数的java   java更有效地从Jar中提取文件   java为多个JButton提供相同的actionListener