celery在python爬蟲中定時(shí)操作實(shí)例講解
使用定時(shí)功能對于我們想要快速獲取某個(gè)數(shù)據(jù)來說,是一個(gè)非常好的方法。這樣我們就不用苦苦守在電腦屏幕前,只為蹲到某個(gè)想要的東西。在之前我們已經(jīng)講過time函數(shù)進(jìn)行定時(shí)操作,這算是time函數(shù)的比較基礎(chǔ)的一個(gè)用法了。其實(shí)定時(shí)功能同樣可以用celery實(shí)現(xiàn),具體的方法我們往下看:
爬蟲由于其特殊性,可能需要定時(shí)做增量抓取,也可能需要定時(shí)做模擬登陸,以防止cookie過期,而celery恰恰就實(shí)現(xiàn)了定時(shí)任務(wù)的功能。在上述基礎(chǔ)上,我們將`tasks.py`文件改成如下內(nèi)容
from celery import Celery
app = Celery('add_tasks', broker='redis:''//223.129.0.190:6379/2', backend='redis:''//223.129.0.190:6379/3')
app.conf.update(
# 配置所在時(shí)區(qū)
CELERY_TIMEZONE='Asia/Shanghai',
CELERY_ENABLE_UTC=True,
# 官網(wǎng)推薦消息序列化方式為json
CELERY_ACCEPT_CONTENT=['json'],
CELERY_TASK_SERIALIZER='json',
CELERY_RESULT_SERIALIZER='json',
# 配置定時(shí)任務(wù)
CELERYBEAT_SCHEDULE={
'my_task': {
'task': 'tasks.add', # tasks.py模塊下的add方法
'schedule': 60, # 每隔60運(yùn)行一次
'args': (23, 12),
}
}
)
@app.task
def add(x, y):
return x + y
然后先通過`ctrl+c`停掉前一個(gè)worker,因?yàn)槲覀兇a改了,需要重啟worker才會(huì)生效。我們再次以`celery -A tasks worker -l info`這個(gè)命令開啟worker。
這個(gè)時(shí)候我們只是開啟了worker,如果要讓worker執(zhí)行任務(wù),那么還需要通過beat給它定時(shí)發(fā)送,我們再開一個(gè)命令行,切換到項(xiàng)目根目錄,通過
celery beat -A tasks -l info celery beat v3.1.25 (Cipater) is starting. __ - ... __ - _ Configuration -> . broker -> redis://223.129.0.190:6379/2 . loader -> celery.loaders.app.AppLoader . scheduler -> celery.beat.PersistentScheduler . db -> celerybeat-schedule . logfile -> [stderr]@%INFO . maxinterval -> now (0s) [2017-05-19 15:56:57,125: INFO/MainProcess] beat: Starting...
這樣就表示定時(shí)任務(wù)已經(jīng)開始運(yùn)行了。
到此這篇關(guān)于celery在python爬蟲中定時(shí)操作實(shí)例講解的文章就介紹到這了,更多相關(guān)celery如何在python爬蟲中進(jìn)行定時(shí)操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python實(shí)現(xiàn)迪杰斯特拉和弗洛伊德算法
這篇文章主要為大家詳細(xì)介紹了基于Python實(shí)現(xiàn)迪杰斯特拉和弗洛伊德算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01
基于Python實(shí)現(xiàn)的通用小規(guī)模搜索引擎
這篇文章主要介紹了基于Python實(shí)現(xiàn)的通用小規(guī)模搜索引擎,文中代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2025-01-01
如何使用Python修改matplotlib.pyplot.colorbar的位置以對齊主圖
使用matplotlib.colors模塊可以完成大多數(shù)常見的任務(wù),下面這篇文章主要給大家介紹了關(guān)于如何使用Python修改matplotlib.pyplot.colorbar的位置以對齊主圖的相關(guān)資料,需要的朋友可以參考下2022-07-07
python并發(fā)執(zhí)行request請求的示例
這篇文章主要介紹了python并發(fā)執(zhí)行request請求,我將為我們展示使用concurrent.futures.ThreadPoolExecutor和requests庫并發(fā)執(zhí)行HTTP請求的示例,需要的朋友可以參考下2024-06-06
python定時(shí)任務(wù)apscheduler的詳細(xì)使用教程
APScheduler的全稱是Advanced?Python?Scheduler,它是一個(gè)輕量級的?Python定時(shí)任務(wù)調(diào)度框架,下面這篇文章主要給大家介紹了關(guān)于python定時(shí)任務(wù)apscheduler的詳細(xì)使用教程,需要的朋友可以參考下2022-02-02
Python word2vec訓(xùn)練詞向量實(shí)例分析講解
這篇文章主要介紹了Python word2vec訓(xùn)練詞向量實(shí)例分析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12
Python實(shí)現(xiàn)TCP協(xié)議下的端口映射功能的腳本程序示例
端口映射一個(gè)最基本的運(yùn)作形態(tài)就是通過一個(gè)中間端口將一個(gè)端口發(fā)送的數(shù)據(jù)全部轉(zhuǎn)給另一個(gè)端口,well,這里我們就來看一下Python實(shí)現(xiàn)TCP協(xié)議下的端口映射功能的腳本程序示例2016-06-06

