В настоящее время у меня есть очередь push-задач Google App Engine, которая предназначена для создания отчетов по запросам в BigQuery DB.
Задачи push генерируются cron, который добавляет задачу отчетов в очередь
Вот конфигурация очереди:
- name: reporting-push-queue
target: reporting-dispatcher
rate: 1/m
bucket_size: 5
retry_parameters:
min_backoff_seconds: 60
max_backoff_seconds: 120
max_doublings: 5
task_retry_limit: 2
task_age_limit: 10m
Для небольших запросов эта конфигурация может правильно запускать и генерировать отчет. При чуть более длинных запросах время ожидания и код состояния 502 возвращаются через 30 секунд.
Предполагается, что на основе push-заданий в гибких средах может потребоваться до 10 минут, но это не так.
Вот версии lib, которые я использую с Python 3
google-cloud==0.34
google-cloud-bigquery==1.5
google-cloud-pubsub==0.37
Вот файл yaml, который используется.
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT reporting-dispatcher:app
threadsafe: true
runtime_config:
python_version: 3
service: reporting-dispatcher
instance_class: F1
automatic_scaling:
min_num_instances: 1
max_num_instances: 10
max_concurrent_requests: 1
liveness_check:
check_interval_sec: 60
timeout_sec: 60
failure_threshold: 10
success_threshold: 1
readiness_check:
check_interval_sec: 60
timeout_sec: 60
failure_threshold: 10
success_threshold: 1