2011-01-23 22 views
1

Я реализовал действие очереди задач для проекта Flask + GAE, с которым я играю, чтобы узнать больше о веб-разработчике Python, и я получаю следующую ошибку, и я не могу отслеживать любую информацию об этом.Ошибка очереди задач Google App Engine с использованием API Python

---------------------------------------- 
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 с другой точкой зрения в моем приложении, и, насколько я могу сказать, что это делает всю обработку, что я ожидал, за исключением, что доходит до конца и плюет это вне. Я предполагаю, что это потому, что я вижу этот вывод в журнал devserver GAE:

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 материал является функция, которая выполняет некоторые данные через API Defensio, чтобы определить, является ли спамом или нет. Вот код

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

Попробуйте использовать Python 2.5. –

+0

Да, я заметил, что он использовал Python 2.7, так как я могу сказать dev_appserver.py Я хочу использовать (для exmample) python2.5 на моем Macbook? – GrumpyCanuck

ответ

3

Проблема исчезла с предложением Роберта Клюина. Я запускаю сервер dev с помощью

python2.5 /usr/local/bin/dev_appserver.py . 
Смежные вопросы