level 3
微雨谯楼
楼主
由于需求原因,所以使用了django+docker(不能开WSL2)+uwsgi+nginx,比较小白,所以有些东西描述不清楚,请各位大佬谅解。
最早的时候,部署到winserver2019中的docker里。发现无法使用定时任务,百度后发现需要部署uwsgi并且将定时任务添加到wsgi里面,因为我有两个定时任务,然后就出现不时会产生某一个定时任务会重复执行的问题,又百度了很久,找到一个文件锁的方式。如下:
def initscheduler(scheduler):
f = open("scheduler.lock", "wb")
try:
fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
register_events(scheduler)
scheduler.start()
except:
pass
def unlock():
fcntl.flock(f, fcntl.LOCK_UN)
f.close()
atexit.register(unlock)
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
@register_job(scheduler,'cron',id="dad",hour=10,minute=30,second=00)
def test_job():
print("1")
initscheduler(scheduler)
scheduler2 = BackgroundScheduler()
scheduler2.add_jobstore(DjangoJobStore(), "default")
@register_job(scheduler2,'cron',id="dad",hour=23,minute=30,second=00)
def test2_job():
print("1")
initscheduler(scheduler2)
但是按照这个实现了以后,发现定时任务只能执行一个(在数据库django_apscheduler_djangojob里只有第一个定时任务),第二个出不来,现在求贴吧大佬们能否教我一下,这个要怎么写才能让两个任务都能运行
2022年01月12日 08点01分
1
最早的时候,部署到winserver2019中的docker里。发现无法使用定时任务,百度后发现需要部署uwsgi并且将定时任务添加到wsgi里面,因为我有两个定时任务,然后就出现不时会产生某一个定时任务会重复执行的问题,又百度了很久,找到一个文件锁的方式。如下:
def initscheduler(scheduler):
f = open("scheduler.lock", "wb")
try:
fcntl.flock(f, fcntl.LOCK_EX | fcntl.LOCK_NB)
register_events(scheduler)
scheduler.start()
except:
pass
def unlock():
fcntl.flock(f, fcntl.LOCK_UN)
f.close()
atexit.register(unlock)
scheduler = BackgroundScheduler()
scheduler.add_jobstore(DjangoJobStore(), "default")
@register_job(scheduler,'cron',id="dad",hour=10,minute=30,second=00)
def test_job():
print("1")
initscheduler(scheduler)
scheduler2 = BackgroundScheduler()
scheduler2.add_jobstore(DjangoJobStore(), "default")
@register_job(scheduler2,'cron',id="dad",hour=23,minute=30,second=00)
def test2_job():
print("1")
initscheduler(scheduler2)
但是按照这个实现了以后,发现定时任务只能执行一个(在数据库django_apscheduler_djangojob里只有第一个定时任务),第二个出不来,现在求贴吧大佬们能否教我一下,这个要怎么写才能让两个任务都能运行