$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cron Jobs with Remix
Search
MIZOGUCHI Coji
June 02, 2023
Technology
1
1k
Cron Jobs with Remix
Remix でも Cron Job 的なのやりたいですよね!
MIZOGUCHI Coji
June 02, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
ブロックテーマとこれからの WordPress サイト制作 / Toyama WordPress Meetup Vol.81
torounit
0
530
今からでも間に合う!速習Devin入門とその活用方法
ismk
1
550
法人支出管理領域におけるソフトウェアアーキテクチャに基づいたテスト戦略の実践
ogugu9
1
210
Challenging Hardware Contests with Zephyr and Lessons Learned
iotengineer22
0
130
Oracle Technology Night #95 GoldenGate 26ai の実装に迫る1
oracle4engineer
PRO
0
150
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
300
ChatGPTで論⽂は読めるのか
spatial_ai_network
0
440
AWSセキュリティアップデートとAWSを育てる話
cmusudakeisuke
0
110
チーリンについて
hirotomotaguchi
4
1.3k
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
1
160
Edge AI Performance on Zephyr Pico vs. Pico 2
iotengineer22
0
110
コミューンのデータ分析AIエージェント「Community Sage」の紹介
fufufukakaka
0
450
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
A Modern Web Designer's Workflow
chriscoyier
698
190k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Optimizing for Happiness
mojombo
379
70k
Balancing Empowerment & Direction
lara
5
790
Code Reviewing Like a Champion
maltzj
527
40k
Become a Pro
speakerdeck
PRO
31
5.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Done Done
chrislema
186
16k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
Cron Jobs with Remix COJI Remix Casual Meetup Jun. 1th
2023
Coji Mizoguchi coji techtalkjp coji プログラマー
Remix のアプリで Cron Job したい。 メール送信とかの非同期ジョブ ランキングとか集計とかのバッチジョブ crawler などなど Remix
でも Cron Job 的なのやりたいですよね!
Remix のアプリで Cron Job: どうやって? OS の cron を使う remix
上の一部のコードを共有した別アプリを cron から nodejs で起動? remix 上で api 作って、そこに HTTP で呼ぶ処理を別プロセスで cron から nodejs で起動? これでやるにしても、サーバレスだと OS の cron 使えないの多いし。 微妙! クラウドプラットフォームのジョブスケジューラを使ってAPI をコールさせる サーバレスだと実行時間制限が厳しいですね。 OpenAI とかの処理に時間がかかるようなのをジョブで動かそうとすると厳しい 微妙! remix はモノリシックにできるのが良いのに。 Rails と同じつらみ? なるべく最初は構成もシンプルにしたいですよね
Remix が動いてるのは Nodejs 同一プロセス内で非同期ジョブスケジューラを動かせばいいのでは? サーバ環境は fly.io ( 推し) Remix はカスタムサーバで
シンプルな node-schedule を利用 それぞれ続きのスライドで説明します。 Nodejs は非同期処理が得意。
Remix をカスタムサーバで server.ts express に createRequestHandler でマウントしつつ、同じプロセス内でジョブスケジューラを動かしておく。 import path from
'path' import express from 'express' import { createRequestHandler } from '@remix-run/express' import { createJobSchedular } from 'batch/job-schedular' // ジョブスケジューラ const BUILD_DIR = path.join(process.cwd(), 'build') const port = process.env.PORT || 3000 // express サーバに remix をマウントして起動 const app = express() app.all('*', createRequestHandler({ build: require(BUILD_DIR) })) app.listen(port, () => { require(BUILD_DIR) console.log(`Express server listening on port ${port}`) }) // ジョブスケジューラ。ずっと動かしておく const { start } = createJobSchedular() start()
シンプルな node-schedule を利用 めちゃくちゃシンプルに cron と同じ書き方ができるジョブスケジューラです。 import schedule from 'node-schedule'
import { runTask } from './task' export const createJobSchedular = () => { const start = () => schedule.scheduleJob('10 * * * *', async () => runTask()) // 10 分ごとに起動 return { start } }
その結果 ずっとサーバ代無料で安定してうごいてます!メンテも簡単!
結論 fly.io は良い!( 推し)