我有一个项目,我正在使用Twisted作为我的Web服务器.当发生异常(例如网络错误)时,它会打印到控制台.
我已经记录了Python的内置日志模块 - 有没有办法告诉反应堆使用它?
通常的模式是什么?
我正在为作为HTTP服务器运行的应用程序的一部分编写单元测试.我一直试图采用的方法是导入包含HTTP服务器的模块,启动它.然后,单元测试将使用urllib2连接,发送数据和检查响应.
我们的HTTP服务器使用Twisted.这里的一个问题是我不熟悉Twisted :)
现在,我实例化我们的HTTP服务器并在setUp()方法中启动它,然后我在tearDown()方法中停止它.
问题是,Twisted看起来不像这样,它只会运行一个单元测试.在第一个之后,反应堆将不再启动.
我搜索,搜索和搜索,我似乎无法找到一个有意义的答案.
我完全采取了错误的方法,还是只是遗漏了一些明显的东西?
使用win32api.setConsoleCtrlHandler()时,我能够从Windows接收关闭/注销/等事件,并干净地关闭我的应用程序.
但是,这仅适用于在python.exe下运行应用程序(即,它具有控制台窗口),但不在pythonw.exe(无控制台窗口)下运行.
当您没有控制台且没有窗口可以接收这些事件时,Windows中是否有相同的方式来接收这些事件?或者,是否有一种隐藏控制台窗口的编程方式?
要明确 - 我的目标是能够成功接收Windows关闭/注销/等事件,而无需显示任何类型的控制台窗口.
编辑: 我一直在玩,而且我已经走得更远了.我为此写了一段测试代码.当我执行"taskkill/im pythonw.exe"时 - 它将收到该消息.
但是,当我在Windows上执行关机,重新启动或注销时,我没有收到任何消息.
这是整个事情:
""" Testing Windows shutdown events """
import win32con
import win32api
import win32gui
import sys
import time
def log_info(msg):
""" Prints """
print msg
f = open("c:\\test.log", "a")
f.write(msg + "\n")
f.close()
def wndproc(hwnd, msg, wparam, lparam):
log_info("wndproc: %s" % msg)
if __name__ == "__main__":
log_info("*** STARTING ***")
hinst = win32api.GetModuleHandle(None)
wndclass = win32gui.WNDCLASS()
wndclass.hInstance = hinst
wndclass.lpszClassName = "testWindowClass"
messageMap = { win32con.WM_QUERYENDSESSION : wndproc,
win32con.WM_ENDSESSION : …Run Code Online (Sandbox Code Playgroud) 我正在努力解决Python应用程序中的内存泄漏问题.
事情就是这样 - 它实际上只发生在Windows Server 2008(而不是R2)上,而不是早期版本的Windows上,它看起来也不像在Linux上发生的那样(尽管我在Linux上的测试几乎没有那么多) ).
要解决它,我在垃圾收集器上设置调试:
gc.set_debug(gc.DEBUG_UNCOLLECTABLE | gc.DEBUG_INSTANCES | gc.DEBUG_OBJECTS)
Run Code Online (Sandbox Code Playgroud)
然后,我定期记录gc.garbage的内容.
事实是,gc.garbage总是空的,但我的内存使用率却在上升和上升.
非常令人费解.
我有一个多线程的Python应用程序,我目前正在排除非常高(90%或更高)的CPU使用率.
我将尝试使用分析器,但我想看看是否有一种方法可以从应用程序中获得每个线程的CPU使用率.我知道os.times()将获得整体CPU使用率 - 我是否可以在每个线程中运行以获取每个线程的用法?确定哪个线程正在吃CPU是非常有帮助的.
我们有一个(Windows)应用程序,我们使用它来分发整个Python安装(包括我们使用的几个第三方模块),因此我们具有一致性,因此我们不需要单独安装所有内容.这很好用,但应用程序非常庞大.
显然,我们不使用运行时中的所有可用内容.我想减少运行时只包括我们真正需要的东西.
我打算尝试py2exe,但我想尝试找到另一个解决方案来帮助我删除Python运行时不需要的部分.
是否可以从 Python 中调用ShutdownBlockReasonCreate、ShutdownBlockReasonDestroy和win32 API?ShutdownBlockReasonQuery我在图书馆的任何地方都找不到它们pywin32。
谢谢!
我正在Python 2.7.8下开发。其中的 _ssl.pyd 是使用 OpenSSL 1.0.1h 构建的。
但是,我还有 pyOpenSSL 0.10(我知道,旧版本)来满足所需的依赖关系。pyOpenSSL 包括 libeay32.dll 和 ssleay32.dll 版本 0.9.8o。
这是怎么回事?是因为 pyOpenSSL 提供了 OpenSSL 库的直接接口吗?
python ×9
twisted ×2
memory-leaks ×1
openssl ×1
pyopenssl ×1
unit-testing ×1
winapi ×1
windows ×1
x11 ×1