小编Wil*_*ill的帖子

在uwsgi应用程序中启动APScheduler最终会为每个工作者安排一个调度程序吗?

我有一个烧瓶应用程序,我需要APScheduler的调度功能.问题是:

我从哪里开始调度程序实例?

我使用uwsgi + nginx为多个工作者提供这个应用程序,我不会最终得到多个彼此无视的调度程序实例吗?如果这是正确的,单个作业将被多次触发,不是吗?

在这种情况下,最好的策略是什么,所以我最终只得到一个Scheduler实例,并且仍然可以从预定的作业中访问应用程序的上下文?

这个问题虽然有枪炮而不是uwsgi,但也有同样的问题,但答案可能类似.

下面是将"app"定义为uwsgi可调用应用程序对象的代码.包含此代码的文件称为wsgi.py(并不重要).

app = create_app(config=ProductionConfig())

def job_listener(event):
    get_ = "msg from job '%s'" % (event.job)
    logging.info(get_)

# This code below never gets invoked when I check with worker_id() == 1
# The only time it is run is with worker_id() value of 0
app.sched = Scheduler()
app.sched.add_jobstore(ShelveJobStore('/tmp/apsched_%d' % uwsgi.worker_id()), 'file')
app.sched.add_listener(job_listener,
                   events.EVENT_JOB_EXECUTED |
                   events.EVENT_JOB_MISSED |
                   events.EVENT_JOB_ERROR)
app.sched.start()
Run Code Online (Sandbox Code Playgroud)

python worker flask uwsgi apscheduler

10
推荐指数
1
解决办法
2736
查看次数

标签 统计

apscheduler ×1

flask ×1

python ×1

uwsgi ×1

worker ×1