python 定时器_python定时器apscheduler及一个django的小tips
類似于windows系統里的計劃任務,需要按特定的時間周期,去調度執行一項任務。python里有apscheduler組件。
分有阻塞式與非阻塞式,如下是阻塞式,就是不需要自己去寫循環。
from apscheduler.schedulers.background import BlockingScheduler
from datetime import datetime
def tick():
print('Tick! The time is: %s' % datetime.now())
if __name__ == '__main__':
scheduler = BlockingScheduler()
scheduler.add_job(tick, 'interval', seconds=3)
scheduler.start()
可以看到結果,第3秒會觸發一次調用。
Tick! The time is: 2017-11-29 10:43:07.244755
Tick! The time is: 2017-11-29 10:43:10.246927
Tick! The time is: 2017-11-29 10:43:13.235098
Tick! The time is: 2017-11-29 10:43:16.243270
Tick! The time is: 2017-11-29 10:43:19.239441
這個比較簡單,重點是cron形式,支持cron表達式,這種方式非常靈活。
Cron表達式是一個字符串,字符串以5或6個空格隔開,分為6或7個域,每一個域代表一個含義,Cron有如下兩種語法格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek
每一個域可出現的字符如下:
Seconds:可出現", - * /"四個字符,有效范圍為0-59的整數
Minutes:可出現", - * /"四個字符,有效范圍為0-59的整數
Hours:可出現", - * /"四個字符,有效范圍為0-23的整數
DayofMonth:可出現", - * / ? L W C"八個字符,有效范圍為0-31的整數
Month:可出現", - * /"四個字符,有效范圍為1-12的整數或JAN-DEc
DayofWeek:可出現", - * / ? L C #"四個字符,有效范圍為1-7的整數或SUN-SAT兩個范圍。1表示星期天,2表示星期一, 依次類推
Year:可出現", - * /"四個字符,有效范圍為1970-2099年
如下就是每小時運行一次:
scheduler = BlockingScheduler(executors=executors)
scheduler.add_job(article_job, 'cron', hour='0/1')
django在docker里部署的問題及解決方案:
創建容器時用-p選項指定了容器開放的端口8000
在Docker容器里用命令python manage.py runserver啟動了Django服務器
用docker ps命令得到了主機到該容器的IP映射0.0.0.0:8000
然后在主機通過瀏覽器訪問地址localhost:8000,結果不能訪問到容器里的Django
解決方案:
命令python manage.py runserver默認監聽127.0.0.1:8000,但是地址127.0.0.1是一個回環地址,表示“我自己”,不能通過外部訪問,只能自己訪問
所以需要指定監聽端口python manage.py runserver 0.0.0.0:8000,其中0.0.0.0表示監聽所有地址,然后用主機的瀏覽器訪問地址localhost:8000,該地址映射到容器的localhost:8000
好了,今天就分享到這里,希望本文對大家有所幫助,如果大家覺得有用可以點個關注支持一下謝謝!
總結
以上是生活随笔為你收集整理的python 定时器_python定时器apscheduler及一个django的小tips的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA入门级教学之(方法重写/方法重载
- 下一篇: python做一个窗口样式_python