- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个由 HTTPServer
制作的 python 服务器。我想将此服务器用作 Windows 服务:
这是服务器的样子:
class Handler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.wfile.write(bytes("Hi, guys.", "utf8"))
class Server:
def __init__(self, host, port):
self.http_server = HTTPServer((host, port), Handler)
self.thread = threading.Thread(target=self.http_server.serve_forever)
def start(self):
self.thread.start()
def stop(self):
self.http_server.shutdown()
self.thread.join()
@staticmethod
def do_job():
do_some_staff_here()
time.sleep(1)
所以,这很简单。为了创建 Windows 服务,我使用 pywin32。让我们看看我的代码:
class AppServerSvc(win32serviceutil.ServiceFramework):
_svc_name_ = "TestService"
_svc_display_name_ = "TestService"
def __init__(self, args):
win32serviceutil.ServiceFramework.__init__(self, args)
self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)
socket.setdefaulttimeout(60)
self.stop_requested = False
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
win32event.SetEvent(self.hWaitStop)
self.stop_requested = True
def SvcDoRun(self):
servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
servicemanager.PYS_SERVICE_STARTED,
(self._svc_name_, ''))
self.main()
def main(self):
server = Server("", 8080)
server.start()
while not self.stop_requested:
server.do_job()
server.stop()
if __name__ == '__main__':
win32serviceutil.HandleCommandLine(AppServerSvc)
还有一些问题:
self.send_response(200)
时,服务在两种模式下都可以正常工作。那么,这种行为的原因是什么?
更新
当我尝试执行 send_response()
时,我收到下一个错误:
'NoneType' object has no attribute 'write'
最佳答案
我在为 QGIS 编写插件时遇到了同样的错误在Python 3.7中。经过一番挖掘后发现 send_response()
内部调用sys.stderr.write
(在 log_message 中)和 stderr
这里是空的。正如我所不知道的t know much about QGIS and python and plugins and all I can
不知道为什么 s like that. I solved this by simply overriding
我的插件中的 log_message`。
关于python - pywin32 Windows 服务不想发送请求状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52979088/
我正在尝试检查 PyWin 在 Excel 的 COM 接口(interface)中返回的数据是否属于“时间”类型。 这是不起作用的代码: from win32com.client import Di
我在 Win32 上使用 Python 与 OneNote 的 COM 互操作进行交互。 下面是提取笔记本层次结构的最基本代码: import win32com.client onObj = win3
我是一名优秀的程序员,十分优秀!