2016-11-20 9 views
0

誰かのサウンドクラウドフォロワーのリストを毎時データベースに追加しようとしています。フォロワーのリストを取得してdbに追加するコードがありますが、apschedulerで使用するとエラーに陥ります。ここでApschedulerが1回実行されてからTypeErrorがスローされる

は、エラーの例です:

import soundcloud 
import sqlite3 
import datetime 
import time 
from apscheduler.schedulers.blocking import BlockingScheduler 

client = soundcloud.Client(client_id='f3b669e6e4509690939aed943c56dc99') 
conn = sqlite3.connect('desktop/SoundcloudProject/RageLogic.db') 
c = conn.cursor() 
writenow = datetime.datetime.now() 
print("If this is printing that means it's running") 
print("The time is now: \n" +str(writenow)) 
page ='https://soundcloud.com/ragelogic' 
page_size = 200 

def create_table(): 
    c.execute('CREATE TABLE IF NOT EXISTS RageLogicFollowersByDay(day TEXT, list_of_followers TEXT)') 

#add todays date and a list of followers to the db 
def inserttodaysdata(): 
    global page 
    full = False 
    user = client.get('/resolve', url=page) 
    ufollowing = [] 
    ufirstfollowing = client.get('/users/'+str(user.id)+'/followers', order='id',limit=page_size, linked_partitioning=1) 
    for user in ufirstfollowing.collection: 
     ufollowing.append(user.id) 
    if hasattr(ufirstfollowing, "next_href"): 
     #print("MANYFOLLOWING") 
     newlink = ufirstfollowing.next_href 
     try: 
      while full == False: 
       newlist = client.get(newlink) 
       for user in newlist.collection: 
        ufollowing.append(user.id) 
       print(len(ufollowing)) 
       if newlist.next_href == None: 
        print("full") 
        full = True 
       else: 
        newlink = newlist.next_href 
     except AttributeError: 
      None 

    #print(len(ufollowing)) 
    wtl = [] 
    wtl = repr(ufollowing) 
    writenow = datetime.datetime.now() 
    c.execute("INSERT INTO RageLogicFollowersByDay (day, list_of_followers) VALUES (?, ?)",(str(writenow), wtl)) 
    conn.commit() 

#create_table() 
scheduler = BlockingScheduler() 
scheduler.add_job(inserttodaysdata(), 'interval', hours=1) 
scheduler.start() 

私はこの全体のことには本当に新しいですし、誰もが与えることができる任意のヘルプは素晴らしいだろう、ありがとう:

Traceback (most recent call last): 
    File "desktop/SoundcloudProject/artistdailyfollowers.py", line 59, in <module> 
    scheduler.add_job(inserttodaysdata(), 'interval', hours=1) 
    File "//anaconda/lib/python3.5/site-packages/apscheduler/schedulers/base.py", line 425, in add_job 
    job = Job(self, **job_kwargs) 
    File "//anaconda/lib/python3.5/site-packages/apscheduler/job.py", line 44, in __init__ 
    self._modify(id=id or uuid4().hex, **kwargs) 
    File "//anaconda/lib/python3.5/site-packages/apscheduler/job.py", line 165, in _modify 
    raise TypeError('func must be a callable or a textual reference to one') 
TypeError: func must be a callable or a textual reference to one 

ここでは、コードです!

scheduler.add_job(inserttodaysdata(), 'interval', hours=1) 

あなたはinserttodaysdata()を呼び出し、add_job()にその戻り値を渡している:

答えて

0

は、この行を参照してください。それをしないでください。呼び出し結果ではなく、関数自体を渡します。

+0

ああ、それは私がそれがあると思ったよりも簡単だった、ありがとう! –

関連する問題