Python,Apscheduler问题 - 作业运行两次而不是一次

时间:2013-09-27 11:50:38

标签: django apache ubuntu python-2.7 apscheduler

我正在使用python构建一个项目。我必须安排一些工作,所以我使用apscheduler。调度程序在Windows Apache上正常运行。但是,当我将项目移动到Amazon Ubuntu实例时,我面临着一个问题,即所有作业都在一段时间后运行,而不是一次运行两次..所以我有两个同时运行的每个作业的实例。在Windows实例上一切正常......我正在使用wsgi-python。 下面是我的wsgi文件..

import os
import sys

sys.path.append('C:/Django/sweetspot/src/sweetspot')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings_server'

from jobs.FeedAndNews import FeedParse, NewsParse
from apscheduler.scheduler import Scheduler

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

today = datetime.datetime.today()
nex = datetime.timedelta(hours=1)
startsat = today + nex
timestr = startsat.strftime("%Y-%m-%d %H:%M:%S")   

scheduler = Scheduler()
scheduler.start()

scheduler.add_interval_job(FeedParse, hours=1, start_date=timestr)
scheduler.add_interval_job(NewsParse, hours=1, start_date=timestr)

以下是python和apcheduler的版本:     Python 2.7,     apscheduler-2.1.1

有人可以帮我识别问题。感谢您的帮助。提前谢谢..

1 个答案:

答案 0 :(得分:0)

有两种不同的方法可以在不停止多处理的情况下解决此问题。

- 首先是使用锁定机制。您可以创建一个充当共享资源的文件,并且首先处理它可以打开它,它可以用这种方式编写一个锁定字符,只有一个进程实际上会运行这些作业。

- 其次,我们可以将作业与所有其他代码分开。我们可以做的是我们可以通过这种方式创建cron作业,而不会影响服务器重启。