2011-01-23 5 views
1

Flask + GAE 프로젝트에 대한 작업 대기열 작업을 구현하여 Python web dev에 대해 자세히 알아보고 다음 오류가 발생합니다. 그것에 관한 정보를 추적하십시오.Google App Engine 작업 대기열 오류 (Python API 사용)

---------------------------------------- 
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() 

이 문제를 해결하기위한 도움을 주시면 감사하겠습니다.

+1

파이썬 2.5를 사용해보십시오. –

+0

그래, 내가 파이썬 2.7을 사용하고 있다는 것을 알아 차렸다. dev_appserver.py에게 나의 맥북에서 python2.5를 사용하고 싶다고 어떻게 말 할까? – GrumpyCanuck

답변

3

Robert Kluin의 제안으로 문제가 해결되었습니다. 사용하여 dev에 서버를 시작 해요

python2.5 /usr/local/bin/dev_appserver.py .