libvirt-go DomainEventLifecycleRegister "could not initialize domain event timer"
libvirt-go DomainEventLifecycleRegister "could not initialize domain event timer"
我已经安装 libvirt-dev
、编译并 运行 在 Ubuntu 盒子上的代码:
package main
import (
"fmt"
"github.com/libvirt/libvirt-go"
)
func main() {
conn, _ := libvirt.NewConnect("qemu:///system")
defer conn.Close()
cb := func(c *libvirt.Connect, d *libvirt.Domain, event *libvirt.DomainEventLifecycle) {
fmt.Println(fmt.Sprintf("Event %d", event.Event))
}
_, err := conn.DomainEventLifecycleRegister(nil, cb)
if err != nil {
panic(fmt.Sprintf("cannot register libvirt domain event: %s", err))
}
}
得到:cannot register libvirt domain event: virError(Code=1, Domain=0, Message='internal error: could not initialize domain event timer')
我正在使用 libvirt-go while digital ocean go-libvirt LifecycleEvents
效果很好...
有什么想法吗?
您还没有注册任何事件循环实现。
最简单的方法是在打开 libvirt 连接之前调用 EventRegisterDefaultImpl
,然后生成一个在无限循环中运行 EventRunDefaultImpl
的 goroutine
更难的方法是使用 EventRegisterImpl
提供您自己的自定义事件循环实现
我已经安装 libvirt-dev
、编译并 运行 在 Ubuntu 盒子上的代码:
package main
import (
"fmt"
"github.com/libvirt/libvirt-go"
)
func main() {
conn, _ := libvirt.NewConnect("qemu:///system")
defer conn.Close()
cb := func(c *libvirt.Connect, d *libvirt.Domain, event *libvirt.DomainEventLifecycle) {
fmt.Println(fmt.Sprintf("Event %d", event.Event))
}
_, err := conn.DomainEventLifecycleRegister(nil, cb)
if err != nil {
panic(fmt.Sprintf("cannot register libvirt domain event: %s", err))
}
}
得到:cannot register libvirt domain event: virError(Code=1, Domain=0, Message='internal error: could not initialize domain event timer')
我正在使用 libvirt-go while digital ocean go-libvirt LifecycleEvents
效果很好...
有什么想法吗?
您还没有注册任何事件循环实现。
最简单的方法是在打开 libvirt 连接之前调用 EventRegisterDefaultImpl
,然后生成一个在无限循环中运行 EventRunDefaultImpl
的 goroutine
更难的方法是使用 EventRegisterImpl