详情
Deadline 事件依赖于其软件框架,不能进行实时调试,但是可以通过 Console 窗口快速获取获取事件反馈信息。
若想快速查看事件处理的过程,获取结果,首先通过Panels > Console 开启 Console 窗口。
对于事件编写,除了要先配置正确的事件文件以外,还要在代码中加入打印(可通过 DeadlineEventListener 类的 self.LogInfo 或者 print 等方法将调试信息写入代码中,或通过ClientUtils.LogText(str)方法将信息写入 Deadline 的日志文件中),由于 Deadline 会每隔一段时间才会扫描储存库,扫描的默认值一般为5分钟,当扫描过程中发现事件脚本有新的修改时,才会将修改的事件脚本重新构建到任务中,所以,为了让 Deadline 后台及时更新并构建我们修改的事件脚本,我们需要通过Tools > Synchronize Monitor Script and Plugins 功能手动更新事件脚本。
此时,Console 窗口会提示:***事件脚本有修改,将重新构建事件脚本的提示语。如果你的脚本有语法错误,Console 窗口还会给你打印一条简短的报错信息。然后 Requeue 目标任务,再将任务切换到我们所要的任务状态(先更新脚本,再操作任务,不能先操作任务再更新脚本,否则,事件不会被更新到任务状态中),Deadline 便会通过当前执行任务的机器执行事件脚本,并在Console 窗口显示反馈信息。通过此方法,可以快速对我们的事件脚本进行编写和调试。
关于事件脚本中使用中文
有时会在日志中打印中文信息,则我们需要将中文字符串编码为"gbk"(windows系统)的人类可读懂的代码。需要注意的是:
- 需了解事件脚本在编写时,文本编辑器使用的编码格式是否为utf8,以及操作系统文件在编译中文时,使用的编码格式(Windows下控制台中的编码使用的是gbk)。因此,我们会在 python 脚本文件头部中加入 “# -- coding:utf-8 --” 显式编码注释,文本编辑器在存储脚本时会做相应的修改。
- 中文字符很容易出错,导致插件执行被打断却没有任何反馈信息的假成功状态,这是由于当Deadline后台检测脚本有字符转换的错误时,它可不执行事件脚本。
- 测试 deadline 10.0.6.3 的 Python2 环境打印中文:中文字符串最后一个字符串不能为中文标点符号,否则会报语法错误(控制台在编码中文时,会将最后一个标点符号编码错误为一个‘?’号)。
# -*- coding:utf-8 -*-
def __main__():
print(u"测试中文打印".encode("gbk"))
print(unicode("测试中文打印","utf-8").encode("gbk"))
- 测试在 deadline 10.1 的环境打印中文则很简单,和普通代码一样直接打印,字符串末尾可以有中文标点符号且不用进行字符编码,否则会报错:
# -*- coding:utf-8 -*- def __main__(): print("测试中文打印。")