【问题标题】:I am trying to get my python twitter bot to tweet every 30 minutes on the hour. What should I do? [closed]我试图让我的 python twitter 机器人每小时每 30 分钟发一次推文。我该怎么办? [关闭]
【发布时间】:2020-06-12 21:36:30
【问题描述】:

机器人需要在整点每 30 分钟发一次推文(即在 12:30,然后是 1:00,然后是 1:30...)。我理解 tweepy 和所有这些。我只需要弄清楚如何让计时器工作。我在想这样的事情:

if (time = "12:00") or (time = "12:30") or (time = "1:00") or...:
    # tweet

我不知道要使用什么包或如何设置它。

【问题讨论】:

  • 时间实际上是一个日期时间对象还是一个时间字符串?
  • 该尝试将立即失败。你不能在 if 语句中赋值。
  • 我提供的代码实际上并没有被使用。我只是想知道我想做的事情是有意义的。如果时间在每小时的 30 分钟标记上,我只需要它来发推文
  • 您好,欢迎来到 SO。你能展示你到目前为止所做的事情吗?您是否在 Google 上搜索过 python timer 或开发了代码?请更具体地说明您需要什么帮助,而不是“为我做这件事”之类的问题。

标签: python datetime tweepy


【解决方案1】:

所以使用 datetime 你实际上可以像这样得到分钟:

from datetime import datetime

time = datetime.now()

minutes = time.minute

或者在一行中:

from datetime import datetime

minutes = datetime.now().minute

现在你有了分钟,if 语句可以简化,因为你不看小时。

if minutes == 0 or minutes == 30:
    # do tweet

编辑:

你评论问: “也很好奇,这是否意味着我需要在 00 点运行我的程序,因为时间是通过 now 函数创建的?”

所以理论上这里有几种方法可以回答这个问题。首先将您的代码包装在一个函数中并不断调用它:

def tweet_check(minutes):
    minutes = datetime.now().minutes

    if minutes == 0 or minutes == 30:
        # do tweet

if __name__ == '__main__':
    # This would be how it constantly runs the check
    while true:
        tweet_check()

选项 1:

然后,当您希望机器人每 30 分钟发送一次推文时,您可以手动运行脚本。

选项 2

通过检查 if ma​​in == 'ma​​in' 您将能够将此脚本导入另一个脚本,然后按照您自己的条件运行它。作为导入的脚本,您可以使用调度程序在特定时间运行它。

选项 3:

将其作为系统计划任务 (windows) 或 cron 作业 (linux) 运行以使其在启动时运行。

但是,关键是要指出,如果您确实将其用作选项 2 或 3,那么最好对其进行修改,如果您希望它在任何时间都发送,则可以在其中传入一个可选变量。

所以我会这样修改它:

def tweet_check(time_check=True):
    if time_check:
        minutes = datetime.now().minutes

        if minutes == 0 or minutes == 30:
            # do tweet

    else:
        # do tweet

这是因为选项 2 和 3 都固有地内置了时间。所以在这里再做一次是过度/低效的。在这个简单的例子中,这不会有太大的不同,但是在几千条推文的规模上,它最终会滚动到下一分钟,然后会切断一些推文。

【讨论】:

  • 正是我想要的。谢谢!
  • @parisosuch 如果有帮助,您可以将其标记为已接受吗?
  • 也很好奇,这是否意味着我需要在 :00 时运行我的程序,因为 time 是通过 now 函数创建的?
  • 我将编辑我的帖子并处理您的评论。评论回复会有点长。
  • 谢谢!我相信我写的东西也有效(检查帖子编辑)。我在一个在线 IDE 上运行它来测试它的功能。
【解决方案2】:

您可以使用 Scheduler 库启动 here。试试这个作为它如何工作的例子,你显然可以在本地这样做,但不推荐这样做:

import schedule  

def job():  
    print("A Simple Python Scheduler.")  

# run the function job() every 30 minutes  
schedule.every(30).minutes.do(job)  

while True:  
    schedule.run_pending()  

【讨论】:

    【解决方案3】:

    我会研究 PyPI 调度模块:

    https://pypi.org/project/schedule/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-26
      • 1970-01-01
      • 2021-09-10
      相关资源
      最近更新 更多