事件路径配置

事件路径配置在ftrack_events_manager_helper.config中,只需要配置EVENTS_ROOTS这个变量即可。

编写事件

事件可以分类函数式和类式,写完后只需要用ftrack_events_manager_helper.subscribe装饰一下即可。

subscribe装饰器有3个参数:

  1. topic: 订阅项,默认为 ftrack.update
  2. subscriber: 订阅的信息
  3. priority: 优先级,默认为 100

函数式事件

事件函数会接收两个参数,sessionevent

同时,ftrack_events_helper下还提供了logger对象用于打印消息,并且消息会记录到数据库中,用于前端查看。

logger提供了:info/warning/error/exception四个方法可以使用

from ftrack_events_helper import subscribe, logger

@subscribe()
def test1(session, event):
    logger.info('这是test1的log')
1
2
3
4
5

类式事件

类式事件需要继承ftrack_events_helper.EventBase这个类,这个类提供了内置的logger对象

from ftrack_events_helper import EventBase, subscribe

@subscribe()
class Test7(EventBase):
    event_name = '事件名'  # 这个类变量可以指定事件名,如果不指定,事件名为类名
    
    # 事件入口,需要提供 event 参数
    def run(self, event):
        print(self.session)  # self.session 就是 ftrack 的 session 对象
        self.logger.warning('这是事件名的log') # 内置了 self.logger 日志输出对象
1
2
3
4
5
6
7
8
9
10

调试事件

调试当前文件

只需要使用ftrack_events_helper.run_test_server函数即可

from ftrack_events_helper import subscribe, logger, run_test_server

@subscribe(priority=80)
def test1(session, event):
    logger.info('这是test1的log')

if __name__ == '__main__':
    run_test_server()
1
2
3
4
5
6
7
8

调试多个文件

只需要在需要运行的文件中设置DEBUG=True,然后运行ftrack_events_helper.events_test_server.py文件即可。

TIP

如果所有文件都不设置DEBUG=True,那么ftrack_events_helper.events_test_server.py会加载所有事件。

from ftrack_events_helper import subscribe, logger, run_test_server

DEBUG = True


@subscribe(priority=80)
def test1(session, event):
    logger.info('这是test1的log')

if __name__ == '__main__':
    run_test_server()
1
2
3
4
5
6
7
8
9
10
11

事件范例

https://github.com/Ftrack-Events-Manager/ftrack_events_examplesopen in new window