1
私はPython Web Devの詳細を学ぶためにFlask + GAEプロジェクトのタスクキューアクションを実装しましたが、次のエラーが発生します。それに関する情報を追跡する。Python APIを使用したGoogle App Engineのタスクキューエラー
----------------------------------------
Exception happened during processing of request from ('0.1.0.2', 80)
Traceback (most recent call last):
File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 284, in _handle_request_noblock
self.process_request(request, client_address)
File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 311, in process_request
self.shutdown_request(request)
File "/usr/local/Cellar/python/2.7.1/lib/python2.7/SocketServer.py", line 459, in shutdown_request
request.shutdown(socket.SHUT_WR)
AttributeError: 'FakeConnection' object has no attribute 'shutdown'
----------------------------------------
私は自分のアプリケーション内の別のビューからのPOSTリクエストを受け付けているビューを持っており、私の知る限り、それが最後に取得し、これを吐く以外、私は期待していすべての処理を行っていますでる。
INFO 2011-01-23 21:41:16,865 dev_appserver.py:3317] "GET /main/new HTTP/1.1" 200 -
INFO 2011-01-23 21:41:23,753 dev_appserver.py:3317] "POST /main/new HTTP/1.1" 302 -
INFO 2011-01-23 21:41:24,528 dev_appserver.py:3317] "POST /tasks/check_for_spam HTTP/1.1" 200 -
check_for_spamのものは、それがスパムであるかどうかを決定するためにDefensio APIを介していくつかのデータを走る機能である:私はGAEのdevserverログにこの出力を見るので、私はこれを推測しています。コードはこちら
from google.appengine.api import taskqueue
from google.appengine.ext import db
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from application.models import LieModel
from defensio import *
class SpamChecker(webapp.RequestHandler):
def post(self):
id = self.request.get('id')
client = Defensio('577709b41d42f2c34f80cd57d50333d6')
q = LieModel.all()
q.filter("id = ", id)
results = q.fetch(1)
for result in results:
title_doc = {'content': result.title, 'type': 'comment', 'platform':'python'}
body_doc = {'content': result.body, 'type': 'comment', 'platform':'python'}
title_status,title_response = client.post_document(title_doc)
body_status,body_response = client.post_document(body_doc)
lie_is_spam = False
if title_status == 200 and title_response['defensio-result']['spaminess'] > 0.5:
lie_is_spam = True
if body_status == 200 and body_response['defensio-result']['spaminess'] > 0.5:
lie_is_spam = True
if lie_is_spam:
lie_k = db.Key.from_path('Lie', id)
lie = db.get(lie_k)
lie.delete()
def main():
run_wsgi_app(webapp.WSGIApplication([
('/tasks/check_for_spam', SpamChecker)
]))
if __name__ == '__main__':
main()
この問題を解決するための助けがあれば幸いです。
Python 2.5を使ってみてください。 –
ええ、私はそれがPython 2.7を使用していたことに気づいたので、dev_appserver.pyに私のMacbookでpython2.5を使用したいと伝えたいのですが? – GrumpyCanuck