Как изменить время ожидания задачи Google Cloud по умолчанию (с целевым http, а не с механизмом приложения)?
Я использую этот пакет для добавления задач Google Cloud в свой проект, и он отлично работает. Проблема в том, что я не могу понять, как увеличить время ожидания запроса http?
4 ответа
Использовать
dispatchDeadline
если вы создаете задачу с помощью nodejs. Источник: https://googleapis.dev/nodejs/tasks/latest/google.cloud.tasks.v2beta3.Task.html.
Пример реализации:
//npm install --save @google-cloud/tasks
const client = new CloudTasksClient();
const project = 'your-project-name';
const queue = 'your-queue-name';
const location = 'us-central1';
const parent = client.queuePath(project, location, queue);
const serviceAccountEmail = 'user@projectname_or_whatever.iam.gserviceaccount.com';
const url = 'http://destination_url'
const payload = JSON.stringify({ "user": "Manuel Solalinde", 'mode': 'secret mode' })
const body = Buffer.from(payload).toString('base64')
// task creation documentation: https://googleapis.dev/nodejs/tasks/latest/google.cloud.tasks.v2beta3.Task.html
const task = {
httpRequest: {
httpMethod: 'POST',
url: url,
dispatchDeadline: 30 * 60, //30 minutes
body: body,
headers: { "Content-type": "application/json" },
oidcToken: {
serviceAccountEmail,
},
},
};
// Send create task request.
console.log('Sending task:');
const [response] = await client.createTask({ parent, task });
console.log(`Created task ${response.name}`);
dispatch_deadline
свойство объекта Tasks должно позволить вам увеличить время ожидания запроса. По умолчанию 10 минут для целей HTTP.
Если вы пришли сюда, используя NodeJS, изменитеrequest
чтобы разрешить тайм-аут до 30 минут, например:
request.task.dispatchDeadline = { seconds: 60 * 30 }
Работает с:
@google-cloud/tasks : 3.1.2
Не могу комментировать из-за отсутствия репутации, но первое решение неверно. dispatch_deadline является частью запроса задачи, а не httpRequest. Его следует переместить на один уровень этого объекта.
task: {
dispatch_deadline: 200
httpRequest: {
}
}
Однако я попытался реализовать это, и, к сожалению, запрос просто зависает, когда вы добавляете этот флаг. Моя просьба никогда не доходит до создания задачи. Я думаю, что это неработающая функция.