Как изменить время ожидания задачи 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.

Документация клиентской библиотеки облачных задач для PHP

Если вы пришли сюда, используя NodeJS, изменитеrequestчтобы разрешить тайм-аут до 30 минут, например:

      request.task.dispatchDeadline = { seconds: 60 * 30 }

Работает с:

      @google-cloud/tasks : 3.1.2

Не могу комментировать из-за отсутствия репутации, но первое решение неверно. dispatch_deadline является частью запроса задачи, а не httpRequest. Его следует переместить на один уровень этого объекта.

      task: {
    dispatch_deadline: 200
    httpRequest: {

    }
}

Однако я попытался реализовать это, и, к сожалению, запрос просто зависает, когда вы добавляете этот флаг. Моя просьба никогда не доходит до создания задачи. Я думаю, что это неработающая функция.

Другие вопросы по тегам