【问题标题】:how to appengine with multithread on localhost如何在本地主机上使用多线程应用引擎
【发布时间】:2012-11-10 10:49:59
【问题描述】:

我在本地服务器上使用python2.7、google app engine和mysql数据库(appengine rdbms)

我的应用程序运行完美(一个连接)但是当两个或多个连接同时, 我得到 1054 套接字错误,因为 basehttpserver 不支持多线程 我能找到解决这种情况的方法吗

我的 appengine 应用程序能否部署到 apache 或如何在 localhost 上进行多线程构建

  File "C:\Python27\lib\SocketServer.py", line 284, in _handle_request_noblock
    self.process_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 310, in process_request
    self.finish_request(request, client_address)
  File "C:\Python27\lib\SocketServer.py", line 323, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2734, in __init__
    BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kwargs)
  File "C:\Python27\lib\SocketServer.py", line 639, in __init__
    self.handle()
  File "C:\Python27\lib\BaseHTTPServer.py", line 343, in handle
    self.handle_one_request()
  File "C:\Python27\lib\BaseHTTPServer.py", line 313, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "C:\Python27\lib\socket.py", line 476, in readline
    data = self._sock.recv(self._rbufsize)
error: [Errno 10054]

【问题讨论】:

  • 你的 app.yaml 中有 threadsafe: true 吗?
  • 嗨 Paul C,是的,我的线程安全是真的

标签: python multithreading google-app-engine


【解决方案1】:
from SocketServer import ThreadingMixIn # socketserver in Python 3
class ThreadingHTTPServer(ThreadingMixIn, BaseHTTPServer): pass # see line 628 in SocketServer.py

你想要一个多线程BaseHTTPServerBaseHTTPServer 继承自 TCPServer,它是单线程的。 SocketServer 使用 ThreadingMixIn 定义 ThreadingTCPServer。 这个mixin可以像上面一样混入BaseHTTPServer

错误说明: 该错误意味着连接在 http-request 的第一行(GET ...)之前被重置。这对 BaseHTTPServer 来说不是问题。它应该继续运行。

如果它不能解决问题,请告诉我。

【讨论】:

    猜你喜欢
    • 2011-07-17
    • 2013-08-28
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多