Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当日志过滤器中的循环中断Django服务器时_Python_Django - Fatal编程技术网

Python 当日志过滤器中的循环中断Django服务器时

Python 当日志过滤器中的循环中断Django服务器时,python,django,Python,Django,我想在Django项目中为python记录器添加一个过滤器;过滤器中有一个while循环(用于等待并允许用户提供响应)。然而,当我尝试实现我的过滤器时,服务器似乎立即中断,我的视图进入无限循环(在终端窗口中测试过滤器时不会发生这种情况) 我的代码如下所示: import logging, time, os # in my Utils.py file: def ErrorReport(msg, notify=False, warnOnly=False): logger.exception("

我想在Django项目中为python记录器添加一个过滤器;过滤器中有一个while循环(用于等待并允许用户提供响应)。然而,当我尝试实现我的过滤器时,服务器似乎立即中断,我的视图进入无限循环(在终端窗口中测试过滤器时不会发生这种情况)

我的代码如下所示:

import logging, time, os

# in my Utils.py file:
def ErrorReport(msg, notify=False, warnOnly=False):
  logger.exception("ErrorReport:%s" % msg, exc_info=True)
  raise RuntimeError('Aborting execution. Terrible things might happen. Check logs for more information')

# in my views.py file:
class ErrorFilter(logging.Filter):
  def __init__(self,level):
    self.level = level
    print level

  def filter(self,record):
    if record.levelno == self.level:
        os.environ["ERROR_FLAG"] = "True"
        timeout = time.time() + 60*1 #set the timeout to 1 minute
        while True:
            print "waiting..."
            keep_going = os.environ.get("CONTINUE_FLAG")
            #wait for user to respond
            if keep_going == "False" or time.time() > timeout:
                Utils.ErrorReport("There's a problem, quiting current process.")
            if keep_going == "True":
                break

logger     = Utils.getLogger() #I format the logger in another python script called Utils
logger.addFilter(ErrorFilter(logging.ERROR)) 

def home(request):
  context_dict = {'boldmessage': "--> To view logs, please turn off any popup blockers <--",'version':"1.1.6"}
  logger.error("faking an error to test new filter")
  return render(request, 'InterfaceApp/home.html', context_dict)
导入日志、时间、操作系统
#在my Utils.py文件中:
def ERRORRREPORT(消息,notify=False,warnOnly=False):
logger.exception(“错误报告:%s”%msg,exc_info=True)
raise RUNTIMERROR('正在中止执行。可能会发生可怕的事情。有关详细信息,请查看日志')
#在my views.py文件中:
类ErrorFilter(logging.Filter):
定义初始(自身,级别):
self.level=level
打印级别
def过滤器(自我,记录):
如果record.levelno==self.level:
操作系统环境[“错误标志”]=“真”
timeout=time.time()+60*1#将超时设置为1分钟
尽管如此:
打印“等待…”
keep_go=os.environ.get(“CONTINUE_标志”)
#等待用户响应
如果keep_go==“False”或time.time()>超时:
ErrorReport(“出现问题,正在退出当前进程。”)
如果keep_going==“True”:
打破
logger=Utils.getLogger()#我用另一个名为Utils的python脚本格式化记录器
logger.addFilter(ErrorFilter(logging.ERROR))
def home(请求):

context_dict={'boldmessage':“-->若要查看日志,请关闭所有弹出窗口阻止程序。不,根本的问题是让您的日志记录程序请求用户输入。@DanielRoseman它要做的就是检查一个标志值,直到计时器用完。我已经让它在非web环境中工作。那么,您确定设置了CONTINUE_标志,并且它是其中之一吗?”“True”或“False”?Utils.ErrorReport“退出当前进程”的方式是什么?@DanielRoseman最初没有设置超时,因此我将超时设置在那里,以防它仍然
,但在Django中超时似乎不起作用。我有其他视图将
继续\u标志的值设置为“True”或“False”“。我编辑了代码以包含
Utils.ErrorReport
功能。ErrorReport中的
logger
是否与Utils.getLogger返回的相同?即它是否具有相同的筛选器?