Странное накопление данных HTTP на App Engine с Python и CouchDB - PullRequest
3 голосов
/ 09 февраля 2011

Я пытаюсь создать относительно простое приложение App Engine, которое ежедневно выбирает несколько страниц и отправляет данные на сервер CouchDB. В моем приложении App Engine есть следующий код (с библиотекой couchdb-python):

    # post the result to CouchDB
    price_data = {
      'source': 'blah',
      'date': str(result.headers['date'])
    }
    db.save(price_data)
    db.put_attachment(price_data, file_one, 'prices_one.txt')
    db.put_attachment(price_data, file_two, 'prices_two.txt')

file_one и file_two являются результатами предыдущих запросов urlfetch.

Теперь все это работает нормально, за исключением того, что первое вложение публикуется с price_data JSON ({ 'source': 'blah', 'date': 'date here'}) в начале текстового файла prices_one, а второе вложение имеет префикс как JSON price_data, так и всего *. 1011 * текстовый файл, за которым следует фактический prices_two.txt файл.
Я уверен, что если бы я попытался добавить третье вложение, он бы опубликовал все накопленные данные в этом.
Если я захожу на CouchDB, чтобы посмотреть файл в БД, это полный файл, просто с { 'source': 'blah', 'date': 'date here'} в самом начале.

Есть идеи, что может заставить App Engine повторную отправку предыдущих данных с каждым новым HTTP POST? Кроме того, я должен отметить, что до того, как я начал использовать библиотеку couchdb-python, он делал то же самое, так что, похоже, это что-то связанное с App Engine, чего я не понимаю.

1 Ответ

1 голос
/ 10 февраля 2011

Во время исследования попытайтесь использовать необработанную HTTP-библиотеку вместо библиотеки CouchDB. Я предлагаю собственную библиотеку App Engine (urlfetch или, возможно, urllib2). API CouchDB очень прост, у вас не будет трудностей.

Есть ли разница в результате?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...