ν€μλ
- UTC, KST
- ISO 8601
- APScheduler
μκ°
[μκ°] UTC
μΈκ³ νμ μκ°
μΌλ‘ μκ΅μ κΈ°μ€μΌλ‘ ν©λλ€.- μκ΅ κ·Έλ¦¬λμΉ μ²λ¬Έλλ₯Ό κΈ°μ€μΌλ‘ ν GMTμ λμΌνκ² μ¬μ©λ©λλ€.
[μκ°] ISO 8601
- μκ°μ μ΄λ»κ² ννν κ²μΈμ§ μ λν κΈ°μ€μ λ§λ€κΈ° μν κ΅μ νμ€
- λ , μ, μΌ λ€μ Timezoneμ λκ³ μ, λΆ, μ΄ νκΈ°.
- μμ μμλ§ μ§ν€λ©΄ λκ³ , λ λν μΌν νμμ νλλ‘ μ§μ λμ΄μμ§λ μμ
- 보ν΅μ μλμ κ°μ μμμΌλ‘ νν
- μ¬λμ΄ μ½κΈ° μ’μ νν
[μκ°] Unix Time(λλ Epoch Time)
- 1970λ 01μ 01μΌ 00:00:00Z μ κΈ°μ€μΌλ‘ κ·Έ μμ°¨λ₯Ό ννν κ²
- μ¦, κΈ°μ€ μκ°μ κΈ°μ€μΌλ‘ μ΄ μλ₯Ό μ λλ€. (κΈ°μ€λ³΄λ€ κ³Όκ±°λ©΄ μμλ‘ νμ)
- μ¬λμ΄ μ§κ΄μ μΌλ‘ μ½κΈ°λ μ΄λ ΅μ§λ§, κΈ°μ€μ μ‘κ³ μμ°¨(μ΄λ₯Ό κΈ°μ€)λ₯Ό ννν κ²μ΄λΌ μ»΄ν¨ν°μ μ°μ°, μ¦ μ»΄ν¨ν°κ° μ½κΈ°μ λ μ’μ νκΈ°μ λλ€.
- μ λμ μΈ μκ°μ νννκΈ°λ³΄λ¨ μ£Όλ‘ νΉμ μκ°λμ μ°¨μ΄λ₯Ό νννκ³ μΆμ λ μ¬μ©ν©λλ€.
μκ° νκΈ° μμ
$ date # λ΄ λ‘컬 pc μ¦, KST κΈ°μ€μΌλ‘ μκ°μ νν
$ date -u # UTC κΈ°μ€μΌλ‘ μκ°μ νν
$ date -u +"%Y-%m-%dT%H:%M:%SZ" # ISO 8601 κΈ°μ€μ λ§κ² νν ex) 2022-02-09T23:30:49Z
$ date +%s # Unix[Epoch] Time μΌλ‘ νν ex) 1644402264
μ€μΌμ₯΄λ§(Scheduling)
- νΉμ μκ°, νΉμ μκ°λ§λ€ λ±μΌλ‘ νλ‘κ·Έλ¨μ΄ μ€νλκ²λ ν΄μ£Όλ μν
- μλ₯Ό λ€μ΄, ν¬λ‘€λ§/μ€ν¬λ μ΄ν νΉμ APIλ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό μμ§νλ μ½λκ° μμ λ, νλ²μ λͺ¨λ λ°μ΄ν°λ₯Ό κ°μ Έμ€κΈ°λ³΄λ€ νΉμ μκ° νΉμ μκ°μ μ§μ νμ¬ κ·Έ λλ§λ€ μ½λκ° λμνμ¬ λ°μ΄ν°λ₯Ό μμ§νκ²λ νκ³ μΆμ λ μ¬μ©
- μλ²μ λΆνλ₯Ό μ€μ΄κΈ° μν΄ μλΉμ€μ μ¬μ©λμ΄ μ μ μκ°μ λ°μ΄ν°λ₯Ό μμ§ν λ
- μνλ μκ° ex) λ§€μΌ 00μμ λ°μ΄ν°λ₯Ό μμ§νκ³ μΆμ λ
μ€μΌμ₯΄λ¬μ λ°©μμ ν¬κ² 2κ°μ§
- OS(μ΄μ체μ )λ₯Ό κΈ°λ°μΌλ‘ μ€μΌμ₯΄λ§μ νλ λ°©μ ex) Cron, Windows μμ μ€μΌμ₯΄λ¬
- μ΄ν리μΌμ΄μ λ¨κ³μμ μ€μΌμ₯΄λ§μ μ‘°μ νλ λ°©μ ex) Pythonμ APScheduler , Airflow
[Scheduling] APScheduler
APScheduler μ€μΉ
$ pip install apscheduler
APScheduler μ€μΌμ₯΄λ¬ μ’
λ₯
- μ€μΌμ₯΄λ¬κ° νλ‘κ·Έλ¨μ μ£Όλͺ©μ μ΄ λλ κ²½μ°
BlockingScheduler
- λ€λ₯Έ μ΄ν리μΌμ΄μ
κ³Ό μ°λν΄μ μ¬μ©νλ κ²½μ°(λ€λ₯Έ μ΄ν리μΌμ΄μ
μ€νμ΄ μ£Όλͺ©μ , μ€μΌμ₯΄λ¬λ λΆκ°κΈ°λ₯μΌλ‘λ§ μλ)
- BackgroundScheduler
- AsyncIOScheduler
- GeventScheduler
- TornadoScheduler
- TwistedScheduler
- QtScheduler
from apscheduler.schedulers.blocking import BlockingScheduler
# μ€μΌμ€λ¬ μ μΈ
from apscheduler.schedulers.blocking import BlockingScheduler
scheduler = BlockingScheduler({'apscheduler.timezone':'UTC'}) # UTCλ₯Ό κΈ°λ°μΌλ‘ νκ² timezone μ μ μΈ
# μ€μΌμ€λ¬μ μ¬μ©λ job μ μΈνκΈ°
def hello():
print("μλ
νμΈμ, μ¬λ¬λΆ μ λ 5μ΄λ§λ€ μ€νλ©λλ€.")
scheduler.add_job(func=hello,trigger='interval',seconds=5) # νΈλ¦¬κ±°μλ `date`, `interval`, `cron` μ΄ μμ
# μ€μΌμ€λ¬ μμνκΈ°
scheduler.start()
νΈλ¦¬κ±°
- date : νΉμ μκ°μ νλ² μ€ν
- interval : νΉμ κ°κ²¬μ κΈ°μ€μΌλ‘ λ°λ³΅ μ€ν
- cron : unix κΈ°λ° cron λ¬Έλ²μ μ΄μ©νμ¬ μ€μΌμ€λ§ ex) 0 0 12 * * => 맀 12μλ§λ€
'πΏ Data > λΆνΈμΊ ν' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[TIL]61. Section3_Sprint3_Chall (0) | 2022.02.10 |
---|---|
[TIL]60-2. λΆνΈν/볡νΈν (0) | 2022.02.09 |
[TIL]59.λ°°ν¬(Heroku)μ λμ보λ(Metabase) (0) | 2022.02.09 |
[TIL]58.Flask (0) | 2022.02.08 |
[TIL]57.Docker (0) | 2022.02.05 |