2015-09-22 1 views
-1

я пытаюсь запланировать задачу каждые 5 секунд, вот что я сделал:планировании задачи не работает в Python

conn = connect('mydatabase.db') 
c = conn.cursor() 
c.execute('CREATE TABLE IF NOT EXISTS RSSEntries (entry_id INTEGER PRIMARY KEY AUTOINCREMENT, title , url , date);') 


def checkLink(linko): 
    c.execute("SELECT entry_id FROM RSSEntries WHERE url = ?", (linko,)) 
    datas=c.fetchall() 

    if len(datas)==0: 
    return True 

    else: 
    return False 



def storeData(): 
    data = feedparser.parse("http://www...") 
    for i in range(len(data['entries'])): 

    if checkLink(data.entries[i].link) is True: 
     print "doesn't exist" 
     c.execute("insert into RSSEntries VALUES\ 
      (NULL,'%s', '%s', '%s')" % (data.entries[i].title,data.entries[i].link, data.feed.updated)) 

    else: 
     print "exist" 


schedule.every(5).seconds.do(storeData) 
conn.commit() 

но метод storeData не доступен .. если я бегу storeData() вместо schedule.every(5).seconds.do(storeData) код работает отлично, что я делаю неправильно

любые предлагающие или другие способы выполнения этой задачи приветствуются.

ответ

1

Я думаю, что вам не хватает петлю планировщика в конце сценария:

while True: 
    schedule.run_pending() 
    time.sleep(1) 

https://pypi.python.org/pypi/schedule

+0

она работала Спасибо, пожалуйста, вы можете объяснить, почему 'schedule.every (5) .seconds. do (storeData) 'не работает –

+0

by' schedule.every (5) .seconds.do (storeData) 'вы просто устанавливаете параметры для объекта планировщика. Без вызова метода планировщика 'run_pending()' часы не запускаются – lukaz