我正在尝试编写一个信号处理程序,它将从类变量中调用方法。
我的代码如下:
import daemon
class bar():
def func():
print "Hello World!\n"
def sigusr1_handler(signum,frame):
foo.func()
def main():
foo = bar()
context = daemon.DaemonContext(stdout=sys.stdout)
context.signal_map = {
signal.SIGUSR1: sigusr1_handler
}
with context:
if (__name__="__main__"):
main()
这不起作用。当我在守护进程上执行kill -USR1时,Python会抛出一个NameError异常。 我也尝试在main中定义函数来处理异常并从信号处理程序调用这些函数,但这也不起作用。
有人对如何实现这个有想法吗?
答案 0 :(得分:0)
一种选择是在sigusr1_handler
功能中导入类栏。无论如何将它放在不同的文件中可能是个好主意
答案 1 :(得分:0)
你导入信号吗?因为如果我运行代码我会得到:
Traceback (most recent call last):
File "pydaemon.py", line 16, in <module>
signal.SIGUSR1: sigusr1_handler
NameError: name 'signal' is not defined
您可以通过以下方式解决此问题:
import signal
看看你的字符串比较oparator
with context:
if (__name__="__main__"):
main()
我通常使用'=='运算符而不是'='