我有一个pylons项目,我需要定期更新一些内存中的结构.这应该按需完成.我决定为此设计一个信号处理程序.用户将SIGUSR1发送到主塔架线程,并由项目处理.
这工作除了处理信号后,服务器崩溃以下异常:
File "/usr/lib/python2.6/SocketServer.py", line 264, in handle_request
fd_sets = select.select([self], [], [], timeout)
select.error: (4, 'Interrupted system call')
有可能解决这个问题吗?
TIA.
解决方法:
是的,有可能,但使用库存Python库并不容易.这是因为Python将所有操作系统错误转换为异常.但是,EINTR应该真正导致重用所使用的系统调用.无论何时开始在Python中使用信号,您都会偶尔看到此错误.
我有code that fixes this(SafeSocket),通过分支Python模块并添加该功能.但它需要在使用系统调用的任何地方添加.所以这是可能的,但并不容易.但是你可以使用我的开源代码,它可以节省你多年的工作.
标签:python,signals,pylons
来源: https://codeday.me/bug/20190614/1237510.html