python 定时器_python定时器apscheduler及一个django的小tips
類似于windows系統(tǒng)里的計(jì)劃任務(wù),需要按特定的時(shí)間周期,去調(diào)度執(zhí)行一項(xiàng)任務(wù)。python里有apscheduler組件。
分有阻塞式與非阻塞式,如下是阻塞式,就是不需要自己去寫循環(huán)。
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()
可以看到結(jié)果,第3秒會(huì)觸發(fā)一次調(diào)用。
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
這個(gè)比較簡(jiǎn)單,重點(diǎn)是cron形式,支持cron表達(dá)式,這種方式非常靈活。
Cron表達(dá)式是一個(gè)字符串,字符串以5或6個(gè)空格隔開,分為6或7個(gè)域,每一個(gè)域代表一個(gè)含義,Cron有如下兩種語法格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek
每一個(gè)域可出現(xiàn)的字符如下:
Seconds:可出現(xiàn)", - * /"四個(gè)字符,有效范圍為0-59的整數(shù)
Minutes:可出現(xiàn)", - * /"四個(gè)字符,有效范圍為0-59的整數(shù)
Hours:可出現(xiàn)", - * /"四個(gè)字符,有效范圍為0-23的整數(shù)
DayofMonth:可出現(xiàn)", - * / ? L W C"八個(gè)字符,有效范圍為0-31的整數(shù)
Month:可出現(xiàn)", - * /"四個(gè)字符,有效范圍為1-12的整數(shù)或JAN-DEc
DayofWeek:可出現(xiàn)", - * / ? L C #"四個(gè)字符,有效范圍為1-7的整數(shù)或SUN-SAT兩個(gè)范圍。1表示星期天,2表示星期一, 依次類推
Year:可出現(xiàn)", - * /"四個(gè)字符,有效范圍為1970-2099年
如下就是每小時(shí)運(yùn)行一次:
scheduler = BlockingScheduler(executors=executors)
scheduler.add_job(article_job, 'cron', hour='0/1')
django在docker里部署的問題及解決方案:
創(chuàng)建容器時(shí)用-p選項(xiàng)指定了容器開放的端口8000
在Docker容器里用命令python manage.py runserver啟動(dòng)了Django服務(wù)器
用docker ps命令得到了主機(jī)到該容器的IP映射0.0.0.0:8000
然后在主機(jī)通過瀏覽器訪問地址localhost:8000,結(jié)果不能訪問到容器里的Django
解決方案:
命令python manage.py runserver默認(rèn)監(jiān)聽127.0.0.1:8000,但是地址127.0.0.1是一個(gè)回環(huán)地址,表示“我自己”,不能通過外部訪問,只能自己訪問
所以需要指定監(jiān)聽端口python manage.py runserver 0.0.0.0:8000,其中0.0.0.0表示監(jiān)聽所有地址,然后用主機(jī)的瀏覽器訪問地址localhost:8000,該地址映射到容器的localhost:8000
好了,今天就分享到這里,希望本文對(duì)大家有所幫助,如果大家覺得有用可以點(diǎn)個(gè)關(guān)注支持一下謝謝!
總結(jié)
以上是生活随笔為你收集整理的python 定时器_python定时器apscheduler及一个django的小tips的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA入门级教学之(方法重写/方法重载
- 下一篇: nginx1.10.3 php7.0,c