gpt4 book ai didi

python - 使用 APScheduler 设置 cron 作业时,Func 必须可调用

转载 作者:行者123 更新时间:2023-11-30 23:31:37 25 4
gpt4 key购买 nike

我的目的是从列表中随机发送一条消息,每周在随机一天的凌晨 2 点到 6 点之间的随机时间发送一次。我正在使用 APScheduler:

sched.add_cron_job(postTweet(messages[random.randint(0, len(messages))]), day_of_week="0-6/6", hour='2-6/3')

我收到错误:

Traceback (most recent call last):
File "/app/.heroku/python/lib/python2.7/site-packages/apscheduler/scheduler.py", line 379, in add_cron_job
sched.add_cron_job(postTweet(messages[random.randint(0, len(messages))]), day_of_week="0-6/6", hour='2-6/3')
options.pop('coalesce', self.coalesce), **options)
File "/app/.heroku/python/lib/python2.7/site-packages/apscheduler/job.py", line 47, in __init__
raise TypeError('func must be callable')
TypeError: func must be callable
return self.add_job(trigger, func, args, kwargs, **options)

我不确定这个错误意味着什么,更不用说如何修复它了。任何有关研究内容的启发将不胜感激。

编辑:

postTweet 的代码:

def postTweet(message):
log = open('log', 'a')
log.write("\nMessage being tweeted: %s \n" % message)
print "Message being tweeted: %s" % message
twitter.statuses.update(status=message)
log.close()

最佳答案

你的 func 不是一个函数,就像它说的那样。您正在调用 PostTweet 并将结果(可能是字符串或 None,但绝对不是函数)传递给 add_cron_job。那只狗不会打猎,大人。在其前面粘贴一个lambda::

sched.add_cron_job(lambda: postTweet(messages[random.randint(0, len(messages))]),
day_of_week="0-6/6", hour='2-6/3')

这将创建一个可以稍后调用的函数,而不是在添加作业之前执行它。

关于python - 使用 APScheduler 设置 cron 作业时,Func 必须可调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19801242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com