【问题标题】:Apscheduler Job Serialization not workingApscheduler作业序列化不起作用
【发布时间】:2016-09-21 23:41:02
【问题描述】:

我们正在建立一个基于 Apscheduler 的调度器,问题是我们无法序列化 Jobs。

这是我们想要的结构。

一个类Base,及其方法,这是要运行的类

class Base(object):
    def __init__(self, bim):
      self.b = bim
      pass

    def print_some(self):
      print "Some bout to go down"

将从中安排类 Base 执行的类 BS

from base import Base
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
import logging

logging.basicConfig()

jobstores = {'default': SQLAlchemyJobStore(url='url_to_DB')}

class BS(object):
    def __init__(self):
       self.scheduler = BackgroundScheduler()
       self.scheduler.configure(jobstores=jobstores)
       self.scheduler.start()
       self.base = Base()


    def print_some(self):
       print "ngnf"

    def add_job(self):
       self.scheduler.add_job(Base.print_some, 'interval', minutes=1)


BS().add_job()

但是当我运行代码时,将参数传递给构造函数时遇到问题

ERROR:apscheduler.executors.default:Job "Base.print_some (trigger: interval[0:00:01], next run at: 2016-05-24 18:16:27 CEST)" raised an exception
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/apscheduler/executors/base.py", line 112, in run_job
retval = job.func(*job.args, **job.kwargs)
TypeError: unbound method print_some() must be called with Base instance as first argument (got nothing instead)

我试过了

self.scheduler.add_job(Base.print_some, 'interval', args=[Base()], kwargs=dict(self=Base()), seconds=1)

还有这个

self.scheduler.add_job(Base.print_some, 'interval', args=[self.base], kwargs=dict(self.base), seconds=1)

他们都没有工作。

我错过了什么,或者应该做什么?

【问题讨论】:

    标签: python python-3.x scheduled-tasks apscheduler


    【解决方案1】:

    第二个示例无法运行,因为您的位置参数和关键字参数存在冲突。我认为第三个不起作用,因为 self.base 不是可迭代的。 您是否尝试过仅将实例作为位置参数传递?

    【讨论】:

    • 哦,Alex,感谢您在 Google 网上论坛上的帮助,我终于选择了:def add_job(self, num): self.scheduler.add_job(base.print_it, 'interval', seconds=1)
    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    相关资源
    最近更新 更多