- 1 1. ã¯ããã«
- 2 2. å®æå®è¡ã®æ¹æ³äžèŠ§ãšéžæåºæº
- 3 3. åºæ¬çãªPythonã³ãŒãã«ããå®æå®è¡
- 4 4. scheduleã©ã€ãã©ãªãçšããæè»ãªã¹ã±ãžã¥ãŒã«ç®¡ç
- 5 5. threadingã¢ãžã¥ãŒã«ãå©çšããããã¯ã°ã©ãŠã³ãå®è¡
- 6 6. Celeryã䜿ã£ãé«åºŠãªã¿ã¹ã¯ç®¡ç
- 7 7. OSã®ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ãšã®é£æº
- 8 8. ã¯ã©ãŠããµãŒãã¹ã掻çšããå®æå®è¡
- 9 9. ãŸãšã
- 9.1 æ¹æ³ããšã®ç¹åŸŽãšéžæãã€ã³ã
- 9.2 ã©ã®æ¹æ³ãéžã¶ã¹ããïŒ
- 9.2.1 1. å°èŠæš¡ã§ç°¡åãªã¿ã¹ã¯ã®å Žå
- 9.2.2 2. é·æéå®è¡ããã¿ã¹ã¯ã䞊è¡åŠçãå¿ èŠãªå Žå
- 9.2.3 3. 倧èŠæš¡ãªã·ã¹ãã ãåæ£ã¿ã¹ã¯ã管çããå Žå
- 9.2.4 4. ãµãŒããŒã¬ã¹ç°å¢ã§é«å¯çšæ§ãæ±ããå Žå
- 9.2.5 5. OSç°å¢ã«éå®ããã¿ã¹ã¯ç®¡çãå¿ èŠãªå Žå
- 9.3 æåŸã«
- 10 10. FAQ
- 10.1 Q1: Pythonã§å®æå®è¡ãæãç°¡åã«å®çŸããæ¹æ³ã¯ïŒ
- 10.2 Q2: scheduleã©ã€ãã©ãªãštime.sleep()ã®éãã¯äœã§ããïŒ
- 10.3 Q3: ã¯ã©ãŠããµãŒãã¹ãå©çšããå®æå®è¡ã¯ã©ã®ãããªã¡ãªããããããŸããïŒ
- 10.4 Q4: ã¹ã¯ãªããã®å®è¡ãã°ãèšé²ããã«ã¯ã©ãããã°ããã§ããïŒ
- 10.5 Q5: å®æå®è¡ã®ã¿ã¹ã¯ãçªç¶åæ¢ããå Žåãã©ãããã°ããã§ããïŒ
- 10.6 Q6: Pythonã¹ã¯ãªããããµãŒããŒã§åžžæå®è¡ããã«ã¯ã©ãããã°ããã§ããïŒ
- 10.7 Q7: Pythonã§å®æçã«ããŒã¿ãååŸããŠä¿åããã¿ã¹ã¯ãå®è£ ã§ããŸããïŒ
1. ã¯ããã«
Pythonã§å®æå®è¡ãåŠã¶ã¡ãªãã
Pythonã¯ã·ã³ãã«ãã€åŒ·åãªããã°ã©ãã³ã°èšèªã§ãããããŒã¿åæãèªååãWebã¢ããªã±ãŒã·ã§ã³éçºãªã©ãå¹ åºãåéã§æŽ»çšãããŠããŸãããã®äžã§ããã¿ã¹ã¯ã®å®æå®è¡ãã¯ãæ¥åžžæ¥åã®å¹çåãäœæ¥ã®èªååã«ãããŠéåžžã«éèŠãªæè¡ã§ããäŸãã°ãããã¯ã¢ãããå®æçã«å®è¡ããããç¹å®ã®æéã«ã¬ããŒããèªåçæããã±ãŒã¹ãªã©ã§ããã®äŸ¡å€ãçºæ®ãããŸãã
ãã®èšäºã§ã¯ãPythonã䜿ã£ãã¿ã¹ã¯ã®å®æå®è¡æ¹æ³ãåå¿è ããäžçŽè åãã«è§£èª¬ããŸãããã®èšäºãèªã¿çµããããã«ã¯ãããªãã®ãããžã§ã¯ãã«æé©ãªå®æå®è¡ã®æ¹æ³ãåããããã«ãªããŸãã
Pythonã§å®æå®è¡ãè¡ãäž»ãªå©ç¹
Pythonã䜿ã£ãŠå®æå®è¡ãèšå®ããããšã§ã以äžã®ãããªå©ç¹ãåŸãããŸãïŒ
- äœæ¥å¹çã®åäž
ç¹°ãè¿ãã®æäœæ¥ãPythonã¹ã¯ãªããã«çœ®ãæããããšã§ã人çºçãªãã¹ãæžãããå¹ççãªäœæ¥ãå®çŸããŸãã - æè»æ§
Pythonã«ã¯å€æ§ãªæ¹æ³ã§ã¿ã¹ã¯ãå®æå®è¡ããæ段ãçšæãããŠããããããžã§ã¯ãã®èŠæš¡ãèŠä»¶ã«å¿ããŠæé©ãªæ¹æ³ãéžæã§ããŸãã - èªååã«ããå®å®æ§
å®æå®è¡ã¿ã¹ã¯ãã¹ã¯ãªããåããããšã§ãã¿ã¹ã¯ã®å®è¡ç¶æ³ã確å®ã«ææ¡ããå®å®çãªéçšãå¯èœã«ãªããŸãã
æ¬èšäºã®æ§æ
ãã®èšäºã§ã¯ã以äžã®å 容ãé ãè¿œã£ãŠè§£èª¬ããŸãïŒ
- Pythonã§å®æå®è¡ãè¡ãæ¹æ³ã®æ¯èŒ
- åå¿è åãã®åºæ¬çãªæ¹æ³ãããã¯ã©ãŠããµãŒãã¹ã掻çšããé«åºŠãªå®è£ æ¹æ³ãŸã§å¹ åºã玹ä»ããŸãã
- å ·äœçãªå®è£ æé
- åæ¹æ³ã«ã€ããŠãµã³ãã«ã³ãŒããçšããŠè©³ãã解説ããŸãã
- 掻çšäŸãšãã¹ããã©ã¯ãã£ã¹
- å®åã§ã®å©çšã·ãŒã³ã«åºã¥ãå ·äœäŸãåãäžããå¹æçãªéçšæ¹æ³ãææ¡ããŸãã
- FAQã»ã¯ã·ã§ã³
- èªè ãæ±ããããªçåç¹ã«å¯ŸããŠãæ確ãªåçãæäŸããŸãã
æ¬èšäºãåèã«ããŠãPythonã掻çšããå®æå®è¡ã¿ã¹ã¯ã®èšå®ã«ãã²ææŠããŠã¿ãŠãã ããã
2. å®æå®è¡ã®æ¹æ³äžèŠ§ãšéžæåºæº
Pythonã§ã®å®æå®è¡ã®äž»ãªæ¹æ³
Pythonã䜿çšããŠã¿ã¹ã¯ãå®æçã«å®è¡ããæ¹æ³ã¯è€æ°ãããŸããããããã®æ¹æ³ã«ã¯ã¡ãªãããšãã¡ãªããããããé©çšã·ãŒã³ãå®è£ ã®é£æ床ãç°ãªããŸããæ¬ç« ã§ã¯ãäž»ãªæ¹æ³ãæ¯èŒããªãããããããã®ç¹åŸŽãšéžã³æ¹ã解説ããŸãã
å®æå®è¡ã®æ¹æ³äžèŠ§
以äžã¯ãPythonã§å®æå®è¡ãè¡ãäž»ãªæ¹æ³ã§ãïŒ
- time.sleep()ã䜿ã£ãã«ãŒãåŠç
- é£æ床: æãã
- ç¹åŸŽ: ã·ã³ãã«ãªã«ãŒãã§äžå®ééã®ã¿ã¹ã¯å®è¡ãå¯èœã
- é©çšã·ãŒã³: çæçã§ç°¡åãªã¿ã¹ã¯ã
- scheduleã©ã€ãã©ãªã®äœ¿çš
- é£æ床: äžçŽ
- ç¹åŸŽ: æè»ãªã¹ã±ãžã¥ãŒã«ç®¡çãå¯èœãæ¥ãæå»ãééã®æå®ãç°¡åã
- é©çšã·ãŒã³: çäžæçãªã¿ã¹ã¯ç®¡çã
- threadingã¢ãžã¥ãŒã«ã«ãããã«ãã¹ã¬ããåŠç
- é£æ床: äžçŽ
- ç¹åŸŽ: ããã¯ã°ã©ãŠã³ãã§äžŠè¡åŠçãå®è¡ã§ããã
- é©çšã·ãŒã³: æéã®ãããåŠçãããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã
- Celeryã䜿ã£ãåæ£ã¿ã¹ã¯ç®¡ç
- é£æ床: é«åºŠ
- ç¹åŸŽ: ã¡ãã»ãŒãžãããŒã«ãŒïŒäŸ: RedisïŒãšé£æºããè€éãªåæ£ã¿ã¹ã¯ã管çå¯èœã
- é©çšã·ãŒã³: 倧èŠæš¡ã·ã¹ãã ãåæ£ç°å¢ã
- OSã®ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ã®äœ¿çš
- é£æ床: äžçŽ
- ç¹åŸŽ: cronïŒLinuxïŒãã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ïŒWindowsïŒãå©çšããŠPythonã¹ã¯ãªãããå®æå®è¡ã
- é©çšã·ãŒã³: ãµãŒããŒãããŒã«ã«ç°å¢ã§ã®ã¿ã¹ã¯å®è¡ã
- ã¯ã©ãŠããµãŒãã¹ã®æŽ»çš
- é£æ床: é«åºŠ
- ç¹åŸŽ: AWS LambdaãGoogle Cloud Functionsãå©çšãããµãŒããŒã¬ã¹ç°å¢ã§ã¿ã¹ã¯ãå®è¡ã
- é©çšã·ãŒã³: ã¯ã©ãŠããã€ãã£ããªãããžã§ã¯ãã
åæ¹æ³ã®éžæåºæº
ã©ã®æ¹æ³ãéžã¶ã¹ããã¯ãã¿ã¹ã¯ã®æ§è³ªãç°å¢ã«ãã£ãŠç°ãªããŸãã以äžã®ãã€ã³ããåèã«ãæé©ãªæ¹æ³ãéžã³ãŸãããïŒ
å®è£ ã®é£æ床
- ç°¡åãªäœæ¥ã§ããã°ã
time.sleep()
ãschedule
ã©ã€ãã©ãªã®å©çšãããããã - è€éãªã¿ã¹ã¯ç®¡çãå¿
èŠãªå Žåã¯ã
Celery
ãã¯ã©ãŠããµãŒãã¹ãæ€èšã
ã¿ã¹ã¯ã®é »åºŠãšå®è¡éé
- æ¯ç§ãæ¯åãªã©é »ç¹ã«å®è¡ããã¿ã¹ã¯ã«ã¯ã
schedule
ã©ã€ãã©ãªãtime.sleep()
ãé©ããŠããŸãã - æ°æéãããç¹å®ã®æ¥ä»ã«å®è¡ããå Žåã¯ãOSã®ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ãã¯ã©ãŠããµãŒãã¹ã䟿å©ã§ãã
ã·ã¹ãã èŠæš¡
- å°èŠæš¡ãªãããžã§ã¯ãã«ã¯ç°¡åãªæ¹æ³ã§ååã
- 倧èŠæš¡ã·ã¹ãã ãåæ£åŠçã䌎ããããžã§ã¯ãã§ã¯ã
Celery
ã®ãããªã¿ã¹ã¯ãã¥ãŒç®¡çãé©ããŠããŸãã
å®è¡ç°å¢
- ããŒã«ã«ç°å¢ã§ã®å®è¡ã«ã¯ã
time.sleep()
ãschedule
ãé©ããŠããŸãã - ãµãŒããŒã¬ã¹ãã¹ã±ãŒã©ãã«ãªç°å¢ãæ±ããããå Žåã¯ãã¯ã©ãŠããµãŒãã¹ãé©ããŠããŸãã
ãŸãšã
Pythonã§å®æå®è¡ãè¡ãæ¹æ³ã¯å€å²ã«ããããŸãããéžæããéã«ã¯ã¿ã¹ã¯ã®æ§è³ªãå®è¡ç°å¢ãèæ
®ããããšãéèŠã§ããæ¬èšäºã§ã¯ãæ¬¡ç« ä»¥éã§åæ¹æ³ã®å®è£
æé ã詳ãã解説ããŠãããŸãããŸãã¯ã·ã³ãã«ãªtime.sleep()
ã䜿ã£ãæ¹æ³ããå§ããŠã¿ãŸãããã
3. åºæ¬çãªPythonã³ãŒãã«ããå®æå®è¡
time.sleep()ã䜿ã£ãåºæ¬çãªã«ãŒãåŠç
æ¹æ³ã®æŠèŠ
time.sleep()
é¢æ°ã¯ãæå®ããç§æ°ã ãããã°ã©ã ã®å®è¡ãåæ¢ããŸãããã®é¢æ°ãã«ãŒãå
ã§äœ¿çšããããšã§ãäžå®ã®ééã§ã¿ã¹ã¯ãå®è¡ããããšãå¯èœã§ãã
å®è£ äŸ
以äžã¯ã1åããšã«ãçŸåšã®æå»ããåºåããç°¡åãªã¹ã¯ãªããã§ãã
import time
from datetime import datetime
def task():
# å®è¡ãããã¿ã¹ã¯
print(f"ã¿ã¹ã¯å®è¡: {datetime.now()}")
if __name__ == "__main__":
while True:
task()
time.sleep(60) # 60ç§ïŒ1åïŒåŸ
æ©
å®è¡çµæ
ã¹ã¯ãªãããå®è¡ãããšã1åããšã«çŸåšã®æå»ãã¿ãŒããã«ã«è¡šç€ºãããŸãã
äŸïŒ
ã¿ã¹ã¯å®è¡: 2025-01-19 14:00:00
ã¿ã¹ã¯å®è¡: 2025-01-19 14:01:00
ã¿ã¹ã¯å®è¡: 2025-01-19 14:02:00
ã¡ãªãããšãã¡ãªãã
ã¡ãªãã
- ã·ã³ãã«ã§åããããã
- åå¿è ã§ãçŽæçã«ç解ã§ããã
- å€éšã©ã€ãã©ãªãäžèŠ
- Pythonæšæºã©ã€ãã©ãªã ãã§å®çŸå¯èœã
ãã¡ãªãã
- ã¹ã±ãžã¥ãŒã«ã®æè»æ§ãäœã
- ç¹å®ã®æå»ãææ¥ã«ã¿ã¹ã¯ãå®è¡ããããšã¯é£ããã
- é·æéã®å®è¡ã«ã¯äžåã
- ã«ãŒãã®å®è¡äžã«ãšã©ãŒãçºçãããšãããã°ã©ã ãåæ¢ããŠããŸãã
å¿çšäŸïŒãšã©ãŒåŠçãè¿œå ããå®æå®è¡
å®è¡äžã«ãšã©ãŒãçºçããå Žåãããã°ã©ã ãçµäºããªãããã«äŸå€åŠçãå ããããšãå¯èœã§ãã
import time
from datetime import datetime
def task():
# å®è¡ãããã¿ã¹ã¯
print(f"ã¿ã¹ã¯å®è¡: {datetime.now()}")
if __name__ == "__main__":
while True:
try:
task()
time.sleep(60)
except Exception as e:
print(f"ãšã©ãŒãçºçããŸãã: {e}")
ãã®æ¹æ³ãé©ããŠããã±ãŒã¹
- å°èŠæš¡ã§ç°¡åãªã¿ã¹ã¯
- çæéã®ãããžã§ã¯ã
- ããã°ã©ã ã®åæ¢ãåèµ·åã«å¯å®¹ãªç°å¢
4. scheduleã©ã€ãã©ãªãçšããæè»ãªã¹ã±ãžã¥ãŒã«ç®¡ç
scheduleã©ã€ãã©ãªã®æŠèŠ
schedule
ã©ã€ãã©ãªã䜿çšãããšãPythonã§æè»ãªã¹ã±ãžã¥ãŒã«ãç°¡åã«èšå®ã§ããŸããç¹å®ã®æå»ãææ¥ã«ã¿ã¹ã¯ãå®è¡ãããå Žåã«éåžžã«äŸ¿å©ã§ãã
ã€ã³ã¹ããŒã«æ¹æ³
schedule
ã¯å€éšã©ã€ãã©ãªã®ããã以äžã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ããŸãã
pip install schedule
åºæ¬çãªäœ¿ãæ¹
以äžã¯ãschedule
ã©ã€ãã©ãªã䜿ã£ãåºæ¬çãªã¹ã±ãžã¥ãŒãªã³ã°ã®äŸã§ãã
æ¯åã¿ã¹ã¯ãå®è¡ããäŸ
import schedule
import time
from datetime import datetime
def task():
# å®è¡ãããã¿ã¹ã¯
print(f"ã¿ã¹ã¯å®è¡: {datetime.now()}")
# ã¹ã±ãžã¥ãŒã«ã®èšå®
schedule.every(1).minutes.do(task)
if __name__ == "__main__":
while True:
schedule.run_pending() # å®è¡åŸ
ã¡ã®ã¿ã¹ã¯ã確èªããŠå®è¡
time.sleep(1) # 確èªéé
äž»ãªæ©èœãšèšå®äŸ
schedule
ã©ã€ãã©ãªã¯å€åœ©ãªã¹ã±ãžã¥ãŒã«èšå®ãæäŸããŸãã
æ¯æ¥ç¹å®ã®æå»ã«å®è¡
schedule.every().day.at("09:00").do(task)
ãã®äŸã§ã¯ãæ¯æ¥åå9æã«task()
ãå®è¡ãããŸãã
ææ¥ãæå®ããŠå®è¡
schedule.every().monday.do(task)
schedule.every().friday.at("18:00").do(task)
æææ¥ã«ã¿ã¹ã¯ãå®è¡ããéææ¥ååŸ6æã«ãã¿ã¹ã¯ãèšå®ããŸãã
äžå®ééã§ã®å®è¡
schedule.every(5).minutes.do(task) # 5åããš
schedule.every(2).hours.do(task) # 2æéããš
ã¡ãªãããšãã¡ãªãã
ã¡ãªãã
- æè»ãªã¹ã±ãžã¥ãŒã«ç®¡ç
- æéãææ¥ãééãªã©å€åœ©ãªã¹ã±ãžã¥ãŒã«èšå®ãå¯èœã
- ã·ã³ãã«ãªææ³
- ã³ãŒããçŽæçã§åãããããã
- Pythonæšæºæ©èœãšã®çµ±åãç°¡å
- ä»ã®ã©ã€ãã©ãªãã³ãŒããšçµã¿åãããããã
ãã¡ãªãã
- ããã¯ã°ã©ãŠã³ãåŠçã«ã¯é察å¿
- ã¹ã±ãžã¥ãŒã«ã®å®è¡äžã¯ã¹ã¯ãªãããåãç¶ããå¿ èŠãããã
- 倧èŠæš¡ãªãããžã§ã¯ãã«ã¯äžåã
- è€éãªã¿ã¹ã¯ç®¡çã«ã¯éçãããã
å¿çšäŸïŒè€æ°ã¿ã¹ã¯ã®ã¹ã±ãžã¥ãŒã«
è€æ°ã®ã¿ã¹ã¯ãåæã«ã¹ã±ãžã¥ãŒã«ããããšãç°¡åã§ãã
def morning_task():
print("ãã¯ããïŒã¿ã¹ã¯éå§")
def evening_task():
print("ããã°ãã¯ïŒã¿ã¹ã¯éå§")
# ã¹ã±ãžã¥ãŒã«ã®èšå®
schedule.every().day.at("07:00").do(morning_task)
schedule.every().day.at("19:00").do(evening_task)
if __name__ == "__main__":
while True:
schedule.run_pending()
time.sleep(1)
ãã®æ¹æ³ãé©ããŠããã±ãŒã¹
- ç¹å®ã®æéãææ¥ã«ã¿ã¹ã¯ãå®è¡ãããå Žåã
- å°èŠæš¡ãªãããžã§ã¯ããå人ã®ã¿ã¹ã¯ç®¡çã
- å®è¡äžã«ç°¡åãªæè»æ§ãæ±ããããå Žåã
5. threadingã¢ãžã¥ãŒã«ãå©çšããããã¯ã°ã©ãŠã³ãå®è¡
threadingã¢ãžã¥ãŒã«ã®æŠèŠ
threading
ã¢ãžã¥ãŒã«ã¯ãPythonæšæºã©ã€ãã©ãªã«å«ãŸãããã«ãã¹ã¬ããåŠçãæäŸããæ©èœã§ããäžã€ã®ããã°ã©ã å
ã§è€æ°ã®ã¹ã¬ãããçæãããããããç¬ç«ããŠåäœããããšã§ã䞊ååŠçãå®çŸããŸãã
åºæ¬çãªäœ¿ãæ¹
以äžã¯ãthreading
ã¢ãžã¥ãŒã«ã䜿çšããŠããã¯ã°ã©ãŠã³ãã§ã¿ã¹ã¯ãå®æçã«å®è¡ããåºæ¬çãªäŸã§ãã
å®æå®è¡ã®ãµã³ãã«ã³ãŒã
import threading
import time
from datetime import datetime
def task():
while True:
print(f"ã¿ã¹ã¯å®è¡: {datetime.now()}")
time.sleep(60) # 60ç§ééã§å®è¡
# ã¹ã¬ããã®éå§
thread = threading.Thread(target=task)
thread.daemon = True # ã¡ã€ã³ã¹ã¬ããçµäºæã«èªååæ¢
thread.start()
# ã¡ã€ã³ã¹ã¬ããã®åŠç
print("ããã¯ã°ã©ãŠã³ãã§ã¿ã¹ã¯ãå®è¡äž...")
while True:
time.sleep(1) # ã¡ã€ã³ããã»ã¹ãç¶æ
ãµã³ãã«ã³ãŒãã®è§£èª¬
- ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã®å®çŸ©
task()
é¢æ°å ã§ã«ãŒãã䜿çšãã60ç§ããšã«ã¿ã¹ã¯ãå®è¡ããŠããŸãã
- ã¹ã¬ããã®çæ
threading.Thread
ã䜿çšããŠæ°ããã¹ã¬ãããäœæããtask()
ããã®ã¹ã¬ããã§å®è¡ããŸãã
- ããŒã¢ã³ã¹ã¬ããã®èšå®
thread.daemon = True
ãèšå®ãããšãã¡ã€ã³ã¹ã¬ãããçµäºãããšãã«ããã¯ã°ã©ãŠã³ãã¹ã¬ãããèªåçã«åæ¢ããŸãã
- ã¡ã€ã³ã¹ã¬ããã®åŠç
- ããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ãšã¯ç¬ç«ããŠãã¡ã€ã³ã¹ã¬ããã§ã¯ä»ã®äœæ¥ãå®è¡å¯èœã§ãã
å¿çšäŸïŒè€æ°ã¿ã¹ã¯ã®äžŠè¡å®è¡
以äžã¯ãè€æ°ã®ã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã§äžŠè¡å®è¡ããäŸã§ãã
def task1():
while True:
print(f"ã¿ã¹ã¯1å®è¡: {datetime.now()}")
time.sleep(60)
def task2():
while True:
print(f"ã¿ã¹ã¯2å®è¡: {datetime.now()}")
time.sleep(120)
# ã¹ã¬ããã®çæãšéå§
thread1 = threading.Thread(target=task1)
thread2 = threading.Thread(target=task2)
thread1.daemon = True
thread2.daemon = True
thread1.start()
thread2.start()
# ã¡ã€ã³ã¹ã¬ããã®åŠç
print("è€æ°ã¿ã¹ã¯ã䞊è¡ããŠå®è¡äž...")
while True:
time.sleep(1)
ã¡ãªãããšãã¡ãªãã
ã¡ãªãã
- 䞊è¡åŠçãå¯èœ
- ã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã§å®è¡ã§ãããããä»ã®åŠçãåæã«è¡ããŸãã
- æè»ãªã¿ã¹ã¯ç®¡ç
- è€æ°ã®ã¿ã¹ã¯ãç°¡åã«ã¹ã±ãžã¥ãŒã«å¯èœã
ãã¡ãªãã
- ã¹ã¬ããéã®ãªãœãŒã¹ç«¶å
- ã¹ã¬ããéã§åããªãœãŒã¹ãæ±ãå Žåã¯ã競åïŒã¬ãŒã¹ã³ã³ãã£ã·ã§ã³ïŒãé²ãããã®å·¥å€«ãå¿ èŠã§ãã
- ãšã©ãŒæã®åŠçãè€é
- ã¹ã¬ããå ã§ãšã©ãŒãçºçããŠããããã°ã©ã å šäœã«åœ±é¿ãåãŒãå ŽåããããŸãã
ãã®æ¹æ³ãé©ããŠããã±ãŒã¹
- é·æéãããã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã§å®è¡ãããå Žåã
- ã¡ã€ã³ã¹ã¬ããã§ä»ã®äœæ¥ã䞊è¡ããŠé²ããå¿ èŠãããå Žåã
- å®æçã«å®è¡ãã€ã€ãå¥ã®ããã»ã¹ãç¶æãããå Žåã
6. Celeryã䜿ã£ãé«åºŠãªã¿ã¹ã¯ç®¡ç
Celeryã®æŠèŠ
Celery
ã¯Pythonã§éåæã¿ã¹ã¯ãã¹ã±ãžã¥ãŒã«ã¿ã¹ã¯ã管çããããã®åŒ·åãªãã¬ãŒã ã¯ãŒã¯ã§ãã倧èŠæš¡ãªåæ£ã·ã¹ãã ãããã¯ãšã³ãã¿ã¹ã¯åŠçã«é©ããŠãããã¹ã±ãŒã©ãã«ã§æè»æ§ã®é«ãã¿ã¹ã¯ç®¡çãå®çŸããŸãã
ç¹åŸŽ
- éåæåŠç
ã¿ã¹ã¯ãããã¯ã°ã©ãŠã³ãã§å®è¡ã§ããããããŠãŒã¶ãŒã®æäœã«åœ±é¿ãäžããŸããã - ã¹ã±ãŒã©ããªãã£
倧èŠæš¡ãªã·ã¹ãã ã§ã®åæ£åŠçã«å¯Ÿå¿å¯èœã - ã¡ãã»ãŒãžãããŒã«ãŒã䜿çš
ã¿ã¹ã¯ããã¥ãŒã«å ¥ããŠåŠçãããããã¿ã¹ã¯ã®ç®¡çã容æã
Celeryã®ã€ã³ã¹ããŒã«ãšåæèšå®
å¿ èŠãªã©ã€ãã©ãªã®ã€ã³ã¹ããŒã«
Celery
ã䜿çšããã«ã¯ãã¡ãã»ãŒãžãããŒã«ãŒïŒäŸ: RedisãRabbitMQïŒãå¿
èŠã§ãã以äžã¯Redisã䜿çšããå Žåã®ã»ããã¢ããæé ã§ãã
- CeleryãšRedisã©ã€ãã©ãªãã€ã³ã¹ããŒã«
pip install celery[redis]
- RedisãµãŒããŒãèµ·å
redis-server
åºæ¬çãªäœ¿ãæ¹
以äžã«ãCelery
ã䜿ã£ãŠã¿ã¹ã¯ãå®çŸ©ããå®è¡ããæ¹æ³ã瀺ããŸãã
ã¿ã¹ã¯ãå®çŸ©ãã
tasks.py
ãã¡ã€ã«ãäœæãã以äžã®ã³ãŒããèšè¿°ããŸãã
from celery import Celery
# Celeryã¢ããªã±ãŒã·ã§ã³ã®åæå
app = Celery('tasks', broker='redis://localhost:6379/0')
@app.task
def add(x, y):
return x + y
ã¿ã¹ã¯ãå®è¡ãã
- Celeryã¯ãŒã«ãŒã®èµ·å
ã¿ãŒããã«ã§ä»¥äžãå®è¡ããŠãCeleryã¯ãŒã«ãŒãèµ·åããŸãã
celery -A tasks worker --loglevel=info
- ã¿ã¹ã¯ã®åŒã³åºã
Pythonã·ã§ã«ãå¥ã®ã¹ã¯ãªããã§ä»¥äžãå®è¡ããŸãã
from tasks import add
# ã¿ã¹ã¯ã®å®è¡
result = add.delay(4, 6)
# çµæãååŸ
print(result.get()) # åºå: 10
å®æã¿ã¹ã¯ã®ã¹ã±ãžã¥ãŒã«èšå®
Celery
ã§ã¯ãcelery-beat
ãšããæ¡åŒµã䜿çšããããšã§ãã¿ã¹ã¯ãã¹ã±ãžã¥ãŒã«å®è¡ã§ããŸãã
å¿ èŠãªã€ã³ã¹ããŒã«
pip install django-celery-beat
ã¹ã±ãžã¥ãŒã«ã¿ã¹ã¯ã®èšå®äŸ
celery.py
ãã¡ã€ã«ã«ä»¥äžãè¿œå ããŸãã
from celery import Celery
from celery.schedules import crontab
app = Celery('tasks', broker='redis://localhost:6379/0')
app.conf.beat_schedule = {
'add-every-minute': {
'task': 'tasks.add',
'schedule': crontab(minute='*/1'),
'args': (16, 16),
},
}
ã¡ãªãããšãã¡ãªãã
ã¡ãªãã
- 匷åãªã¿ã¹ã¯ç®¡çæ©èœ
éåæåŠçãã¹ã±ãžã¥ãŒã«ã¿ã¹ã¯ã容æã«å®çŸã - åæ£ã·ã¹ãã 察å¿
倧éã®ã¿ã¹ã¯ãè€æ°ããŒãã§åŠçå¯èœã - å€æ©èœãªæ¡åŒµæ§
ãã®ã³ã°ãç£èŠãªã©ãè±å¯ãªãšã³ã·ã¹ãã ã掻çšå¯èœã
ãã¡ãªãã
- ã»ããã¢ãããè€é
åæèšå®ãäŸåé¢ä¿ã®ç®¡çãé£ããå ŽåããããŸãã - ãªãŒããŒããã
å°èŠæš¡ãªãããžã§ã¯ãã§ã¯ãå¿ èŠä»¥äžã«è€éã«ãªãå¯èœæ§ããããŸãã
ãã®æ¹æ³ãé©ããŠããã±ãŒã¹
- 倧éã®ã¿ã¹ã¯ãå¹ççã«åŠçãããå Žåã
- è€æ°ãµãŒããŒã§åæ£åŠçãè¡ãå¿ èŠãããå Žåã
- å®æã¿ã¹ã¯ãšéåæã¿ã¹ã¯ãçµã¿åãããé«åºŠãªã·ã¹ãã ãæ§ç¯ãããå Žåã
7. OSã®ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ãšã®é£æº
Linux: cronã䜿ã£ãã¹ã±ãžã¥ãŒã«èšå®
cronãšã¯ïŒ
cron
ã¯LinuxãUnixç³»OSã«æšæºã§æèŒãããŠããã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ã§ãå®æçã«ã³ãã³ããã¹ã¯ãªãããå®è¡ããããã«äœ¿çšãããŸãã
æé
1. Pythonã¹ã¯ãªãããäœæãã
以äžã¯ãçŸåšã®æå»ãoutput.txt
ã«æžã蟌ãã¹ã¯ãªããã®äŸã§ãã
# example_task.py
from datetime import datetime
with open("output.txt", "a") as file:
file.write(f"ã¿ã¹ã¯å®è¡: {datetime.now()}\n")
2. cronãžã§ãã®èšå®
ã¿ãŒããã«ã§ä»¥äžãå®è¡ããŠãcronã®èšå®ãç·šéããŸãã
crontab -e
3. ãžã§ããè¿œå ãã
éãããšãã£ã¿ã«ä»¥äžãèšè¿°ããŸãã
*/5 * * * * python3 /path/to/example_task.py
*/5
: 5åããšã«å®è¡ã/path/to/example_task.py
: ã¹ã¯ãªããã®ãã«ãã¹ã
4. èšå®ã®ç¢ºèª
crontab -l
èšå®ãããžã§ããäžèŠ§è¡šç€ºã§ããŸãã
5. åäœç¢ºèª
æå®ããééã§ã¹ã¯ãªãããå®è¡ãããoutput.txt
ã«æå»ãè¿œèšãããããšã確èªããŸãã
Windows: ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ã䜿ã£ãã¹ã±ãžã¥ãŒã«èšå®
ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ãšã¯ïŒ
Windowsã«æšæºæèŒãããŠããGUIããŒã¹ã®ããŒã«ã§ãå®æçãªã¿ã¹ã¯ã®å®è¡ãç°¡åã«èšå®ã§ããŸãã
æé
1. Pythonã¹ã¯ãªãããäœæãã
Linuxã®äŸãšåãã¹ã¯ãªããã䜿çšããŸãã
2. ã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ãéã
ã¹ã¿ãŒãã¡ãã¥ãŒã§ãã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ããšæ€çŽ¢ããããŒã«ãéããŸãã
3. ã¿ã¹ã¯ã®äœæ
ãã¿ã¹ã¯ã®äœæããã¯ãªãã¯ãã以äžãèšå®ããŸãã
- å šè¬ã¿ã
- åå: ã¿ã¹ã¯ã®ååïŒäŸ: Pythonå®æå®è¡ïŒ
- ãæäžäœã®ç¹æš©ã§å®è¡ãããã«ãã§ãã¯ãå ¥ããã
- ããªã¬ãŒã¿ã
- ãæ°èŠããã¯ãªãã¯ãããã¹ã±ãžã¥ãŒã«èšå®ãããå®è¡ééãéžæïŒäŸ: 5åããšïŒã
- æäœã¿ã
- ãæ°èŠããã¯ãªãã¯ãã以äžãå
¥åããŸãã
- ããã°ã©ã /ã¹ã¯ãªãã:
python
- åŒæ°ã®è¿œå :
/path/to/example_task.py
- ããã°ã©ã /ã¹ã¯ãªãã:
4. åäœç¢ºèª
èšå®åŸãã¿ã¹ã¯ãå³ã¯ãªãã¯ããŠãå®è¡ããéžæããããæå®ããã¹ã±ãžã¥ãŒã«ã§ã¿ã¹ã¯ãå®è¡ãããããšã確èªããŸãã
ã¡ãªãããšãã¡ãªãã
ã¡ãªãã
- 軜éã§ã·ã³ãã«
- ã¹ã¯ãªããã«äŸåãããOSæ©èœã§ã¹ã±ãžã¥ãŒã«ã管çã
- ç°å¢ã«äŸåããªã
- Python以å€ã®ã¹ã¯ãªãããã³ãã³ããåæ§ã«ã¹ã±ãžã¥ãŒã«èšå®å¯èœã
ãã¡ãªãã
- ã³ãŒãå ã§ã®ã¹ã±ãžã¥ãŒã«ç®¡çãé£ãã
- ã¹ã±ãžã¥ãŒã«èšå®ãã¹ã¯ãªããå€ã«åé¢ããããããã³ãŒãã®æè»æ§ãäœäžã
- ãããã°ãé£ãã
- å®è¡ç°å¢ããšã©ãŒã®ç¢ºèªãç ©éã«ãªãããšããããŸãã
ãã®æ¹æ³ãé©ããŠããã±ãŒã¹
- å®æå®è¡ã®ã¹ã±ãžã¥ãŒã«ãåçŽã§ãã¿ã¹ã¯ã®çš®é¡ãéãããŠããå Žåã
- ãµãŒããŒãããŒã«ã«ç°å¢ã«äŸåããã¿ã¹ã¯å®è¡ãæ±ããããå Žåã
- å€éšã©ã€ãã©ãªã䜿çšãããã·ã¹ãã ãªãœãŒã¹ãç¯çŽãããå Žåã
8. ã¯ã©ãŠããµãŒãã¹ã掻çšããå®æå®è¡
AWS LambdaãšAmazon EventBridgeã䜿ã£ãå®æå®è¡
AWS Lambdaãšã¯ïŒ
AWS Lambdaã¯ããµãŒããŒç®¡çãå¿ èŠãšããã«ã³ãŒããå®è¡ã§ãããµãŒããŒã¬ã¹ã®ã³ã³ãã¥ãŒãã£ã³ã°ãµãŒãã¹ã§ããEventBridgeãšçµã¿åãããããšã§ãç°¡åã«å®æå®è¡ã¿ã¹ã¯ãèšå®ã§ããŸãã
æé
1. Pythonã¹ã¯ãªããã®æºå
以äžã¯ãçŸåšã®æå»ãCloudWatchãã°ã«èšé²ããã¹ã¯ãªããã®äŸã§ãã
import json
from datetime import datetime
def lambda_handler(event, context):
now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f"ã¿ã¹ã¯å®è¡: {now}")
return {
'statusCode': 200,
'body': json.dumps('ã¿ã¹ã¯å®äº')
}
2. AWS Lambdaé¢æ°ã®äœæ
- AWSãããžã¡ã³ãã³ã³ãœãŒã«ã«ãã°ã€ã³ãããLambdaããéžæã
- ãé¢æ°ã®äœæããã¿ã³ãã¯ãªãã¯ã
- ãäžããäœæããéžæããã©ã³ã¿ã€ã ãšããŠãPython 3.xããéžæã
3. ã¹ã¯ãªããã®ã¢ããããŒã
äœæããã¹ã¯ãªãããZIP圢åŒã§å§çž®ããLambdaé¢æ°ã«ã¢ããããŒãããŸãã
4. Amazon EventBridgeã«ãŒã«ã®èšå®
- AWSãããžã¡ã³ãã³ã³ãœãŒã«ã§ãEventBridgeããéžæã
- ãã«ãŒã«ã®äœæããã¯ãªãã¯ããã¹ã±ãžã¥ãŒã«ãèšå®ã
- äŸ: cronåŒã§ã5åããšãã«ã¿ã¹ã¯ãå®è¡ããå Žå:
cron(0/5 * * * ? *)
- ã¿ãŒã²ãããšããŠãäœæããLambdaé¢æ°ãéžæã
5. åäœç¢ºèª
ã¹ã±ãžã¥ãŒã«éãã«Lambdaé¢æ°ãå®è¡ãããCloudWatchãã°ã«åºåãèšé²ãããããšã確èªããŸãã
Google Cloud FunctionsãšCloud Schedulerã䜿ã£ãå®æå®è¡
Google Cloud Functionsãšã¯ïŒ
Google Cloud Functionsã¯ãGoogle CloudãæäŸãããµãŒããŒã¬ã¹ã®ã³ã³ãã¥ãŒãã£ã³ã°ãµãŒãã¹ã§ããCloud Schedulerã䜿çšããŠå®æçã«é¢æ°ãããªã¬ãŒã§ããŸãã
æé
1. Pythonã¹ã¯ãªããã®æºå
以äžã¯ãGoogle Cloud Functionsçšã«äœæããã¹ã¯ãªããã®äŸã§ãã
import datetime
def task_trigger(request):
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(f"ã¿ã¹ã¯å®è¡: {now}")
return "ã¿ã¹ã¯å®äº", 200
2. Google Cloud Functionsã®äœæ
- Google Cloudã³ã³ãœãŒã«ã«ãã°ã€ã³ãããCloud Functionsããéžæã
- ãé¢æ°ãäœæããã¯ãªãã¯ããã©ã³ã¿ã€ã ãšããŠãPython 3.xããéžæã
- ã³ãŒããã¢ããããŒããããšã³ããªãã€ã³ãã
task_trigger
ã«èšå®ã
3. Cloud Schedulerãžã§ãã®äœæ
- Google Cloudã³ã³ãœãŒã«ã§ãCloud Schedulerããéžæã
- ããžã§ããäœæããã¯ãªãã¯ã
- 以äžã®ããã«ã¹ã±ãžã¥ãŒã«ãèšå®ã
- äŸ: 5åããšã«å®è¡ããå Žå:
*/5 * * * *
- ã¿ãŒã²ããããHTTPããšããCloud Functionsã®URLãæå®ã
4. åäœç¢ºèª
Cloud Functionsã®ãã°ã確èªããã¹ã±ãžã¥ãŒã«éãã«ã¿ã¹ã¯ãå®è¡ãããŠããã確èªããŸãã
ã¡ãªãããšãã¡ãªãã
ã¡ãªãã
- ãµãŒããŒã¬ã¹ã®å©äŸ¿æ§
- ãµãŒããŒã®ç®¡çãäžèŠã§ãéçšã³ã¹ããåæžã§ããŸãã
- é«å¯çšæ§ãšã¹ã±ãŒã©ããªãã£
- ã¯ã©ãŠããµãŒãã¹ã«ããèªåã¹ã±ãŒãªã³ã°æ©èœã§ã倧éã®ã¿ã¹ã¯ã«ã察å¿å¯èœã
- æè»ãªã¹ã±ãžã¥ãŒãªã³ã°
- cronåŒãHTTPããªã¬ãŒã掻çšããé«åºŠãªã¹ã±ãžã¥ãŒã«èšå®ãå¯èœã
ãã¡ãªãã
- åæèšå®ã®è€éã
- ç°å¢æ§ç¯ãæš©éèšå®ãåããŠã®å Žåã¯æéããããã
- ã³ã¹ã
- ç¡ææ ãè¶ ããå Žåã®èª²éã«æ³šæãå¿ èŠã
ãã®æ¹æ³ãé©ããŠããã±ãŒã¹
- ãµãŒããŒã¬ã¹ç°å¢ã§ã¿ã¹ã¯ãå®è¡ãããå Žåã
- é«å¯çšæ§ãšã¹ã±ãŒã©ããªãã£ãæ±ãããããããžã§ã¯ãã
- ã¹ã±ãžã¥ãŒã«ã¿ã¹ã¯ãšã¯ã©ãŠãã€ã³ãã©ã®çµ±åãå³ãããå Žåã
9. ãŸãšã
ãã®èšäºã§ã¯ãPythonã䜿çšããã¿ã¹ã¯ã®å®æå®è¡æ¹æ³ã«ã€ããŠãåºæ¬çãªæ¹æ³ããé«åºŠãªã¯ã©ãŠãããŒã¹ã®æ¹æ³ãŸã§å¹ åºã解説ããŸãããããããã®æ¹æ³ã«ã¯ç¬èªã®ã¡ãªãããšãã¡ãªãããããããããžã§ã¯ãã®èŠä»¶ãå®è¡ç°å¢ã«å¿ããŠæé©ãªéžæãããããšãéèŠã§ãã
æ¹æ³ããšã®ç¹åŸŽãšéžæãã€ã³ã
以äžã«ãåæ¹æ³ã®ç¹åŸŽãç°¡åã«ãŸãšããŸãã
æ¹æ³ | é£æ床 | é©çšã·ãŒã³ | ã¡ãªãã | ãã¡ãªãã |
---|---|---|---|---|
time.sleep() ã䜿ã£ãã«ãŒã | æãã | å°èŠæš¡ã§åçŽãªã¿ã¹ã¯ | ç°¡åã«å®è£ å¯èœ | æè»æ§ãäœã |
schedule ã©ã€ãã©ãª | äžçŽ | çäžæçã§æè»ãªã¹ã±ãžã¥ãŒã«ç®¡ç | æè»ãªèšå®ãå¯èœ | å€éšã©ã€ãã©ãªã«äŸå |
threading ã¢ãžã¥ãŒã« | äžçŽ | é·æéãããããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã®äžŠè¡åŠç | 䞊è¡åŠçãå¯èœ | ã¹ã¬ããéã®ãªãœãŒã¹ç«¶åã«æ³šæ |
Celery | é«åºŠ | 倧èŠæš¡ãªåæ£ã¿ã¹ã¯ç®¡çãè€éãªã¹ã±ãžã¥ãŒã«ã¿ã¹ã¯ | åæ£åŠçãšã¹ã±ãŒã©ããªã㣠| ã»ããã¢ãããè€éã§ãªãŒããŒãããã倧ãã |
OSã¿ã¹ã¯ã¹ã±ãžã¥ãŒã© | äžçŽ | ã·ã³ãã«ãªã¹ã±ãžã¥ãŒã«ã¿ã¹ã¯ | å€éšããŒã«äžèŠ | ãããã°ããã©ãã«ã·ã¥ãŒãã£ã³ã°ãé£ãã |
ã¯ã©ãŠããµãŒãã¹ | é«åºŠ | é«å¯çšæ§ãšã¹ã±ãŒã©ããªãã£ãæ±ãããããžã§ã¯ã | ãµãŒããŒã¬ã¹ã§éçšè² æ ãå°ãªã | åæèšå®ãè€éã§ã³ã¹ãããããå Žåããã |
ã©ã®æ¹æ³ãéžã¶ã¹ããïŒ
1. å°èŠæš¡ã§ç°¡åãªã¿ã¹ã¯ã®å Žå
- ããããæ¹æ³:
time.sleep()
ãŸãã¯schedule
- çç±: èšå®ãç°¡åã§ãå³åº§ã«å®è¡å¯èœã
2. é·æéå®è¡ããã¿ã¹ã¯ã䞊è¡åŠçãå¿ èŠãªå Žå
- ããããæ¹æ³:
threading
- çç±: ã¹ã¬ãããå©çšãã䞊è¡åŠçãå¯èœã§ãããã¯ã°ã©ãŠã³ãã¿ã¹ã¯ã«ã察å¿ã
3. 倧èŠæš¡ãªã·ã¹ãã ãåæ£ã¿ã¹ã¯ã管çããå Žå
- ããããæ¹æ³:
Celery
- çç±: ã¡ãã»ãŒãžãããŒã«ãŒãå©çšãã倧èŠæš¡ã§è€éãªã¿ã¹ã¯ãå¹ççã«ç®¡çã§ããã
4. ãµãŒããŒã¬ã¹ç°å¢ã§é«å¯çšæ§ãæ±ããå Žå
- ããããæ¹æ³: ã¯ã©ãŠããµãŒãã¹ïŒAWS LambdaãGoogle Cloud FunctionsïŒ
- çç±: 管çè² æ ãæå°éã«æãã€ã€ãé«ãæè»æ§ãšæ¡åŒµæ§ãæäŸã
5. OSç°å¢ã«éå®ããã¿ã¹ã¯ç®¡çãå¿ èŠãªå Žå
- ããããæ¹æ³: OSã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ïŒcronãWindowsã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ïŒ
- çç±: å€éšã©ã€ãã©ãªäžèŠã§ãã·ã³ãã«ãªèšå®ãå¯èœã
æåŸã«
Pythonã掻çšããã¿ã¹ã¯ã®å®æå®è¡ã¯ãäœæ¥å¹çåãèªååã«ãããŠéåžžã«åœ¹ç«ã€æè¡ã§ããæ¬èšäºã§çŽ¹ä»ããæ¹æ³ãåèã«ãèªèº«ã®ãããžã§ã¯ãã«æé©ãªææ³ãéžãã§ãã ãããã¿ã¹ã¯ã®çš®é¡ãèŠæš¡ã«å¿ããæ¹æ³ãéžæããããšã§ãããå¹æçãªã·ã¹ãã éçšãå®çŸã§ããŸãã
10. FAQ
Pythonã§ã®å®æå®è¡ã«é¢ããŠãèªè ããå¯ããããããšãå€ã質åãšãã®åçããŸãšããŸããããã®èšäºãåèã«ããªãããå®è·µçãªã¿ã¹ã¯èšå®ãé²ããŠã¿ãŠãã ããã
Q1: Pythonã§å®æå®è¡ãæãç°¡åã«å®çŸããæ¹æ³ã¯ïŒ
A1:
æãç°¡åãªæ¹æ³ã¯ãtime.sleep()
ã䜿ã£ãã«ãŒãåŠçã§ãã以äžã®ããã«æžãã ãã§ãäžå®ééã§ã¿ã¹ã¯ãå®è¡ã§ããŸãã
import time
while True:
print("ã¿ã¹ã¯ãå®è¡äž...")
time.sleep(60) # 60ç§éé
ãã ãããã®æ¹æ³ã¯ã¹ã±ãžã¥ãŒã«ã®æè»æ§ãäœããé·æéå®è¡ããå Žåã«ã¯é©ããŠããŸãããç°¡åãªã¿ã¹ã¯ã«äœ¿çšããŠãã ããã
Q2: schedule
ã©ã€ãã©ãªãštime.sleep()
ã®éãã¯äœã§ããïŒ
A2:
schedule
ã©ã€ãã©ãªã¯ã以äžã®ç¹ã§time.sleep()
ãããåªããŠããŸãïŒ
- æè»æ§: ç¹å®ã®æéãææ¥ã«ã¿ã¹ã¯ãå®è¡ããã¹ã±ãžã¥ãŒã«ãç°¡åã«èšå®ã§ããŸãã
- å¯èªæ§: ã¹ã±ãžã¥ãŒã«èšå®ã®ã³ãŒããçŽæçã§åãããããã
äŸïŒschedule
ã䜿ã£ãã¿ã¹ã¯å®è¡
import schedule
import time
def task():
print("ã¿ã¹ã¯ãå®è¡äž...")
schedule.every().day.at("09:00").do(task)
while True:
schedule.run_pending()
time.sleep(1)
Q3: ã¯ã©ãŠããµãŒãã¹ãå©çšããå®æå®è¡ã¯ã©ã®ãããªã¡ãªããããããŸããïŒ
A3:
ã¯ã©ãŠããµãŒãã¹ïŒAWS LambdaãGoogle Cloud Functionsãªã©ïŒã䜿ãããšã§ã以äžã®ã¡ãªãããåŸãããŸãïŒ
- ãµãŒããŒã¬ã¹éçš: ãµãŒããŒç®¡çãäžèŠã§ãéçšã³ã¹ããåæžã§ããŸãã
- é«å¯çšæ§: ã¯ã©ãŠãã€ã³ãã©ã«ãããã¿ã¹ã¯ã確å®ã«å®è¡ãããŸãã
- ã¹ã±ãŒã©ããªãã£: è² è·ã«å¿ããŠèªåçã«ã¹ã±ãŒã«ããŸãã
- çµ±åæ§: ä»ã®ã¯ã©ãŠããµãŒãã¹ïŒããŒã¿ããŒã¹ãAPIïŒãšã®é£æºã容æã§ãã
Q4: ã¹ã¯ãªããã®å®è¡ãã°ãèšé²ããã«ã¯ã©ãããã°ããã§ããïŒ
A4:
Pythonã®logging
ã¢ãžã¥ãŒã«ã䜿çšãããšãã¹ã¯ãªããã®å®è¡ç¶æ³ããšã©ãŒãèšé²ã§ããŸãã
äŸïŒãã°ãã¡ã€ã«ã«èšé²ããã³ãŒã
import logging
from datetime import datetime
logging.basicConfig(filename="task.log", level=logging.INFO)
def task():
now = datetime.now()
logging.info(f"ã¿ã¹ã¯å®è¡: {now}")
task()
Q5: å®æå®è¡ã®ã¿ã¹ã¯ãçªç¶åæ¢ããå Žåãã©ãããã°ããã§ããïŒ
A5:
ã¿ã¹ã¯ãåæ¢ããåå ã¯ããŸããŸã§ããã以äžã確èªããŠãã ããïŒ
- ã¹ã¯ãªãããšã©ãŒ: äŸå€ãçºçããŠããå Žåã¯ã
try
ãšexcept
ã§ãšã©ãŒããã£ãããããã°ã«èšé²ããŠãã ãããtry: task() except Exception as e: logging.error(f"ãšã©ãŒ: {e}")
- ç°å¢èšå®: cronãã¿ã¹ã¯ã¹ã±ãžã¥ãŒã©ã®èšå®ãæ£ããã確èªããŠãã ããã
- ã¯ã©ãŠããªãœãŒã¹ã®äžé: ã¯ã©ãŠããµãŒãã¹ã䜿çšããŠããå Žåãç¡ææ ããªãœãŒã¹å¶éã«éããŠããªãã確èªããŠãã ããã
Q6: Pythonã¹ã¯ãªããããµãŒããŒã§åžžæå®è¡ããã«ã¯ã©ãããã°ããã§ããïŒ
A6:
Pythonã¹ã¯ãªããããµãŒããŒã§åžžæå®è¡ããå Žåã¯ã以äžã®æ¹æ³ãæ€èšããŠãã ããïŒ
nohup
ã³ãã³ãïŒLinuxïŒ
ã¹ã¯ãªãããããã¯ã°ã©ãŠã³ãã§å®è¡ããŸãã
nohup python3 script.py &
screen
ãŸãã¯tmux
ïŒLinuxïŒ
ã¿ãŒããã«ã»ãã·ã§ã³ãä¿æããªããã¹ã¯ãªãããå®è¡ããŸãã- ãµãŒãã¹å
systemdãªã©ã䜿ã£ãŠã¹ã¯ãªããããµãŒãã¹ãšããŠç»é²ããåèµ·åæãèªåã§å®è¡ããããã«èšå®ããŸãã
Q7: Pythonã§å®æçã«ããŒã¿ãååŸããŠä¿åããã¿ã¹ã¯ãå®è£ ã§ããŸããïŒ
A7:
ã¯ããå¯èœã§ããäŸãã°ãå®æçã«APIããããŒã¿ãååŸããŠããŒã¿ããŒã¹ã«ä¿åããã¿ã¹ã¯ã以äžã®ããã«å®è£ ã§ããŸãïŒ
import schedule
import time
import requests
def fetch_and_save_data():
response = requests.get("https://api.example.com/data")
if response.status_code == 200:
with open("data.json", "w") as file:
file.write(response.text)
print("ããŒã¿ä¿åå®äº")
else:
print(f"ãšã©ãŒ: {response.status_code}")
schedule.every(1).hours.do(fetch_and_save_data)
while True:
schedule.run_pending()
time.sleep(1)
ãã®èšäºã®FAQã»ã¯ã·ã§ã³ãåèã«ãå®æå®è¡ã¿ã¹ã¯ã®çåãåé¡ã解決ããŠãã ããã