Почему мой твиттер-бот публикует больше, чем ожидалось? - PullRequest
0 голосов
/ 07 января 2020

Я использую код time.sleep(3600), и он пишет чаще, чем каждые 3600 секунд. Почему это происходит?

В настоящее время он пишет в Твиттере в 9 минут, а затем в 32 минуты.

Редактировать:

Вот код. Единственная другая причина, по которой это может происходить, заключается в том, что это может быть запущено в нескольких случаях случайно. Я проверю это.

# tweepy will allow us to communicate with Twitter, time will allow us to set how often we tweet
import tweepy, time

#enter the corresponding information from your Twitter application management:
CONSUMER_KEY = 'mykey' #keep the quotes, replace this with your consumer key
CONSUMER_SECRET = 'mykey' #keep the quotes, replace this with your consumer secret key
ACCESS_TOKEN = 'my-my' #keep the quotes, replace this with your access token
ACCESS_SECRET = 'mykey' #keep the quotes, replace this with your access token secret


# configure our access information for reaching Twitter
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

# access Twitter!
api = tweepy.API(auth)

# open our content file and read each line
filename=open('content.txt')
f=filename.readlines()
filename.close()

# for each line in our contents file, lets tweet that line out except when we hit a error
for line in f:
    try:
        api.update_status(line)
        print("Tweeting!")
    except tweepy.TweepError as err:
        print(err)
    time.sleep(3600) #Tweet every hour
print("All done tweeting!")

1 Ответ

0 голосов
/ 07 января 2020

Это может быть вызвано тем, что ваш модуль не защищен от запуска при импорте. Это означает, что каждый раз, когда ваш модуль импортируется (может произойти на

from package import *   

), ваш код интерпретируется и создается новый l oop.


Вы можете убедиться Ваш код запускается только тогда, когда вы хотите, чтобы он выполнялся с этим:

Создайте функцию из вашего кода, назовем ее main ().

Затем вы можете проверить, называется ли ваш модуль как скрипт.

def main():
    # tweepy will allow us to communicate with Twitter, time will allow us to set how often we tweet
    import tweepy, time

    #enter the corresponding information from your Twitter application management:
    CONSUMER_KEY = 'mykey' #keep the quotes, replace this with your consumer key
    CONSUMER_SECRET = 'mykey' #keep the quotes, replace this with your consumer secret key
    ACCESS_TOKEN = 'my-my' #keep the quotes, replace this with your access token
    ACCESS_SECRET = 'mykey' #keep the quotes, replace this with your access token secret


    # configure our access information for reaching Twitter
    auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
    auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)

    # access Twitter!
    api = tweepy.API(auth)

    # open our content file and read each line
    filename=open('content.txt')
    f=filename.readlines()
    filename.close()

    # for each line in our contents file, lets tweet that line out except when we hit a error
    for line in f:
        try:
            api.update_status(line)
            print("Tweeting!")
        except tweepy.TweepError as err:
            print(err)
        time.sleep(3600) #Tweet every hour
    print("All done tweeting!")

if __name__ == "__main__":
    main()

Если вам нужно использовать свой код из другого скрипта, вы можете использовать

from your_module import main
main()

Или из командной строки:

python -m your_module
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...