当前位置: 首页 > 知识库问答 >
问题:

正在调用sys.stderr。fileno(),在检查它是python callable()之后,引发一个AttributeError?

孙修贤
2023-03-14

这真的让我难堪……问题的核心是:

if hasattr(sys.stderr, 'fileno'):
    if callable(sys.stderr.fileno):
       i = sys.stderr.fileno()

当该语句执行时,两个条件都通过了,但是对fileno()的调用却因AttributeError而失败!!不相信我?下面是堆栈转储:

请求方法:GET请求URL:

https://XXXX/YYYY/abcdef/hazards/NSP-F15-22/pdf/

Django版本:1.8.3 Python版本:3.4.0已安装应用:(' django.contrib.admin ',' django.contrib.auth ',' django.contrib.contenttypes ',' django.contrib.sessions ',' django.contrib.messages ',' django.contrib.staticfiles ',' django.contrib.sites ',' django.contrib.flatpages ',' crispy _ forms ',' wkhtmltopdf ',' ckeditor ',...)已安装的中间件:(' django . contrib . sessions . Middleware . session Middleware ',' django . Middleware . common . common Middleware ',' django . Middleware . csrf . csrfviewmedidleware ',' django . contrib . auth . Middleware . authenticationmiddleware ',' django . sessionauthenticationmiddleware ',' django . contrib . messages . Middleware ',' django . Middleware . click jacking . xframeoptions Middleware ',' django . Middleware . security . security Middleware ',' django

回溯:get_response 164 中的文件“/usr/本地/库/python3.4/dist-packages/django/core/处理程序/base.py”。响应 = 响应.render() 渲染 158 中的文件“/usr/本地/库/python3.4/dist-packages/django/模板/响应.py”。self.content = self.rendered_content文件“/usr/本地/库/蟒蛇3.4/dist-packages/wkhtmltopdf/views.py” 在 rendered_content 148.footer_filename=footer_filename) 文件 “/usr/本地/库/蟒蛇3.4/dist-packages/wktopdf/views.py” 在 convert_to_pdf 107 中。返回 wkhtmltopdf(pages=[文件名], **cmd_options) 文件 “/usr/本地/库/python3.4/dist-packages/wkhtmltopdf/utils.py”

101. i=sys.stderr.fileno()

异常类型:位于/abcdef/hazards/NSP-F15-22/pdf的AttributeError/

异常值:“mod_wsgi。“Log”对象没有属性“fileno”

这一切在我们运行django开发服务器的开发环境中运行良好(即不使用wsgi)。但是在我们的生产环境中。我们在apache上提供Django应用程序,在Ubuntu上提供mod_wsgi。所有软件最新稳定版本(Ubuntu 14.04、python 3.4、django 1.8、libapache2-mod-wsgi-py3 3.4-4ubuntu2.1.14.04.2)。

这个问题似乎源于wsgi用mod_wsgi替换sys.stderr。日志对象。早在2013年,django-wkhtml2pdf中就添加了一个补丁来解决这个问题...参见:https://github.com/incuna/django-wkhtmltopdf/pull/40

不幸的是,正如你从轰炸我的代码中看到的那样,sys.stderr确实有一个“fileno”属性,并且fileno属性是可调用的,但是当你去调用它时,Python会引发上面显示的属性错误异常。

我真是束手无策,一定是错过了一些非常愚蠢的东西。我会非常感激任何可能是什么原因或下一步该去哪里的提示。

共有1个答案

孟杰
2023-03-14

此问题似乎是由python 3或与python 3的不兼容引起的。错误报告目前在https://github.com/GrahamDumpleton/mod_wsgi/issues/85.排队

向凯文和格雷厄姆大声疾呼,感谢他们快速和有益的回应。谢谢!

 类似资料:
  • 问题是,如果用户想删除一个项目(长时间点击该项目),我的应用程序会打开删除确认消息和编辑确认。 有什么想法,当用户长时间单击列表项时,如何只打开delete(setOnItemLongClickListener)消息?

  • 本文向大家介绍检查它在C ++中是否是一个好的数组,包括了检查它在C ++中是否是一个好的数组的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个称为正整数的数组。我们必须选择一些数字子集,然后将每个元素乘以一个整数,然后将所有这些数字相加。如果我们可以通过任何可能的子集和被乘数从数组中得到1的和,则该数组将是一个很好的数组。 我们必须检查数组是否正确。 因此,如果输入类似于[12,23,7,

  • 我是RxJava的新手,面临以下问题: 我有两个可完成的对象来存储一些数据。我想触发第一个,然后在第一个成功完成后再启动第二个。应该阻止对第二个Completable的调用,直到第一个完成并成功为止。此外,如果第一个完成时出现错误,则还应跳过另一个。 通过查看留档和其他SO问题,或似乎对我有用。但是在手动测试和单元测试中,我可以看到第二个可完成项是与第一个并行触发的:/ 首先完成 第二个可完成 尝

  • 在JavaScript中,如果窗口大小大于500px,我会告诉浏览器做些什么。我是这样做的: 这很有效,但我想用同样的方法,但有一系列的数字。所以我想告诉我的浏览器,如果窗口大小在500px到600px之间,我就去做一些事情。我知道这是行不通的,但我是这么想的: 在JavaScript中,这可能吗?

  • 问题内容: 在任何地方都找不到可靠的答案。我有一个方法,其中调用finish(),然后再调用onPause()。 是否一定要在调用finish()之后调用onPause()? 问题答案: Android将一般称之为如果你打电话你活动的整个生命周期期间的某个点,除非你叫你的。 运行,并观察您的日志将只包含“ onDestroy”。几乎在其他任何地方调用,您都会看到onPause()被调用。

  • 问题内容: 如果您尝试找出int是否介于数字之间,为什么不能这样做呢? 取而代之的是,您必须做 这似乎有点开销。 问题答案: 一个问题是三元关系构造会引入严重的解析器问题: 当您尝试使用典型的PGS用这些生成物表达语法时,您会发现在first的位置存在shift-reduce冲突。解析需要先查找任意数量的符号,然后才能确定是否已使用二进制或三进制形式,以查看是否存在第二个符号。在这种情况下,您不能