Open6
Cloudflare Worker + Pythonさわる→Honoやるよ
解散
nodeのバージョン管理のnを入れる
Honoでできるようになることを整理
- cronで定期実行
- twitch apiを叩ける
- D1を操作できるようになる(生クエリでOK)
cronはこれでできる
あかん、chatGPTかしこすぎる
CloudflareのHonoでcronジョブと通常のAPIエンドポイントを共存させるためには、cron
用のルートと通常のAPI用のルートを明確に分けて定義することが必要です。Cloudflare Workersにおいて、cron
はScheduledEvent
を使用して実装されますが、通常のHTTPリクエストとは異なります。
以下のように、hono
のインスタンスでルートを設定してみましょう。
ステップ 1: honoとCronの設定
-
Honoのインストール
hono
をnpmでインストールします。npm install hono
-
Workerのコード
以下のコード例では、hono
を使った通常のHTTPエンドポイントと、ScheduledEvent
を使ったCronジョブを同じWorker内で設定しています。import { Hono } from 'hono'; // Hono インスタンスを作成 const app = new Hono(); // 通常のAPIエンドポイント app.get('/api/hello', (c) => { return c.json({ message: 'Hello, World!' }); }); // Cron Jobのハンドリング (この部分はHTTPリクエストではなく、ScheduledEventとして実行されます) export default { fetch: app.fetch, // Honoのルートを処理 scheduled: (event: ScheduledEvent) => handleScheduledEvent(event), // Cronイベントの処理 }; // Cron Job の処理関数 async function handleScheduledEvent(event: ScheduledEvent) { console.log('Cron job executed at', event.scheduledTime); // ここで必要なジョブを実行 }
-
Cronトリガーの設定
Cloudflare Dashboardで、対象のWorkerに対してCronトリガーを設定します。- Cloudflare Workersのダッシュボードにアクセス。
- 対象のWorkerを選択し、"Triggers"セクションで"Add Cron Trigger"を選択。
- Cron式(例えば、毎日深夜に実行するなら
0 0 * * *
など)を設定。
解説
-
app.get('/api/hello')
: これは通常のHTTPリクエストに対するエンドポイントで、例えばhttps://example.com/api/hello
にリクエストが来たときに処理します。 -
scheduled: (event)
: これはCron
トリガーが発火したときに呼び出されるイベントハンドラです。
補足
Hono
のインスタンスは単に通常のAPIリクエストを処理する役割を持ち、ScheduledEvent
の処理はfetch
とは独立して行われるため、コードの中での明確な分離が可能です。