4

GAE用のアプリを開発していて、タスクキューを使用しようとしています。現在、GAE App Launcherを介してWindowsボックスで実行しているものがありますが、何かをキューに入れようとすると、開発用の「サーバー」がクラッシュし、ログが厄介な出力でいっぱいになります。

taskqueue.add(url='/processWork', params={'key', myModel.key()})

他の作業とのトランザクションでこれを実行しようとしたので、作業が正常にキューに入れられていると確信しています。

ただし、その後すぐに開発サーバーがクラッシュし、ログは次のようなものでいっぱいになります。

ERROR    2011-02-06 17:04:23,289
__init__.py:395] global name 'true' is not defined Traceback (most recent call last):   File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 517, in __call__
    handler.post(*groups)   File "C:\Projects\GAE\MyApp\main.py", line 114, in post
    activity.approved = true NameError: global name 'true' is not defined INFO     2011-02-06 17:04:23,309 dev_appserver.py:3317] "POST /processWork HTTP/1.1" 500 - WARNING  2011-02-06 17:04:23,309 taskqueue_stub.py:586] Task named "task1" on queue "default" failed with code 500; will retry in 30 seconds Traceback (most recent call last):   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 311, in process_request
    self.shutdown_request(request)   File "C:\Python27\lib\SocketServer.py", line 459, in shutdown_request
    request.shutdown(socket.SHUT_WR) AttributeError: 'FakeConnection' object has no attribute 'shutdown' ERROR    2011-02-06 17:04:23,312 dev_appserver_main.py:494] Error encountered: Traceback (most recent call last):
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver_main.py", line 488, in main
    http_server.serve_forever()
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3947, in serve_forever
    self.handle_request()
    File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3913, in handle_request
    self._handle_request_noblock()
    File "C:\Python27\lib\SocketServer.py", line 287, in _handle_request_noblock
    self.shutdown_request(request)
    File "C:\Python27\lib\SocketServer.py", line 459, in shutdown_request
    request.shutdown(socket.SHUT_WR)   AttributeError: 'FakeConnection' object has no attribute 'shutdown'   Now terminating.
---------------------------------------- Exception happened during processing of request from ('0.1.0.2', 80)
---------------------------------------- 2011-02-06 09:04:23 (Process exited with code 1)

謝罪-以下の返信でタイプミスが見つかりました(TrueではなくTrue)。しかし、元の問題を解決しようとすると、これは忍び寄りました。タイプミスを修正すると、キューに入れられた作業は完了しますが、サーバーはログに次のエラーでフォールオーバーします。

INFO     2011-02-06 17:50:32,882 dev_appserver.py:3317] "POST /processWork HTTP/1.1" 200 -
Traceback (most recent call last):
  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 311, in process_request
    self.shutdown_request(request)
  File "C:\Python27\lib\SocketServer.py", line 459, in shutdown_request
    request.shutdown(socket.SHUT_WR)
AttributeError: 'FakeConnection' object has no attribute 'shutdown'
ERROR    2011-02-06 17:50:32,884 dev_appserver_main.py:494] Error encountered:
Traceback (most recent call last):

  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver_main.py", line 488, in main
    http_server.serve_forever()

  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3947, in serve_forever
    self.handle_request()

  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3913, in handle_request
    self._handle_request_noblock()

  File "C:\Python27\lib\SocketServer.py", line 287, in _handle_request_noblock
    self.shutdown_request(request)

  File "C:\Python27\lib\SocketServer.py", line 459, in shutdown_request
    request.shutdown(socket.SHUT_WR)

AttributeError: 'FakeConnection' object has no attribute 'shutdown'

Now terminating.
----------------------------------------
Exception happened during processing of request from ('0.1.0.2', 80)
----------------------------------------
2011-02-06 09:50:32 (Process exited with code 1)

taskqueue.addの呼び出しを削除すると、正常に機能します(もちろん、キューに入れられた作業はありません)。何が問題になっていますか?

4

5 に答える 5

8
File "C:\Python27\lib\SocketServer.py"

AppEngineはPython2.5で実行され、Python2.7を使用しています。

于 2011-02-06T19:17:21.927 に答える
5

単純なタイプミスのように見えます:

__init__.py:395] global name 'true' is not defined 
Traceback (most recent call last):   
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\webapp\__init__.py", line 517, in __call__
    handler.post(*groups)   
File "C:\Projects\GAE\MyApp\main.py", line 114, in post
    activity.approved = true NameError: global name 'true' is not defined

main.py395行目に移動して変更します

 activity.approved = true

 activity.approved = True

(大文字の「T」)

于 2011-02-06T17:37:21.330 に答える
0

ええ、2.7を使用しているからです。 2.6shutdown()で追加されました。2.5を実行する必要があります。

于 2011-02-06T20:38:39.593 に答える
0

これに対する修正で実際にモンキーパッチを適用できます(Python 2.7.1、pyOpenSSL 0.12、およびWerkzeug 0.6.2の時点で必要です)。

### WARNING: Monkey patch in a fix to correct pyOpenSSL's
### incompatible ServerSocket implementation that accepts zero arguments
### for shutdown() instead of one. Fix is for:
### lib/python2.7/SocketServer.py:459's shutdown() call because that
### appears to be easier to quickly hack in versus patching
### pyOpenSSL. Again, don't use this for production, but it's great for
### testing.
def monkeyp_ssl_shutdown_request(self, request):
    try:
        request.shutdown()
    except socket.error:
        pass #some platforms may raise ENOTCONN here
    self.close_request(request)
from SocketServer import TCPServer
TCPServer.shutdown_request = monkeyp_ssl_shutdown_request

きれいではありませんが、誰かがSSLTCP接続を閉じたときの例外よりはましです。

app.run(ssl_context='adhoc') # Now works
于 2011-05-23T18:58:55.767 に答える
0

もう1つの考えられる理由は、miduleのインポートに失敗したことです。

from google.appengine.api import taskqueue
于 2013-05-05T20:01:48.527 に答える