---
title: 크론잡
slug: docs-kr/platform/parse-cron-job
description: Parse 서버로 JavaScript 크론 작업을 설정해보세요. 검증되지 않은 사용자를 자동으로 제거하는 코딩 예제를 자세히 소개합니다.
image: https://www.back4app.com/_public/img/back4app-og.png
createdAt: 2024-02-01T13:25:55.166Z
---

# 파스 크론 작업 생성 방법

## 소개

이 섹션에서는 Back4App을 사용하여 크론 작업을 예약하는 방법을 설명합니다.

이 튜토리얼에서는 예제로, 가입한 후 이메일을 확인하지 않은 사용자를 제거하는 크론 작업을 구축할 것입니다.<font color="#2166ae">`파스 대시보드`</font>

:::hint{type="info"}
언제든지 이 튜토리얼을 위해 구축된 전체 프로젝트에 접근할 수 있습니다. **[GitHub 저장소](https://github.com/back4app/android-background-jobs).**
:::

## 전제 조건

:::hint{type="info"}
**이 튜토리얼을 완료하려면 다음이 필요합니다:**

- Back4App에서 생성된 앱.
  - 참고: [새 Parse 앱 튜토리얼](https://www.back4app.com/docs/get-started/new-parse-app)을 따라 Back4App에서 Parse 앱을 만드는 방법을 배우세요.
- 클라우드 코드에 대한 지식.
  - 참고: [안드로이드용 클라우드 코드 튜토리얼](https://www.back4app.com/docs/android/parse-cloud-code) 또는 [iOS용 클라우드 코드 튜토리얼](https://www.back4app.com/docs)을 참조하여 더 많은 정보를 얻으세요.
  - 안드로이드 4.0 (아이스크림 샌드위치) 이상에서 실행되는 장치 (또는 [가상 장치](https://developer.android.com/studio/run/managing-avds?hl=pt-br))
:::

## 1 - 크론 작업 코드 생성

1. 크론 작업 코드를 넣을 <font color="#2166ae">`.js`</font> 파일을 만듭니다. 이 예제에서는 <font color="#2166ae">`main.js`</font> 파일이 <font color="#2166ae">`cloud_code`</font> 디렉토리에 생성됩니다.
2. 다음과 같이 <font color="#2166ae">`Parse.Cloud.job`</font>을 사용하여 작업 함수를 정의합니다. 이 예제에서는 다음 코드를 사용하여 <font color="#2166ae">`Parse Dashboard`</font>의 모든 사용자를 확인한 다음, 일정 시간이 지난 후 이메일이 확인되지 않은 사용자들을 쿼리하여 삭제합니다:

:::CodeblockTabs
Parse Server 3.X main.js

```javascript
1   Parse.Cloud.job("removeInvalidLogin", async (request) => {
2     let date = new Date();
3     let timeNow = date.getTime();
4     let intervalOfTime = 3*60*1000;  // the time set is 3 minutes in milliseconds
5     let timeThen = timeNow - intervalOfTime;
6
7     // Limit date
8     let queryDate = new Date();
9     queryDate.setTime(timeThen);
10
11    // The query object
12    let query = new Parse.Query(Parse.User);
13
14    // Query the users that still unverified after 3 minutes
15    query.equalTo("emailVerified", false);
16    query.lessThanOrEqualTo("createdAt", queryDate);
17
18    const results = await query.find({useMasterKey:true});
19
20    results.forEach(object => {
21        object.destroy({useMasterKey: true}).then(destroyed => {
22            console.log("Successfully destroyed object" + JSON.stringify(destroyed));
23        }).catch(error => {
24            console.log("Error: " + error.code + " - " + error.message);
25        })
26    });
27    
28    return ("Successfully retrieved " + results.length + " invalid logins."); 
29  });
```

Parse Server 2.X main.js

```javascript
1   Parse.Cloud.job("removeInvalidLogin", function (request, response) {
2     var date = new Date();
3     var timeNow = date.getTime();
4     var intervalOfTime = 3*60*1000;  // the time set is 3 minutes in milliseconds
5     var timeThen = timeNow - intervalOfTime;
6
7     // Limit date
8     var queryDate = new Date();
9     queryDate.setTime(timeThen);
10
11    // The query object
12    var query = new Parse.Query(Parse.User);
13
14    // Query the users that still unverified after 3 minutes
15    query.equalTo("emailVerified", false);
16    query.lessThanOrEqualTo("createdAt", queryDate);
17
18    query.find({
19        success: function (results) {
20        console.log("Successfully retrieved " + results.length + " invalid logins.");
21
22        // Destroying the invalid users
23        query.each(function (object, err) {
24          object.destroy({
25            success: function (object) {
26              response.success("Successfully destroyed object " + object.objectId);
27            },
28            error: function (error) {
29              response.error("Error: " + error.code + " - " + error.message);
30            },
31            useMasterKey: true  // VERY IMPORTANT!!
32          })
33        })
34      },
35      error: function (error) {
36        response.error("Error: " + error.code + " - " + error.message);
37      }
38    });
39  });
```
:::

:::hint{type="danger"}
이 작업에는 **마스터 키&#x20;**&#xB97C; 사용해야 합니다.
:::

:::hint{type="info"}
검증되지 않은 사용자가 여전히 계정을 활성 상태로 유지할 수 있는 시간의 양으로 <font color="#2166ae">`intervalOfTime`</font> 내용을 수정할 수 있습니다. 애플리케이션을 테스트할 때는 짧은 시간 간격이 더 좋다는 것을 잊지 마세요. 따라서 <font color="#2166ae">`intervalOfTime`</font> 내용을 세 분으로 설정하여 크론 작업이 작동하는지 테스트한 후, 실제로 원하는 시간의 양으로 <font color="#2166ae">`intervalOfTime`</font>을 변경하는 것이 좋습니다.
:::

:::hint{type="danger"}
JavaScript 파일에 대한 변경 사항은 Back4app Cloud Code 블록에 파일을 다시 업로드해야만 애플리케이션에서 계산됩니다. 이를 위해 원하지 않는 <font color="#2166ae">`.js`</font> 파일을 삭제하고 <font color="#2166ae">`intervalOfTime`</font> 내용이 올바른 <font color="#2166ae">`intervalOfTime`</font> 내용으로 파일을 업로드하기 위해 2단계를 따르세요.
:::

## 2 - 크론 작업을 Cloud Code에 업로드하기

:::hint{type="info"}
Cloud Code를 시작하는 방법에 대해 더 알고 싶다면 [Android용 Cloud Code 튜토리얼](https://www.back4app.com/docs/android/parse-cloud-code) 또는 [iOS용 Cloud Code 튜토리얼](https://www.back4app.com/docs)을 참조하세요.
:::

1. 앱으로 가세요 [Back4App](https://www.back4app.com/) 웹사이트에서 <font color="#2166ae">`대시보드`</font>를 클릭하세요.
2. &#x20;<font color="#2166ae">`클라우드 코드`</font>를 찾아서 <font color="#2166ae">`기능 및 웹 호스팅`</font>을 클릭하세요. 이렇게 보입니다:

::Image[]{src="https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/gAqCZlMJvj1u1_2A82SEg_image.png" size="80" width="810" height="578" position="center" showCaption="false"}

&#x20;    3\. 새 파일을 업로드하거나 생성하세요 (현재 <font color="#2166ae">`main.js`</font> 파일을 브라우저에서 직접 편집할 수도 있습니다). 그런 다음, <font color="#2166ae">`배포`</font>를 클릭하세요. 여기와 같이:

![](https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/cEJDTAvCqpLgcEwst1IYa_image.png)

## 3 - Back4App에서 크론 작업 예약하기

1. 앱에 가서 [Back4App 웹사이트](https://www.back4app.com/)를 클릭합니다.
2. “백그라운드 작업” 블록을 찾아 <font color="#2166ae">`설정`</font>을 클릭합니다. “백그라운드 작업” 블록은 다음과 같습니다:

::Image[]{src="https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/X18vSRO1Tvs7KSC0u6elV_image.png" size="50" width="331" height="339" position="center" showCaption="false"}

&#x20;    3\. 백그라운드 작업 페이지가 나타나고 두 가지 옵션이 표시됩니다: 작업 브라우저 또는 작업 예약. 아래와 같이 작업 예약을 클릭합니다:

::Image[]{src="https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/t5AO9omCAxyHaiVXvcKUK_image.png" size="70" width="786" height="551" position="center" showCaption="false"}

:::hint{type="info"}
원하는 경우 <font color="#2166ae">`편집`</font>, <font color="#2166ae">`지금 실행`</font>, 또는 <font color="#2166ae">`삭제`</font> 기존의 크론 작업을 수정하려면 <font color="#2166ae">`작업 브라우저`</font> 버튼을 클릭하세요.
:::

&#x20;     4\. 작업 예약 페이지가 나타나고, 작업의 <font color="#2166ae">`설명`</font> 필드를 작업의 설명으로 채워야 하며, 또한 <font color="#2166ae">`클라우드 작업`</font> 필드는 JavaScript 코드의 첫 번째 줄에 설정한 크론 작업의 이름으로 채워야 합니다. 이 예제에서 생성된 크론 작업의 이름은 <font color="#2166ae">`removeInvalidLogin`</font>입니다.

::Image[]{src="https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/MJWhjahzgsKOjL0wJ_Apk_image.png" size="70" width="672" height="755" position="center" showCaption="false"}

&#x20;5\. 크론 작업의 시작 시간, 반복 여부 및 빈도를 설정할 수 있습니다. 이러한 옵션을 선호하는 대로 채운 후 <font color="#2166ae">`저장`</font> 버튼을 클릭하세요.

![](https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/lbntJNDOU5GfmZr02WH6p_image.png)

## 4 - 앱 테스트하기

1. 다음과 같이 <font color="#2166ae">`emailVerified`</font> 열을 <font color="#2166ae">`False`</font>로 설정하여 사용자 몇 명을 생성하세요 <font color="#2166ae">`Parse Dashboard`</font>, 아래와 같이:

![](https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/pGu1s06Aow8ReNU_HLnuF_image.png)

&#x20; 2\. 애플리케이션을 실행하고 <font color="#2166ae">`Parse Dashboard`</font>를 새로 고치세요. 확인되지 않은 사용자가 삭제되었어야 합니다. 위에 표시된 <font color="#2166ae">`Parse Dashboard`</font>의 경우, 결과는 다음과 같습니다:

![](https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/JAjqPNXa7wD-QLmm7VAbe_image.png)

:::hint{type="info"}
**크론 작업이 작동하는지 확인하려면 Back4App 로그에 접근할 수 있습니다. 그렇게 하려면 다음 단계를 따르세요:**

1. &#x20;[Back4App 웹사이트](https://www.back4app.com/)로 가서 <font color="#2166ae">`서버 설정`</font>을 클릭하세요.
2. “로그” 블록을 찾아서 <font color="#2166ae">`설정`</font>을 클릭하세요. “로그” 블록은 다음과 같이 생겼습니다:

![](https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/hWuI1nQOsjx9FfSr0qjbF_image.png)

&#x20;      3\. 페이지를 스크롤하여 <font color="#2166ae">`서버 시스템 로그`</font>를 찾으세요. 거기에서 실행 중인 크론 작업에 대한 정보를 찾아야 합니다.

![](https://api.archbee.com/api/optimize/yD3zCY-NNBBIfd0uqcfR5/c8KgYmpE5D3TtfKNQKXb3_image.png)
:::

## 완료되었습니다!

이 단계에서 Back4App을 통해 Parse Server Core 기능을 사용하여 애플리케이션에서 크론 작업을 예약할 수 있습니다!
