← Cloudflare Workers / workers / runtime-apis / handlers
Обработчик Tail
Контекст
tail() обработчик представляет собой обработчик, который вы реализуете при написании Tail Worker. Tail Workers можно использовать для обработки журналов в режиме реального времени и отправки их в сервис журналирования или аналитики.
tail() обработчик вызывается один раз при каждом вызове подключенного Worker-производителя.
Чтобы настроить Tail Worker, см. Документация Tail Workers.
Синтаксис
export default {
async tail(events, env, ctx) {
fetch("<YOUR_ENDPOINT>", {
method: "POST",
body: JSON.stringify(events),
})
}
}from workers import WorkerEntrypoint, fetch
import json
class Default(WorkerEntrypoint):
async def tail(self, events, env, ctx):
await fetch("<YOUR_ENDPOINT>", method="POST", body=json.dumps(events))Параметры
-
eventsмассив- Массив
TailItems. ОдинTailItemсобирается для каждого события, которое запускает Worker. Для клиентов Workers for Platforms с Tail Worker, установленным на dynamic dispatch Worker,eventsбудет содержать два элемента: один для Worker динамической диспетчеризации и один для пользовательского Worker.
- Массив
-
envобъект- Объект, содержащий привязки, связанные с вашим Worker, при использовании формат ES modules, например пространства имён KV и Durable Objects.
-
ctxобъект- Объект, содержащий контекст, связанный с вашим Worker, при использовании формат ES modules. В настоящее время этот объект содержит только
waitUntilфункцию.
- Объект, содержащий контекст, связанный с вашим Worker, при использовании формат ES modules. В настоящее время этот объект содержит только
Свойства
-
event.typeстрока- Тип события. Всегда возвращает
"tail".
- Тип события. Всегда возвращает
-
event.tracesмассив- Массив
TailItems. ОдинTailItemсобирается для каждого события, которое запускает Worker. Для клиентов Workers for Platforms с Tail Worker, установленным на dynamic dispatch Worker,eventsбудет содержать два элемента: один для Worker динамической диспетчеризации и один для пользовательского Worker.
- Массив
-
event.waitUntil(promisePromise): void- См.
waitUntil. Обратите внимание, что в отличие от обработчиков события fetch обработчики tail не возвращают значение, поэтому это единственный способ для trace Workers выполнять асинхронную работу.
- См.
TailItems
Свойства
-
scriptNameстрока- Имя скрипта производителя.
-
eventобъект- Содержит сведения о событии, вызвавшем Worker.
- Для событий fetch:
FetchEventInfoобъект - Для других типов событий:
null, в настоящее время.
- Для событий fetch:
- Содержит сведения о событии, вызвавшем Worker.
-
eventTimestampчисло- Измеряется в формате epoch time.
-
logsмассив- Массив TailLogs.
-
exceptionsмассив- Массив
TailExceptions. Один вызов Worker может привести к нескольким необработанным исключениям, поскольку Worker может регистрировать несколько асинхронных задач.
- Массив
-
outcomeстрока- Результат вызова Worker, один из следующих:
unknown: статус результата не был задан.ok: Вызов worker выполнен успешно.exception: Было выброшено необработанное исключение. Это может происходить по разным причинам, включая:- Необработанное исключение JavaScript.
- Обработчик fetch, который не возвращает Response.
- Внутренняя ошибка.
exceededCpu: Вызов Worker превысил лимит CPU.exceededMemory: Вызов Worker превысил лимит памяти.scriptNotFound: Внутренняя ошибка, вызванная сложностью получения скрипта Worker.canceled: Вызов worker был отменён до завершения. Обычно это происходит, когда клиент разрывает соединение до отправки ответа.responseStreamDisconnected: Поток ответа был разорван во время отложенного проксирования. Это происходит, когда клиент или сервер завершает соединение раньше времени.
- Результат вызова Worker, один из следующих:
FetchEventInfo
Свойства
-
requestобъект -
responseобъект
TailRequest
Свойства
-
cfобъект- Содержит данные из
IncomingRequestCfProperties.
- Содержит данные из
-
headersобъект- Записи имя/значение заголовка (по умолчанию скрываются). Имена заголовков приводятся к нижнему регистру, а значения повторяющихся заголовков объединяются с помощью строки
", "(запятая с пробелом), чередующиеся, аналогично стандарт Fetch ↗.
- Записи имя/значение заголовка (по умолчанию скрываются). Имена заголовков приводятся к нижнему регистру, а значения повторяющихся заголовков объединяются с помощью строки
-
methodстрока- Метод HTTP-запроса.
-
urlстрока- URL HTTP-запроса (по умолчанию скрыт).
Методы
-
getUnredacted()объект- Возвращает объект TailRequest с неотредактированными свойствами
Некоторые свойства TailRequest по умолчанию скрываются, чтобы снизить риск случайной записи чувствительной информации, например учётных данных пользователя или API токенов. Скрытие использует эвристические правила, поэтому возможны как ложные срабатывания, так и пропуски. Клиенты могут вызвать getUnredacted() чтобы обойти редактирование данных, однако им всегда следует внимательно относиться к тому, какая информация сохраняется, независимо от того, используется редактирование или нет.
- Скрытие заголовка: значением заголовка будет строка
“REDACTED”когда имя заголовка (без учёта регистра) равноcookie/set-cookieили содержит подстроку"auth”,“key”,“secret”,“token”, или"jwt". - Редактирование URL: для каждой максимально длинной подстроки символов ID (a-z, A-Z, 0-9, '+', '-', '_') в URL, если она соответствует следующим критериям hex- или base-64-идентификатора, эта подстрока заменяется строкой
“REDACTED”. - Hex ID: содержит 32 или более шестнадцатеричных цифр и только шестнадцатеричные цифры и разделители («+», «-», «_»)
- Base-64 ID: содержит 21 символ или более, а также не менее двух заглавных, двух строчных букв и двух цифр.
TailResponse
Свойства
-
statusчисло- Код состояния HTTP.
TailLog
Фиксирует информацию, переданную функциям console.
Свойства
-
timestampчисло- Измеряется в формате epoch time.
-
levelстрока- Строка, указывающая, какая функция console была вызвана. Одно из:
debug,info,log,warn,error.
- Строка, указывающая, какая функция console была вызвана. Одно из:
-
messageобъект- Массив параметров, передаваемых в функцию console.
TailException
Фиксирует необработанное исключение, возникшее при вызове Worker.
Свойства
-
timestampчисло- Измеряется в формате epoch time.
-
nameстрока- Тип ошибки (например,
Error,TypeError, и т. д.).
- Тип ошибки (например,
-
messageобъект- Описание ошибки (например,
"x" is not a function).
- Описание ошибки (например,
Дополнительные материалы
- Tail Workers - настройте Tail Worker для получения информации о выполнении других Worker.