Почему моя функция Cron Scheduled Cloud для Firebase работает по тихоокеанскому времени, а не по UTC?

У меня есть функция "Запланированное облако" (с использованием нового решения Google), которая должна запускаться каждый понедельник в 12:00.

export const updateHighScores = functions.pubsub.schedule('0 0 * * 1').onRun((context) => {

    // (code)
    // console.log(‘This code will run every Monday at 12:00 AM UTC’);

});

Функции приборной панели

Я ожидал, что это будет работать в 12:00 UTC; однако, когда наступило полночь UTC, ничего не произошло. Поэтому я лег спать, опечаленный тем, что моя запланированная облачная функция не работала, но решил продолжать работать с ней.

Но на следующий день я проверил журналы, и похоже, что они работали, но вместо этого они работали в 12:00 по тихоокеанскому времени.

Журнал функций

  • Регион облачной функции установлен на us-central1, но я не думаю, что это влияет на это.
  • Часовой пояс моего компьютера установлен по тихоокеанскому времени, и я нахожусь в центральном времени, но я не думаю, что это будет иметь значение.
  • Я также щелкал в Firebase и Google Cloud Platform, чтобы увидеть, возможно, у меня был параметр, который влиял на него, но я ничего не нашел.

Есть идеи, почему это произошло в полночь по тихоокеанскому времени, а не в UTC?

(Я собираюсь сделать кучу догадок и проверок, меняя все эти переменные и наблюдая, как это влияет на запланированную облачную функцию, но решил, что с таким же успехом можно спросить здесь, если кто-то знает с ног на голову. Спасибо!)

1 ответ

Решение

Запланированные функции запускаются по расписанию Google Cloud Scheduler. При развертывании с помощью Firebase CLI автоматически создается запись в Cloud Scheduler. Если вы нажмете на консоль Cloud, чтобы показать свои расписания, вы увидите, что часовой пояс установлен в "America/Los_Angeles", то есть PST.

Часовой пояс устанавливается с помощью API построителя функций. Вы можете прочитать об этом в документации.

Я делаю что-то вроде этого

exports.scheduledFunction = functions.pubsub
.schedule("0 4 * * *")
.timeZone("Asia/Baku")
.onRun((context) => {
    groupCustomers.set({});
    tables.set({});
    calledCustomers.set({});
    groups.set({
        A: { name: "Altering", activeOnTablet: false },
        
    });

    return null;
});
Другие вопросы по тегам