【发布时间】:2013-10-03 17:00:17
【问题描述】:
我正在使用 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的版本: 蟒蛇2.7, apscheduler-2.1.1
有人可以帮我找出问题所在。感谢您的帮助。提前谢谢..
【问题讨论】:
-
我在 urls.py 中添加了调度程序代码,并从 wsgi.py 中删除了它。现在作业正在运行一次,但在我提供它们的一半间隔后再次运行,即如果我给 1 小时,它会在半小时后启动同一作业的另一个实例......
-
您确实意识到,在 UNIX 上,如果使用 Apache/mod_wsgi,您的 WSGI 应用程序可以同时在多个进程中运行。如果您只依赖一个进程,就像在 Windows 上一样,那么您需要适当地配置 Apache/mod_wsgi。最有可能使用 mod_wsgi 守护进程模式。见code.google.com/p/modwsgi/wiki/ProcessesAndThreading
标签: django apache ubuntu python-2.7 apscheduler