首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用APScheduler设置cron作业时,必须调用Func。

使用APScheduler设置cron作业时,必须调用Func。
EN

Stack Overflow用户
提问于 2013-11-05 23:34:24
回答 2查看 1.9K关注 0票数 1

我的意图是在凌晨2点到早上6点之间的随机时间,每周随机发布一次列表上的随机信息。我正在使用APScheduler:

代码语言:javascript
运行
复制
sched.add_cron_job(postTweet(messages[random.randint(0, len(messages))]), day_of_week="0-6/6", hour='2-6/3')

我得到了错误:

代码语言:javascript
运行
复制
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的代码:

代码语言:javascript
运行
复制
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()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-05 23:39:13

您的func不是一个函数,就像它说的那样。您正在调用PostTweet并将结果(可能是字符串或None,但肯定不是函数)传递给add_cron_job。那条狗不会打猎的,主教大人。把一个lambda:放在它的前面:

代码语言:javascript
运行
复制
sched.add_cron_job(lambda: postTweet(messages[random.randint(0, len(messages))]),
                   day_of_week="0-6/6", hour='2-6/3')

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

票数 3
EN

Stack Overflow用户

发布于 2018-03-11 16:17:07

我知道我迟到了,但我想帮助像我这样的人。

您可以使用args作为

代码语言:javascript
运行
复制
scheduler.add_job(postTweet, day_of_week="0-6/6", hour='2-6/3' args='Your Payload as dict')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19801242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档