Revue - Sendy sync: 철도 호스팅
9903 단어 nodeapiserverlesswebdev
지금까지 구축한 내용을 간단히 요약해 보겠습니다.
마지막 비트는 모든 것을 함께 가져와 테스트하는 것입니다.
이 프로젝트는 상당히 단순한 노드 서버에 불과하므로 Railway app을 사용하기로 결정했습니다. 이러한 작은 스크립트를 호스팅하는 무료 및 간단한 방법을 제공합니다.
스크립트 테스트
라이브 코드를 시스템에 푸시하기 전에 스크립트를 약간 변경했습니다.
Note: It's more a safety thing than anything else at this point, and feel free to skip this step.
API 호출을 수행하는 대신 모든 것이 제대로 작동하는지 모니터링할 수 있도록 응답을
console.log
로 변경했습니다.fastify.post('/sendy-webhook', async function (request, reply) {
reply.send({ data: request.body });
});
그리고 주요 기능은 다음과 같습니다.
(async () => {
console.log('recurring script started');
// commented out all the other things
})();
철도 앱에서 호스팅
철도 앱은 블록의 새로운 아이이지만 꽤 멋지고 가장 중요한 부분은 무료라는 것입니다.
따라서 Railway으로 이동하여 새 프로젝트 버튼을 클릭합니다.
여기에서 GitHub에서 배포하는 옵션을 선택할 수 있습니다.
다음 단계에서는 GitHub에 로그인하고 인증하도록 요청합니다.
이 단계를 거치면 작업 중인 프로젝트를 선택합니다.
다음 화면에서 지금 배포하거나 변수를 추가할 수 있는 옵션이 제공됩니다.
이미 내 변수를 추가하도록 선택했습니다.
두 옵션 중 하나를 클릭하면 프로젝트가 시작되고 변수를 추가할 수 있습니다.
.env
파일에 있는 모든 항목을 로컬로 추가합니다.변수를 저장하면 앱이 자동으로 재배포됩니다.
일단 배포되면 로그를 열고 무슨 일이 일어나고 있는지 확인할 수 있습니다.
로그는 다음과 같아야 합니다.
recurring script started
{"level":30,"time":1655616707625,"pid":1,"hostname":"railway","msg":"Server listening at http://127.0.0.1:3000";}
그러나 이것은 약간의 문제를 야기합니다.
Railway는 각 프로젝트에 대해 고유한 포트를 생성하고 주소
0.0.0.0
를 수신 대기합니다.앱으로 돌아가 Fastify 서버를 수정해 보겠습니다.
fastify.listen(
{ port: process.env.PORT || 3000, host: '0.0.0.0' },
function (err, address) {
if (err) {
fastify.log.error(err);
process.exit(1);
}
}
);
이 코드 조각으로 우리는 항상 Railway가 제공하는 포트를 사용합니다.
코드를 커밋하고 푸시하면 자동으로 새 배포가 시작됩니다.
그러나 기본 철도 앱에는 도메인이 제공되지 않으므로 빠르게 도메인을 설정해야 합니다.
설정 > 도메인으로 이동하여 철도 도메인을 추가합니다.
이제 웹후크를 테스트하고 이 새 배포의 로그로 이동할 수도 있습니다. 이제 임의의 포트가 표시됩니다.
그런 다음 API 플랫폼(Insomnia)을 열고 웹후크 엔드포인트를 테스트했습니다.
그들은 일한다! 훌륭합니다. 우리는 모두 그 쪽에서 설정되었습니다.
반복 스크립트
이제 모든 것이 설정되었으므로 주 스크립트를 여러 번 실행하지 않는다는 것을 눈치채셨을 것입니다.
우리는 이것이 x번마다 실행되기를 원합니다. 제 경우에는 하루에 한 번 정도 생각합니다.
이를 달성하기 위해
node-cron
을 추가하여 마법을 부립니다.그런 다음 다음과 같이 cron 명령을 추가할 수 있습니다.
cron.schedule('* * * * *', () => {
console.log('running a task every minute');
});
서버를 시작하면 1분마다 메시지가 표시되기 시작해야 합니다.
하지만 매일 밤 새벽 2시에 실행하고 싶어서 이렇게 하나의 명령을 설정했습니다.
cron.schedule('0 2 * * *', () => {
// our command
});
이 명령에서 우리는 현재 IIFE에 있는 모든 것을 넣을 것입니다.
그리고 그 설정으로 우리는 갈 준비가 되었습니다!
완성된 코드는 GitHub에서 찾을 수 있습니다.
마무리
이제 코드가 완성되었으므로 몇 가지 작업을 수행해야 합니다.
사용자를 일회성으로 동기화하는 것이 필수적입니다. 그렇지 않으면 이상한 작업을 수행할 수 있습니다.
저 같은 경우 Sendy에서 모두 내보내고 Revue에서 수동으로 한 번에 가져왔습니다.
웹후크가 설정되지 않은 것을 확인하고 이를 Railway 호스팅 앱에 게시하도록 변경해야 합니다:
https://{your_app}.up.railway.app/sendy-webhook
.읽어주셔서 감사합니다. 연결합시다!
제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나
Reference
이 문제에 관하여(Revue - Sendy sync: 철도 호스팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dailydevtips1/revue-sendy-sync-railway-hosting-2b69텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)