Ошибка очереди задач Google App Engine с использованием Python API

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

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

Любая помощь в решении этой проблемы будет принята с благодарностью.


person GrumpyCanuck    schedule 23.01.2011    source источник
comment
Да, я заметил, что он использует Python 2.7, так как мне сказать dev_appserver.py, что я хочу использовать (например) python2.5 на своем Macbook?   -  person GrumpyCanuck    schedule 25.01.2011


Ответы (1)


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

python2.5 /usr/local/bin/dev_appserver.py .
person GrumpyCanuck    schedule 26.01.2011