Я развертываю группу пауков на ScrapingHub. Сам паук работает. Я хотел бы изменить вывод канала в зависимости от того, работает ли паук локально или на ScrapingHub (если он работает локально, то выводится во временную папку, если он работает на выходе ScrapingHub на S3). Идея в том, что я могу использовать переменную окружения в качестве переключателя между ними. Однако, попытка напечатать переменные окружения из settings.py
(в проекте Scrapy), которые я установил с использованием интерфейса ScrapingHub, возвращает None
. Ниже приведен фрагмент кода, который показывает, что я пытался сделать.
Как ни странно, если я по умолчанию кормлю только S3 (без переключения на основе env vars), загрузка S3 работает. Учетные данные S3 также загружаются с использованием переменных среды. Попытка распечатать их также возвращает None
. Однако изменение ключей AWS приводит к сбою загрузки, поэтому значения попадают в Scrapy в какой-то момент времени, возможно, не при первоначальной загрузке файла. Установка переменных среды на уровне проекта или на уровне паука ничего не изменила.
Мой вопрос: как правильно использовать переменные среды в проекте Scrapy, который должен быть развернут на ScrapingHub?
# In settings.py
# Get the AWS credentials from the environment
AWS_ACCESS_KEY_ID = os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = os.environ.get('AWS_SECRET_ACCESS_KEY')
# Print the credentials
print(AWS_ACCESS_KEY_ID) # Outputs None
print(AWS_SECRET_ACCESS_KEY) # Outputs None
FEED_URI = 's3://my-bucket/%(name)s/{}.json'.format(today.strftime('%Y-%m-%d'))
FEED_FORMAT = 'json'
EDIT:
Я нашел билет поддержки на ScrapingHub , где была представлена идентичная проблема. Кажется, проблема в том порядке, в котором настройки интерфейса UI перезаписываются. Там, кажется, нет никакой документации по этому поводу. Кроме того, проблема S3 исчезает со стеком scrapy:1.4
. Использование последнего стека scrapy:1.6
приводит к появлению проблемы. До сих пор нет удовлетворительного решения.