How to make this script loop every hour

守給你的承諾、 提交于 2020-05-24 06:03:27

问题


I'm creating a bot that posts every 60 minutes covid numbers, I have it finished but idk how to make it repeat. Any idea? It's a little project that I have in mind and it's the last thing I have to do. (if you answer the code from the publication with inside the solution it would be very cool)

import sys
CONSUMER_KEY = 'XXXX'
CONSUMER_SECRET = 'XXXX'
ACCESS_TOKEN = 'XXXX'
ACCESS_TOKEN_SECRET = 'XXXX'
import tweepy

import requests
from lxml import html


def create_tweet():
    response = requests.get('https://www.worldometers.info/coronavirus/')
    doc = html.fromstring(response.content)
    total, deaths, recovered = doc.xpath('//div[@class="maincounter-number"]/span/text()')

    tweet = f'''Coronavirus Latest Updates
Total cases: {total}
Recovered: {recovered}
Deaths: {deaths}

Source: https://www.worldometers.info/coronavirus/

#coronavirus #covid19 #coronavirusnews #coronavirusupdates #COVID19
'''
    return tweet


if __name__ == '__main__':
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

    # Create API object
    api = tweepy.API(auth)

    try:
        api.verify_credentials()
        print('Authentication Successful')
    except:
        print('Error while authenticating API')
        sys.exit(5)

    tweet = create_tweet()
    api.update_status(tweet)
    print('Tweet successful')

回答1:


You can simply add this statement at the end of the code

sleep(3600)

If you want it to run endlessly, you can do it like this:

while True:
    insert your main code here
    sleep(3600)



回答2:


You might want to use a scheduler, there is already a built-in one in Python (sched), read more about it here: https://docs.python.org/3/library/sched.html




回答3:


You have to use a timer like this one below. (The function refresh refers to itself every hour)

from threading import Timer

def refresh(delay_repeat=3600): # 3600 sec for one hour
    # Your refresh script here
    # ....
    # timer
    Timer(delay_repeat, refresh, (delay_repeat, )).start()

Have a look at my runnable refresh graph here to have an idea : How can I dynamically update my matplotlib figure as the data file changes?



来源:https://stackoverflow.com/questions/61873249/how-to-make-this-script-loop-every-hour

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!