Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
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
800
Cron Jobs with Remix
Remix でも Cron Job 的なのやりたいですよね!
MIZOGUCHI Coji
June 02, 2023
Tweet
Share
Other Decks in Technology
See All in Technology
microCMSではじめるAIライティング
himaratsu
0
120
Enhancing SaaS Product Reliability and Release Velocity through Optimized Testing Approach
ropqa
1
250
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
130k
Lufthansa ®️ USA Contact Numbers: Complete 2025 Support Guide
lufthanahelpsupport
0
230
Getting to Know Your Legacy (System) with AI-Driven Software Archeology (WeAreDevelopers World Congress 2025)
feststelltaste
1
180
TableauLangchainとは何か?
cielo1985
1
140
QuickSight SPICE の効果的な運用戦略~S3 + Athena 構成での実践ノウハウ~/quicksight-spice-s3-athena-best-practices
emiki
0
250
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
ロールが細分化された組織でSREは何をするか?
tgidgd
1
170
成長し続けるアプリのためのテストと設計の関係、そして意思決定の記録。
sansantech
PRO
0
140
ABEMAの本番環境負荷試験への挑戦
mk2taiga
5
670
United airlines®️ USA Contact Numbers: Complete 2025 Support Guide
unitedflyhelp
0
330
Featured
See All Featured
Scaling GitHub
holman
460
140k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.8k
A better future with KSS
kneath
238
17k
Become a Pro
speakerdeck
PRO
29
5.4k
Speed Design
sergeychernyshev
32
1k
BBQ
matthewcrist
89
9.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Building Applications with DynamoDB
mza
95
6.5k
Raft: Consensus for Rubyists
vanstee
140
7k
Fireside Chat
paigeccino
37
3.5k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
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 は良い!( 推し)