我就是不能让它起作用。脚本正确地回答,PowerDNS认为它是工作的,但是这个过程永远不会超越对它的准备状态的认可。
PowerDNS服务器被卡在read()中,端口53上的所有网络连接都被完全忽略。服务器启动pdns_server进程以及脚本本身,什么都不会发生。在第9级进行日志记录是完全没有价值的:什么都不会发生。除了脚本的stderr输出可以看到外,"pdns监视器“也是如此。
我已经把脚本这里。太让人沮丧了..。我遗漏了什么?是io.lines()电话吗?是因为输入被缓冲了吗?
更新:--我正在使用文档来创建这个。我还看过其他语言(我知道一些)--比如v6rev (虽然我不知道Python)和这个例子的后端。
更新2 --我最好提到这也是与gmysql后端结合在一起的;PowerDNS确实允许多个后端,尽管我不知道它的具体细节。我确实切换了配置文件中后端的顺序,之后没有看到任何更改。此外,MySQL查询也能工作。没有pipe后端,MySQL后端可以很好地处理一些事情。
发布于 2011-06-28 16:39:45
没有人有任何提示所以..。这就是我发现的。它确实与缓冲有关--至少,这就是它看起来的样子。代码最初的行如下所示:
print("OK\tPowerDNS backend ok")这些行正是问题所在;用这个序列代替它们是可行的:
print("OK\tPowerDNS backend ok")
io.flush()然而-用以下顺序取代它们不起作用:
io.write("OK\tPowerDNS backend ok")
io.flush()这大概是因为print()和io.write()之间有一些不同。查找有关Lua未缓冲I/O的详细信息,没有发现任何信息。也许我应该使用io.stdout.write()而不是io.write()。
偶然地,我遇到了本帖到Lua-用户邮件列表,其中提到了setvbuf函数。但是,setvbuf函数在Lua5.1中似乎是新的,因此它在Lua5.0中不可用。
https://stackoverflow.com/questions/6499460
复制相似问题