๊ฐ์๊ธฐ ๋น์ฉ์ด ๋ฐ์ํ๋ค. EC2
์์ ๋ฐ์ํ ๋น์ฉ์ด๋ค.
๊ธ์ก์ ์ค์ํ์ง ์๋ค. ์ด์ ๋ฅผ ์์์ผ ํ๋ค..!!
๋น์ฉ์ด ๋ถ๊ณผ๋ ๋ถ๋ถ์ ๋ณด๋ฉด Elastic IP address not attached to a running instance per hour
๋ผ๊ณ ํ๋ค. ํ๋ ฅ์ IP๊ฐ ์คํ์ค์ธ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋์ง ์์๋ค๋ ๋ง์ด๋ค.
๋ง๋ค. ์ด์ ๊ฑฐ์ ์์ฑ๋ ํ๋ก์ ํธ๋ฅผ ์ฐ์ต์ผ์ EC2
์ ๋ฐฐํฌํ๋ค. ๊ณผ๊ธ์ด ๋ฌด์์์ ์ค์ง, ์์์ ๋ฐ๋ณตํ๋๋ฐ IP๊ฐ ์๊พธ ๋ณ๊ฒฝ๋์ ์ฝ๋๋ฅผ ๊ณ์ ๋ณ๊ฒฝํ๋ค.
์ด๋ฐ ์์
์ด ๋ฒ๊ฑฐ๋ก์์ ํ๋ ฅ์ IP
๋ฅผ ์ค์ ํ๊ณ ๋ฐฐํฌ ํ
์คํธ๋ฅผ ์ด์ด๊ฐ๋ค. ํ
์คํธ๋ฅผ ๋ง์น๊ณ ์ญ์ ๊ณผ๊ธ์ด ๋ฌด์์์ ์ธ์คํด์ค๋ฅผ ์ข
๋ฃ(์ญ์ )ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋
ธํธ๋ถ์ ๋ซ์๋ค..
AWS ๋ฌธ์๋ฅผ ๋ณด๋ ํ๋ ฅ์ IP
์ ๋ํด ์๊ธ์ด ๋ถ๊ณผ๋์ง ์๋ ์กฐ๊ฑด์ด 3๊ฐ์ง ์๋ค.
ํ๋ ฅ์ IP
๊ฐ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋์ด ์๋ค.ํ๋ ฅ์ IP
๊ฐ ์ฐ๊ฒฐ๋ ์ธ์คํด์ค๊ฐ ์คํ ์ค์ด๋ค.ํ๋ ฅ์ IP
์ ์ฐ๊ฒฐ๋ ์ธ์คํด์ค๊ฐ ํ๋์ด๋ค.์ด ์ธ๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์๊ธ์ด ๋ถ๊ณผ๋์ง ์๋๋ค๊ณ ํ๋ค.
๋๋ ์ด์ ์ธ์คํด์ค๋ฅผ ์ข
๋ฃํ๊ณ ํ๋ ฅ์ IP
๋ฅผ ํด์ ํ์ง ์์์ผ๋ฏ๋ก 3๊ฐ ์กฐ๊ฑด์ ๋ชจ๋ ์๋ฐํ ๊ฒ์ด๋ค...
๐ ๋ง๋ฌด๋ฆฌ
AWS ์
๋ฌธ์๋ผ๋ฉด ๊ต์ฅํ ์์ฃผ ์ธ์คํด์ค๋ฅผ ์ญ์ ํ๊ณ ์์ฑํ ๊ฒ์ด๋ค. ๊ทธ ์์ค์ ํ๋ ฅ์ IP
๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๊ผญ EC2 ์ธ์คํด์ค์ ํ๋ ฅ์ IP์ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ๊ฒ ํ์.
(์ธ์คํด์ค ์ข
๋ฃ -> ์ฐ๊ฒฐ๋ ํ๋ ฅ์ IP ํด์ )
์กฐํ์์ ๋ฐ๋ผ ์์๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ธฐ๋ฅ์ ๋ง๋ค์๊ณ 1์๋ถํฐ 5์๊น์ง ์์๋ฅผ ๋ณด์ฌ์คฌ๋ค. ์์๊ถ์ ์๋ ๋ชฉ๋ก์ ๋ค๋ฅธ ๋ชฉ๋ก๋ณด๋ค ์กฐํ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ์์๊ถ์ ์ฌ๋ผ๊ฐ๋ฉด ์ ๋ด๋ ค์ค์ง ์์ ๊ฒ์ด๋ผ๋ ์๊ฐ์ด ๋ค์๋ค.
์กฐ๊ธ์ด๋ผ๋ ์์๊ฐ ์์๋ต๋๋ก ์ผ์ฃผ์ผ๋ง๋ค ์์๋ฅผ ์ด๊ธฐํ์ํค๋ ค ํ๋ค.
ํน์ ์์ ์ ํน์ ์์
์ ํ๊ธฐ ์ํด ์ค์ผ์ค๋ง์ ๋์
ํ๋ค.
Flask๋ ์ค์ผ์ค๋ง์ ์ํด apscheduler
๋ชจ๋์ ์ง์ํ๋ค.
# apscheduler ํจํค์ง ์ค์น
pip install apscheduler
๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์ค์ผ์ค๋ง ์์
์ ํ๊ธฐ ์ํด apscheduler
์ BackgroundScheduler
๋ฅผ import ํ๋ค.
from apscheduler.schedulers.background import BackgroundScheduler
๋ค์์ผ๋ก ์ค์ผ์ค๋ฌ์ ๋์ ์ ์ด ์ญํ ์ ํด์ค ํธ๋ฆฌ๊ฑฐ ๋ชจ๋๋ ๊ฐ์ ธ์จ๋ค. ์ด ํธ๋ฆฌ๊ฑฐ ๋ชจ๋์ cron
ํํ์์ ๊ธฐ์ค์ผ๋ก ํ๋ค.
from apscheduler.triggers.cron import CronTrigger
์ค์ผ์ค๋ง ๋์์ด ๋ ์์
์ ๊ตฌํํ๋ค .
์กฐํ์ ์์์ ๋ํ ์ ๋ณด๊ฐ ๋ด๊ธฐ๋ ranking
์ปฌ๋ ์
์ documents
๋ฅผ ๋ชจ๋ ์ง์ฐ๋ ๊ธฐ๋ฅ์ ์ํํ๋ค.
def init_ranking_collection():
print("์กฐํ์ ์์ DB ์ด๊ธฐํ ์์")
result = db.ranking.delete_many({})
print(f"์กฐํ์ ์์ DB ์ด๊ธฐํ ์ข
๋ฃ {result.deleted_count}๊ฑด ์ญ์ ")
crontab
ํํ์์ ์ด์ฉํด์ ์ค์ผ์ค๋ง ์๊ฐ์ด ์๋ํ ์๊ฐ์ ์ค์ ํ๋ค.
# ๋ค๋ถํฐ ์ฝ์ผ๋ฉด ๋๋ค.
# ์ผ์์ผ(sun) ๋งค์(*) ๋งค์ผ(*) ์ค์ 03์(03) 00๋ถ(00)
cron = "00 03 * * sun"
์ค์ผ์ค๋ฌ Start !
scheduler = BackgroundScheduler(daemon=True)
scheduler.add_job(init_ranking_collection, CronTrigger.from_crontab(cron))
scheduler.start()
๋ด์ผ์ด๋ฉด ์ฒซ ๋ฒ์งธ ํ๋ก์ ํธ๊ฐ ๋๋๋ ๋ ์ด๋ค. ๋ง์ง๋ง๊น์ง ๋ฟ๋ฏํ ์ ์๊ฒ ์ ํ์!!