django-apscheduler 任务计划问题咨询 - V2EX
fanne

django-apscheduler 任务计划问题咨询

  •  
  •   fanne Sep 4, 2018 6252 views
    This topic created in 2817 days ago, the information mentioned may be changed or developed.

    我使用了这个框架的 django-apscheduler

    代码内容

    # -*- coding: utf-8 -*- import datetime import time from apscheduler.schedulers.background import BackgroundScheduler from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor executors = { 'default': ThreadPoolExecutor(10), 'processpool': ProcessPoolExecutor(3) } scheduler = BackgroundScheduler(executors=executors) scheduler.add_jobstore(DjangoJobStore(), 'default') def cron_test(): print '当前时间:{0}'.format(datetime.datetime.now()) def cron_task(run_time): task_idss = str(time.time()) print task_idss scheduler.add_job(func=cron_test, next_run_time=run_time, id=task_idss) scheduler.start() 

    在 django 的一个 view 里面调用

    class GameOpenTimeView(View): def post(self, request, obj_id): print obj_id open_time = request.POST.get("open_time") print open_time open_time = datetime.datetime.strptime(open_time,"%Y-%m-%d %H:%M:00") print type(open_time) print open_time cron_task(open_time) return JsonResponse({'status': 'success'}) 

    时间由前端页面传入

    image

    问题

    当我第一次传一个时间进入,可以正常生成一个任务点

    当我第二次传入一个时间,出现告警说

     return self.dispatch(request, *args, **kwargs) File "/Users/apple/OneDrive/Code_7zGame/Envs/tdops/lib/python2.7/site-packages/django/views/generic/base.py", line 88, in dispatch return handler(request, *args, **kwargs) File "/Users/apple/OneDrive/vultr_svn/Django_myself/tdops/pro1/views.py", line 340, in post cron_task(open_time) File "/Users/apple/OneDrive/vultr_svn/Django_myself/tdops/opsbase/schedwork.py", line 23, in cron_task scheduler.start() File "/Users/apple/OneDrive/Code_7zGame/Envs/tdops/lib/python2.7/site-packages/apscheduler/schedulers/background.py", line 33, in start BaseScheduler.start(self, *args, **kwargs) File "/Users/apple/OneDrive/Code_7zGame/Envs/tdops/lib/python2.7/site-packages/apscheduler/schedulers/base.py", line 134, in start raise SchedulerAlreadyRunningError SchedulerAlreadyRunningError: Scheduler is already running [04/Sep/2018 20:53:21] "POST /pro1/gameopentime/1003/ HTTP/1.1" 500 18550 

    这个是为何,这个模块之前也是有用过,也没出现这样当情况,不过之前是直接使用了 apscheduler 模块 然后后面也有换成了 apscheduler 模块试过,也是一样情况的

    正常不是一个任务就一个 scheduler.start() 的么,为何不给再起一个的。

    9 replies    2018-09-05 11:21:22 +08:00
    Allianzcortex
        1
    Allianzcortex  
       Sep 4, 2018
    我也想知道......理论上每次传的任务的 id 不同,job_kwargs 也不同,就是不同的任务....... scheduler 里有个 @property running,可以看这个 scheduler 是否正在运行,LZ 要不调试试试
    fanne
        2
    fanne  
    OP
       Sep 4, 2018
    @Allianzcortex #1 @property running 要怎么看,看控制台好像也没有这些信息的
    maxmilia
        3
    maxmilia  
       Sep 4, 2018
    UI 是啥啊? bootstrap 模板吗?感觉挺好的
    fanne
        4
    fanne  
    OP
       Sep 4, 2018
    @maxmilia #3 inspinia
    fanne
        6
    fanne  
    OP
       Sep 5, 2018
    @Allianzcortex #5 print scheduler.get_jobs() 第一次打印出
    [<Job (id=1536109767.33 name=cron_test)>]

    第二次却有 3 个
    [<Job (id=1536109843.6 name=cron_test)>, <Job (id=1536065600.84 name=cron_test)>, <Job (id=1536065592.63 name=cron_test)>]
    fanne
        7
    fanne  
    OP
       Sep 5, 2018
    @Allianzcortex #5 可以了,我逻辑错了,把所有的初始化放在了 cron_task 函数外部
    Allianzcortex
        8
    Allianzcortex  
       Sep 5, 2018 via iPhone
    @fanne ? cron_task 里 task_idss = str(time.time()),也就是每一个任务的 id 是以发起任务的时间作为标志,所以感觉应该不会重复啊,什么叫做把初始化放在函数外部......
    fanne
        9
    fanne  
    OP
       Sep 5, 2018
    @Allianzcortex #8 scheduler = BackgroundScheduler(executors=executors)

    这个内容
    About     Help     Advertise     Blog     API     FAQ     Solana     989 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 22:49 PVG 06:49 LAX 15:49 JFK 18:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86