pyspider 關(guān)于任務(wù)

2023-02-16 16:06 更新

關(guān)于任務(wù)

任務(wù)是要安排的基本單位。

基礎(chǔ)

  • 任務(wù)因其而異taskid。(默認(rèn)值:md5(url),可以通過覆蓋def get_taskid(self, task)方法更改)
  • 任務(wù)在不同項(xiàng)目之間隔離。
  • 任務(wù)有4個狀態(tài):活性失敗成功壞 - 沒用過
  • 僅安排處于活動狀態(tài)的任務(wù)。
  • 任務(wù)按順序提供priority。

時間表

新任務(wù)

當(dāng)一項(xiàng)新任務(wù)(從未見過)進(jìn)來時:

  • 如果exetime已設(shè)置但未到達(dá),則將其置于基于時間的隊(duì)列中以等待。
  • 否則將被接受。 當(dāng)任務(wù)已經(jīng)在隊(duì)列中時:
  • 除非被忽略 force_update 完成任務(wù)后:

如果age設(shè)置,last_crawl_time + age < now將被接受。否則丟棄。 如果itag設(shè)置且不等于它的先前值,則將被接受。否則丟棄。

任務(wù)重試

發(fā)生提取錯誤或腳本錯誤時,默認(rèn)情況下該任務(wù)將重試3次。

第一次重試將在30秒,1小時,6小時,12小時后每次執(zhí)行,并且任何更多重試將推遲24小時。

如果age指定,則重試延遲不會大于age。

您可以通過添加名為retry_delayhandler 的變量來配置重試延遲。retry_delay是一個指定重試間隔的字典。dict中的項(xiàng)目是{recoied:seconds},還有一個特殊鍵:''(空字符串)用于指定默認(rèn)的重試延遲(如果未指定)。

例如,默認(rèn)retry_delay聲明如:

  class MyHandler(BaseHandler):
      retry_delay = {
          0: 30,
          1: 1*60*60,
          2: 6*60*60,
          3: 12*60*60,
          '': 24*60*60
      }


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號