Почему я получаю связанную с юникодом ошибку ValidationError для сценария python на одном сервере, но не на другом? - PullRequest
0 голосов
/ 26 января 2011

Я запускаю скрипт python для извлечения данных из API AdWords, и он успешно работает на сервере CentOS.Используя тот же файл конфигурации и сценарий на сервере Ubuntu, я получаю ошибку Unicode.Есть какой-то параметр конфигурации, который мне нужно изменить?

Traceback (most recent call last):
  File "adwords_sync.py", line 230, in <module>
    adwords = AdWords(config)
  File "adwords_sync.py", line 37, in __init__
    self.client = AdWordsClient(headers=config.api_headers, config=config.api_config, path=config.api_config['home'])
  File "lib/python2.6/site-packages/adspygoogle/adwords/AdWordsClient.py", line 153, in __init__
    SanityCheck.ValidateConfigXmlParser(self._config['xml_parser'])
  File "lib/python2.6/site-packages/adspygoogle/common/SanityCheck.py", line 96, in ValidateConfigXmlParser
    raise ValidationError(msg)
adspygoogle.common.Errors.ValidationError: Invalid input for <type 'unicode'> '1', expecting 1 or 2 of type <str>.

Файл конфигурации представляет собой файл JSON:

{
  ...
  "api_config": {
    "home": "/srv/logs/pylons",
    "log_home": "/srv/logs/pylons",
    "soap_lib": "2",
    "xml_parser": "1",
    ...
  }
}

Что может быть причиной того, что строка «1» выдает Unicodeошибка на сервере Ubuntu (но не на сервере CentOS)?

1 Ответ

0 голосов
/ 26 января 2011

Проверьте свои версии python, adsygoogle и simplejson на каждом сервере. Я предполагаю, что один из них не синхронизирован на одном из ваших серверов, что приводит к тому, что AdWords принимает строки Unicode на одном, но не на другом (или вызывает синтаксический анализ simplejson для генерирования строк Unicode на одном, а не на другом).

В противном случае, вы можете привести ваши значения как str () перед передачей в парсер конфигурации adwords?

...