PKHDDcelery-2.0-archived/links.html Interesting Links — Celery 2.0.3 (stable) documentation

Table Of Contents

Previous topic

Change history

This Page

PKHDD"celery-2.0-archived/searchindex.jsSearch.setIndex({envversion:42,terms:{create_exception_cl:40,all:[94,44,25],yellow:25,four:[44,25],"54086c5e":0,prefix:[44,49,68],sleep:[95,74,44,49,25],ronach:25,"6pm":66,oldest:32,locat:[25,57,3,21,89,59],max_retri:[95,3,25],typeerror:25,time_start:25,jasonmbak:50,sorri:25,umask:25,b913:25,swap:25,under:[59,23,25],cest:25,everi:[1,97,25,18,0,66,52,27,95,64,73],set_mp_process_titl:71,reload_task_result:25,affect:[23,25],execute_using_pool:74,celery_result_exchange_typ:44,mark_as_read:25,cmd:68,rabbitmq:25,cwd:25,rabbitmqctl:[18,21],"9pm":66,create_us:3,max_cached_result:49,direct:[34,97,25,18,27,44],maxtasksperchild:[23,25],second:[97,25,1,65,3,32,95,66,44,49,23],calculate_kei:62,even:[66,1,27,25,18,0,48,3,21,64,44,49,23],supervis:[64,25],hide:0,eventlet:25,worsen:25,neg:[65,23],introspect:95,pingtask:[25,5],allowscriptaccess:50,tppm:50,workerlosterror:35,celery_cache_backend:[44,49,25],net:[1,21,50],ever:[3,25],metadata:[0,25],behavior:[33,18,49,44,25],celerymon_log_fil:[44,49],henrik:25,here:[64,25,18,0,3,27,66,44,23],met:[74,25],path:[34,25,57,48,21,95,44],interpret:3,get_result:25,task_id:[44,25],prognam:71,anymor:[18,1,25],everyon:18,precis:[67,25],datetim:[97,25,1,65,66,27,44],mysqld:18,tweet:3,providing_arg:67,timedelta_second:65,propag:[67,9,25],celerybeat_schedule_filenam:[44,49],celerybeat:25,autoregist:[1,25],total:[44,49,25],unit:[3,64,1,25],highli:[59,18],fun_takes_kwarg:95,describ:[44,18,3,0,32],would:[18,3,0,27,25],call:[34,1,27,25,97,18,0,94,3,52,21,95,22,67,64,73,19,54,62],comcast:21,typo:25,recommend:[3,64,1,0,97],mxcl:21,type:[64,97,25,78,18,50,5,66,67,44,49],until:[34,1,25,18,0,65,27,95,64,74,44],messages_for_url:27,relat:[50,44,27,25],warn:[1,49,44,25],aiwoh:25,recev:25,warm:25,relai:80,wari:3,hold:[34,18,67,25],must:[34,97,25,18,0,95,67,44],ert:21,celeryd_daemon_log_format:25,join:[59,52,27,25],disable_error_email:[3,25],err:3,restor:40,setup:[64,18,25],work:[44,48,25],wors:[3,23,25],introduc:[3,1,25],track_start:[49,25],root:64,overrid:[97,18,3,0,25],timelimitexceed:[35,25],give:[34,35,97,25,18,3,21,95,44,49,23],autodetect:[38,25],caution:25,want:[34,1,21,25,18,0,66,27,64,67,44,49,32,97],"425px":50,keep:[44,25],plist:25,running_nod:21,end:[34,19,25,65,66,21,73],always_eag:49,feed_url:94,quot:68,interval_step:95,classifi:25,how:[44,25],hot:25,sever:[25,64,0,3,52,5,22],process_long_opt:68,answer:[18,3],verifi:[21,89],config:[57,48,25],connect_timeout:97,updat:[45,27,25,18,3,32],f100aa80273a:25,timedelta:[97,25,1,65,66,27,44],initial_valu:32,after:[34,1,62,25,18,0,65,48,94,64,54,95,22,44,49,23,97],befor:[1,97,25,18,0,3,54,32,89,95,22,73,44,49,23],router:[4,25],parallel:[64,18,3,74,34],averag:25,kozera:25,attempt:[67,3],event_queu:49,classmethod:[40,62,45],celery_db_reuse_max:25,foord:3,alias:[95,25],maintain:[18,25],environ:25,incorpor:25,enter:74,mechan:[97,62,25],changlog:25,order:[45,97,25,64,0,3,52],indeped:18,origin:[1,62,25,40,65,32],broker_password:[34,44,25],over:[40,97,25,57,66,52,21,95,74,23],becaus:[34,62,25,18,3,21,23],fifo:45,"86a8":25,appar:25,nonconform:25,vari:23,digest:94,uuid:[25,64,0,5,95,73],update_statu:3,"__class__":40,better:[18,3,23,25],imp:57,offic:66,drawback:3,persist:[49,34,44,0,25],mydb:[44,89],easier:25,"42a0":25,them:[1,97,25,18,0,65,48,3,52,27,59,23],cpickl:25,qualiti:25,safe:25,as_dict:32,"break":25,promis:95,verify_exist:[3,27],choic:[97,25],get_object_or_404:3,changelog:1,overflow:25,unpickl:[40,25],imagecroptask:97,celeryd_soft_task_time_limit:[44,23,25],kwarg1:[97,25],timeout:[44,49,25],each:[1,64,25,18,3,27,95,22,44,23,97],debug:[94,44,4,25],crunchi:25,side:25,mean:[9,25,1,0,3,52,32,66,44,49,23],clickmunch:27,discard_al:[18,25],group:[1,48],urlfield:[3,27],forgot:25,celerymon:25,msgpack:5,unbound:0,network:[59,64,1,23],goe:[62,25],positiveintegerfield:27,crucial:1,content:[33,18,0],reader:27,gen_unique_id:[95,25],alltogeth:25,amqp_connection_max_retri:25,hang:25,situat:25,free:[18,3],standard:[3,1,0,25],md5:94,workaround:25,s3cr3t:44,traceback:[73,64,32,25],filter:[22,3],iso:[25,1,5],prefetch:[44,49,25],loud:1,semaphor:[18,25],rang:[68,32,25],render:[50,19,25],subshel:25,loginerror:3,from_iter:45,wast:3,datastructur:[4,25],alreadi:[1,35,97,25,78,18,0,94,89,64,67,44],wasn:18,installed_app:[89,25],primari:[3,27],hood:23,coverage3:25,rewritten:25,top:[59,50,25],max_length:3,master:44,too:[32,25],amqp_us:25,recent:25,listen:[18,4,44,25],consol:25,namespac:25,tool:[33,34,25,48,4,44],travers:[0,25],task:25,os_mon:21,somewhat:18,technic:3,every_30_second:66,target:[62,25],keyword:[64,25,18,70,5,95,22,67],provid:[34,62,80,25,0,3,5,95,22,97],tree:44,zero:[0,25],on_failur:25,"final":[34,21,25,0,94,3,32,44,49,97],project:[1,48,27,25],matter:25,arriv:[25,97,23,5],database_password:89,minut:[1,25,18,0,94,3,27,66,73,44,49,23],queue_wakeup_aft:25,propog:25,runner:25,add_queu:72,get_or_cr:27,manner:3,increment:[18,32,27,25],seem:44,mytask:[19,25,18,3,44,23],seek:25,dozen:25,strength:21,"0x4293a28":95,recreat:25,my_taskmeta_collect:44,latter:[74,44],stripped_titl:50,snow:21,contact:[50,0,25],celeryd2:25,eagerli:[44,52,25],sig_ign:71,blue:25,copi:[18,3,45,25],though:[67,18,49,25],usernam:[3,49,44,97],store_errors_even_if_ignor:49,object:[94,34,1,62,40,25,18,0,74,50,3,52,27,95,98,67,44,45,97],regular:[57,97,25,78,1,0,3,59],bsd:59,prematur:[35,25],tradit:27,"7am":66,don:[34,1,97,25,59,18,0,27,44,49],click_count:27,doc:[50,18,1,89,25],worker_shutdown:22,doe:[44,48,25],declar:25,wildcard:0,dot:[95,0,97],celery_event_exchange_typ:44,parse_ns_rang:68,whitelist:25,random:21,syntax:[66,18,3,25],identifi:[25,64,3,67,44,49],celeri:[94,44,48,25],absolut:[44,25],"373550e8":18,setup_load:98,explain:27,configur:25,redis_db:44,celery_results_persist:44,theme:25,busi:3,rich:50,"__call__":25,current_domain:3,verbose_nam:[3,27],stop:25,regular_task:0,popitem:45,report:[59,18,44,25],pri0:25,celerybin:25,lock_id:94,bar:[64,62,25],httpdispatchtask:[3,19,23],emb:[50,1,25],dump_act:25,baz:25,method:[34,19,62,25,0,3,27,95,67,44,49,54,97],twice:25,"44b8":25,staticst:25,ban:97,ignore_sign:71,celery_task_seri:[3,44],respond:[67,25],human:18,fair:25,increment_bi:27,datatyp:97,mandatori:[18,3,97,25],multidb:25,respons:[67,3,19,25],fail:[34,18,25,64,70,94,73],padlist:95,best:[0,70,25],subject:16,awar:[44,97,23,25],hopefulli:[95,18],sigint:25,discoveri:25,languag:[64,18,1,19,97],simplest:[34,0],awai:[3,25],irc:25,approach:[3,0,62],dissapear:25,celerybeat_pid_fil:25,attribut:[27,25,78,0,3,32,95,67,97,62],never:[64,25,18,94,21,44,23],extend:[4,25],weak:[67,62],extens:[23,89],lazi:25,snappi:18,functool:[4,25],article_id:3,accident:25,expos:19,hashabl:67,howev:[34,25,18,0,3,44],against:23,com:[1,27,80,25,59,18,0,50,3,21,89,64,44,19,23],compromis:25,asctim:[44,25],kwd:[22,45],taskregistri:[78,25],on_success:25,height:50,wider:25,celeryd_task_time_limit:[44,23,25],guid:[33,34,64,25,18,50,21],assum:[62,25],redis_timeout:25,recur:64,eager:25,celeryd_logfil:25,fri:[66,25],three:[97,66,0,25],been:[34,9,64,25,57,78,18,35,32,5,95,22,73,44,49],trigger:[22,66,25],interest:[33,25],basic:[44,25],pageinfo:3,comment_check:3,lifo:45,xxx:25,worker:25,argument:[1,62,40,25,18,0,48,95,94,19,5,70,22,67,44,45,97],ae68:25,child:[70,25],"catch":[95,67,44,23,25],costanza:[95,44],default_backend:25,import_task_modul:54,ident:62,expand_destin:72,servic:[66,18,4,48,25],properti:[18,0,25],celery_create_missing_queu:[0,25],amqpbackend:25,calcul:[65,52,62,27],publicli:25,"3px":50,celeryd:25,need:[34,1,27,25,56,18,32,0,48,3,21,89,66,67,44,19,23,97],kwarg:[35,72,25,78,18,0,94,3,52,27,5,95,22,38,73,23,97],conf:[33,25],coni:80,"3cf815672b0e":25,dumper:25,conn:25,unbantask:97,incorrectli:25,perform:[34,64,25,18,0,70,22],suggest:59,make:[1,97,40,25,57,18,0,48,3,52,72,95,66,74,44,23],celeryd_opt:[48,25],default_rate_limit:49,complex:[18,3,52,0,25],split:[95,25],cassandra:[4,25],complet:[34,52,25],evid:[23,25],rail:70,hand:27,delight:18,fairli:44,rais:[34,1,35,25,78,18,3,52,32,95,67,44,49,23,97],celery_default_queu:[18,0,44],all_stat:9,einfo:25,parse_pag:3,butter:25,kept:62,scenario:[64,18,3,23],opalfe:25,thu:[66,44,25],dmap_async:25,inherit:[34,25],mail_host_us:[44,49],client:[25,18,0,3,54,32,89,22,23],thi:[1,2,48,3,32,5,59,34,35,62,64,66,89,38,18,94,52,21,95,22,73,44,67,23,19,97,25,0,74,50,27,49,54],everyth:[64,34,18,0],left:25,protocol:[33,64,4],just:[44,25],sigusr1:25,laptop:64,bandwidth:3,list_queu:18,celery_default_exchang:[25,56,18,0,89,44],yet:[34,1,25,18,3,52],"04t10":25,previous:25,easi:[19,25,0,3,50,52,27,89],consumer_tag:25,had:[50,3,25],celery_cache_backend_opt:44,is_valid:3,els:[66,3,0,27],save:[64,3,27,21,25],opt:[48,68],applic:[19,97,25,0,50,3,27,5,23],ends_in:65,supervisord:25,mayb:[97,0,27,25],preserv:25,broker_vhost:[34,44,89,25],celeryq:[18,27,25],"3pm":66,background:[48,25],database_nam:[89,25],httprespons:[19,25],daemon:[44,25],interval_start:95,specif:25,arbitrari:[18,25],negat:25,unittest2:25,commit_manu:3,channel:[59,0,27,25],process_short_opt:68,tcp_nodelai:44,specifii:25,result_backend:49,celeryd_multi:33,underli:[62,25],d5owmr:25,www:[50,18,25],right:[34,25,18,94,3,27],old:[3,25],manual:[97,18,1,48,25],interv:25,somehow:35,dead:23,intern:[33,25],thinkingcactu:50,bore:1,successfulli:[34,9,25,0,52,73,23],myperiodictask:18,txt:25,djangoproject:89,admnistr:0,subclass:[19,27,25,1,3,52,32,67],cnf:18,multipli:[19,44,25],tracker:86,cnn:0,condit:[3,1,25],foo:[95,44,62,25],localhost:[34,25,18,0,21,89,44,49,16],core:[62,25,94,3,44,49],plu:25,sensibl:[0,25],celery_default_rate_limit:[3,44],oracl:[44,25],celery_result_exchang:44,promot:1,repositori:[64,21,25],post:[3,19,0,50],"0px":50,"super":40,djangofe:94,unsaf:[32,25],obj:95,task_retri:3,chronolog:32,slightli:74,commit:[18,3],boundmethodweakref:62,produc:[62,25],tombston:[64,3,49,44],mycustom:25,celery_event_routing_kei:44,on_task_init:54,"float":[3,25],encod:[19,52,0,25],bound:[62,0,25],down:25,slurp:25,contrib:[33,48,25],deletion_method:62,accordingli:23,git:[64,21],wai:[27,25,18,0,3,21,74,97,23,62],support:[44,25],happi:[1,50],avail:[44,25],width:50,b816:25,wordpress:3,overhead:3,tediou:1,fork:25,map_async:[3,23,25],form:[3,19],altogeth:3,ace01fa4f91d:18,"49661b9a":23,sqlalchemi:[64,44,4,25],controldispatch:23,renam:25,"true":[34,45,32,25,18,94,65,50,3,52,27,95,67,44,49,23],freenod:[59,1,80,27],reset:[71,23,25],attr:95,celeryctl:[44,49],maximum:[25,64,3,32,95,44,49,23],tell:[1,48],celery_broker_connection_retri:[44,25],more:[94,34,1,97,66,25,18,0,50,3,21,64,67,44,73,23],emit:25,enable_ev:[23,25],featur:25,request:[19,97,25,18,3,27,38,23],"abstract":[3,1,25],diagnost:3,celeryconf:57,exist:[1,18,25,64,0,94,3,89,67],chain_from_iter:45,check:[34,25,18,0,3,44,49],spend:44,password:[34,18,3,44,49,16],catchabl:18,celery_amqp_routing_kei:25,tip:[1,70,25],refactor:25,tim:50,"14px":50,role:27,celeryd_eta_schedul:[44,49,25],test:[34,18,0,32,25],pymongo:44,roll:[3,25],node:[18,23,21],felt:25,urllib2:25,exceptioninfo:[32,25],consid:[25,1,0,32,73,49],sql:[64,18,27,89],receiv:[44,25],longer:[1,25],clickmanag:27,increment_file_count:18,ignor:[71,64,25],redis_port:44,push:64,daili:66,feedimport:94,result_exchang:49,broker_connection_timeout:49,chain:45,skip:[40,25],consum:[1,27,25,18,32,44,97],focus:[64,1],"1a7980ea":23,celery_ignore_result:[18,3,44,25],celery_taskmeta:[44,25],primer:70,decid:[3,1,0,25],middl:[18,27,25],depend:25,advantag:[94,62],pop_valu:32,flash:50,readabl:97,dump_schedul:25,countdown:[64,18,25],certainli:25,retri:[44,25],celery_concurr:34,myperiod:18,sourc:[21,25],string:[25,65,3,5,95,67,44,49,23],"3am":66,multitool:68,exact:[64,0,97],cool:25,administr:[64,80],level:[64,25,18,48,3,44,49,23],did:[52,25],die:25,iter:[45,25,40,52,32,95],execute_remot:[3,23],item:[45,27,25,57,0,32,95],lock_expir:94,div:50,round:[18,65,25],dir:25,prevent:18,pickleabl:[40,25],sign:3,"06de8510aca2":25,add_file_metadata_to_db:18,worker_initi:54,relocat:21,port:[19,25,18,89,44,49,16],explictli:25,establish_connect:[27,25],lazili:[45,25],repli:[44,23,25],get_logg:[18,3,94],taskrequest:[38,74,25],current:[44,48,25],celeryinit:25,eventdispatch:25,celery_eager_propagates_except:[44,25],gener:[48,25],celery_broker_connection_max_retri:[44,25],slow:[94,23],modif:25,task_nam:[3,44,23,25],address:[44,3,49,21],freq_min:25,along:25,wait:[44,25],box:25,mysit:[27,25],queue:[44,25],behav:25,pub_dat:3,camqpadm:25,petersson:[18,50],taskset:[56,22,52,25],extra:[48,25],modul:[33,34,64,25,56,18,48,4,44],prefer:25,visibl:25,instal:[18,44,25],celery_http_gatewai:19,send_celery_task_error_email:25,sake:97,long_descript:25,baseexcept:40,univers:[64,3],visit:25,database_us:89,live:[3,62,25],handler:[22,71,44,73,25],carrot_backend:[18,89,25],softtimelimitexceed:[35,44,23,25],scope:62,task_seri:49,plug:[89,0,80,25],dbab76798756:0,djangoapp:25,finit:32,visual:73,tandem:27,accept:[25,18,3,52,22,67,23],postgresql:[44,25],easiest:[3,21],content_typ:5,task_sent_handl:22,install_signal_handl:71,freq_max:25,tokyo:25,prepar:[72,25],uniqu:[64,18,0,3,27,5,95,67,23],sleeptask:[23,25],descriptor:[62,25],argspec:95,can:[94,44,48,25],celery_always_eag:[44,25],create_miss:72,nearest:[40,65,25],f2cc8efc:19,mongo:44,stream:50,curri:25,load_set:[98,25],levelnam:[44,25],topic:[97,18,49,25],"7pm":66,abort:[33,25],libmemcach:25,pong:[23,25],exc_arg:40,alwai:[25,18,3,50,44,49],sundai:[66,65,25],chroot:25,multipl:[62,25,1,66,44,49,23],charset:16,ping:[3,25],modulenam:95,write:[50,1,0,3,27,38],purg:[18,0,25],pure:25,nyc:95,mark_as_failur:25,celery_result_engine_opt:[44,25],map:[68,25,0,3,72,32,89,95,67,44,49],product:[34,1,25,18,0,64],get_publish:97,max:[35,25,18,70,3,32,95],clone:[64,21],myworker1:25,usabl:1,ab8bc59:25,mac:[50,48,21,25],pending_xref:25,mai:[64,25,18,0,3,67,44,49,23],log_level:49,data:[44,4,25],grow:25,ensure_process_aware_logg:83,is_spam:3,c053480b:25,practic:[70,0,27,25],explicit:[44,0],predic:95,inform:[33,34,25,18,21,44],"switch":25,preced:[57,25],combin:[64,18,1,25],celery_store_errors_even_if_ignor:[44,25],talk:50,taskprocessqueu:25,tty:25,"__cmp__":95,celeryproject:[64,1,25],default_routing_kei:49,equip:80,cold:25,still:[44,25],dynam:40,entiti:[97,3,89,0,25],snippet:25,disconnect:[67,73,25],monitor:25,celeryd_empty_msg_emit_everi:25,amqplib:97,norwai:0,celery_track_start:[44,25],window:25,safe_ref:[67,62],imoport:25,mail:25,main:[38,74,68,32,25],abspath:25,email_host_password:44,non:[49,95,34,0,25],within:[0,23,25],myvhost:[34,18,21],reset_broker_connect:25,pogorzelski:50,initi:[25,0,3,38,44,23],aquire_lock:94,now:[34,1,27,25,18,0,65,50,3,52,21,95,64,32,97],discuss:59,introduct:86,term:[18,0,23,25],workload:64,name:[94,44,48,25],didn:[34,23,25],revert:[3,1,25],separ:[1,97,25,18,0,95],miracle2k:25,attributeerror:95,errback:95,kral:18,domain:3,setup_set:57,replac:[74,25,56,64,3,27,44,23],arg2:[19,97,25],arg3:19,continu:[1,27,21],contributor:25,backport:25,happen:[54,34,40,25,18,94,3,16,64,59,23],broker_port:[34,18,89,44,25],shown:[25,5],accomplish:[94,18,23,25],reload_taskset_result:25,profil:[21,25],fetch_pag:3,modelform:3,earlier:[34,27],urlpattern:27,broker_connection_max_retri:49,million:[64,1,27],argv:68,ajax:64,orm:25,mime:[25,5],theori:18,org:[1,25,18,50,27,95,64,44],card:97,care:[3,44],reusabl:62,setdefault:45,clean_up_in_a_hurri:23,synchron:[64,1,32],celeryd_daemon_log_level:25,turn:[3,18,1,25],place:97,errno:25,charfield:3,think:[27,25],first:[44,21,25],oper:[35,25,1,0,52,32,95,64],directli:[74,18,0,25],template_nam:3,onc:[44,25],celery_amqp_consumer_routing_kei:[56,25],broadcast_queu:49,yourself:[3,97],celery_amqp_exchang:[56,25],djangounicodedecodeerror:25,submit:50,deleteexpiredtaskmetatask:[44,25],open:[64,1,25],tomorrow:97,size:[95,50,25],given:[95,3],celery_event_exchang:44,silent:[3,1],convent:34,mattrgett:95,teardown:25,citi:95,necessarili:[18,0,23,97],mail_port:[44,49],conveni:[97,25,3,66,52,23],routing_kei:[97,27,25],feed_task:0,pytyr:44,namespacedoptionpars:68,especi:[18,21],"32666e9b":23,comment_id:3,specifi:[44,25],broadcast:25,github:[1,21,25,18,44,64,59],hup:[23,25],mostli:[74,44,25],pendingdeprecationwarn:1,than:[1,18,62,25,64,73],every_monday_morn:[66,18,25],instanc:[1,34,18,62,25,78,40,66,52,95,67,74,23],viewfil:50,posix:18,balanc:44,were:52,posit:[95,22,65,32,25],pre:25,sai:[0,27,68],san:50,celery_result_dburi:[44,25],ani:[64,1,62,66,25,59,18,0,49,3,52,27,95,22,67,44,19,23,97],dash:21,"5ae0c80afbbf":23,celeryd_log_color:25,deliv:[64,3],sat:25,engin:[44,89,25],techniqu:2,recompil:18,email_address:[3,49,44],commit_on_success:3,forc:[18,48,23,25],ideal:18,from_except:40,take:[45,62,25,18,94,3,52,27,95,49,23,97],noth:[95,71,1,27],even_time_distribut:25,infinit:[95,23,25],sure:[1,97,40,25,57,18,3,95,66,74,44,23],bitkick:50,reloc:80,trace:[4,25],normal:[34,62,25,27,67,44],buffer:25,compress:[97,0,25],celery_seri:97,pair:[67,45,62],celeryd_medi:[44,49,25],homepag:[3,1,25],misconfigur:18,synonym:25,correctli:25,adopt:[27,25],after_return:25,runtim:25,djangotwitt:25,gracefulli:23,send_task:[97,18,0,25],recipi:44,heap:74,show:[19,25,18,48,0,3],"9ee8031d219d":23,atom:[94,25],concurr:25,help:[86,34,48,25],slot:32,taskmeta:25,onli:[44,2,25],explicitli:[18,1,25],transact:[18,25],activ:[18,1,23,25],written:[64,97,25,18,3,50,27],either:[64,62,25,18,3,74,32,95,67,44,97],former:25,dict:[72,25,0,3,52,32,95,44],sighup:25,copy_file_to_destin:18,get:[44,48,25],hungryblank:50,repr:25,repo:21,cannot:[3,97],requir:[19,62,25,18,0,32,5,38,44,49],reveal:48,yield:[95,49,32,25],celery_load:[56,25],mediat:[38,44,25],through:[67,0,25],celery_amqp_exchange_typ:[56,25],where:[62,25,1,48,65,3,95,23,97],wiki:86,kernel:[18,21],"__module__":40,burst:[64,1,25],unfil:32,celeryd_listen:[44,49,25],process_cleanup:25,fanout:[44,0,49],deadlin:[23,25],subclass_except:40,rate_limit_queue_typ:25,detect:[1,98,25],rupi:50,enough:3,pyredi:4,between:[18,97,25,64,3,95,66,44,49],periodicworkcontrol:25,across:0,parent:40,broker_host:[34,18,89,44,25],mypars:3,come:[59,21,25,0,3,27,44],tue:25,email_host_us:44,similar:19,quiet:48,get_pickled_except:40,tutori:[33,18,64,25],mani:[34,1,97,25,18,0,65,3,64,44,23],celery_broadcast_queu:44,evict:[44,49],among:44,color:25,overview:86,unittest:25,"0b74f3844c4d":23,pop:[78,45,0,25],dispatch:4,cancel:25,supervisor:25,poll:[64,18,0,25],consume_queu:32,processclickstask:27,mark:[18,25],valueerror:25,thousand:25,resolut:65,tiger:[44,25],doesn:25,celery_max_cached_result:[44,25],"__eq__":25,mikedizon:25,those:[1,48,23,25],"case":[34,97,25,18,94,62],exchange_typ:[0,27,25],dynim:25,default_exchang:49,md5sum:94,alter:25,trick:23,invok:52,mail_host:[44,49],invoc:[64,18,3,52,5],celerymon_log_level:[44,49],djceleri:25,celeryd_log_format:[44,49,25],add_com:3,e470:25,ctrl:25,worri:[1,25],destin:[18,27,21,25],cluster:[33,73,64],myapp:[44,18,0,23,25],exc_cls_nam:40,ascii:16,"__init__":25,subscrib:64,develop:25,thei:[64,25,18,0,27,22],helmer:25,media:[0,25],same:[94,44,25],trip:25,binari:44,html:[1,25,18,50,3,27,44],pad:[95,50],timestamp:[73,25],pai:3,eventu:[18,25],week:[66,25],celery_broker_connection_timeout:[44,25],finish:[44,25],screenshot:25,driver:44,someon:[0,25],jirka:25,render_to_respons:3,capabl:[18,3],celeryd_pidfil:25,improv:[52,27,25],extern:50,sigterm:25,sendmailwarn:16,parse_docu:3,appropri:34,framework:[94,19,25],without:[62,25,56,64,48,3,27,23],titl:[3,50],maybe_promis:95,model:[94,18,4,25],celery_acks_l:[18,44,25],store_pag:3,execut:25,mypassword:[34,21,25],conform:25,excel:[52,0,27,25],celeryd_max_tasks_per_child:[44,23,25],mainprocess:19,rest:[56,18,25],kill:[44,18,23,21,25],abil:[64,23,25],miscellan:4,hint:48,except:[33,34,25,18,66,73,44],littl:66,blog:[50,0],every_hour:25,exercis:27,task_result_expir:49,event_exchang:49,earli:25,task_sent:[22,25],read:[34,1,25,57,18,0,48,3,21,89,54],period:25,traffic:[64,1,27],mon:[18,65,25],default_delivery_mod:49,world:18,celery_task_meta:25,reap:[23,25],mod:71,cleanli:25,process_initi:38,howsthedotcom:18,integ:[3,97],server:25,benefit:3,nose:25,django_settings_modul:[48,25],output:[3,48,19,25],manag:[33,18,48,21,25],unrecover:18,"40cd":19,respect:[62,3,0,27,25],optmerg:68,celery_default_exchange_typ:[44,0,25],aa22:23,notconfigur:57,definit:[56,25],achiev:18,moon:19,exit:[35,25],notabl:18,knife:25,refer:[33,34,64,25,18,4],httpresponseredirect:[3,27],process:[44,25],"60d9":25,kwarg2:[97,25],power:[3,97],asap:5,celerybeat_opt:48,inspect:[95,70,25],broker:[44,25],broken:25,"__name__":40,"throw":[44,25],send_twitter_statu:3,src:50,central:[64,1,23,25],ack:[44,18,0,27,25],celerycrq:25,"419e46eb":25,luci:25,degre:[18,3,25],wold:3,act:25,tsigularov:18,eager_propagates_except:49,baseload:54,launchd:25,get_cls_by_nam:95,ts_re:25,do_work:[44,23],robertpogorzelski:50,surviv:[64,0,27,25],strip:25,your:[34,1,64,25,18,48,21,22,44],fast:[44,62,25],log:25,celery_send_task_error_email:[3,49,44,25],get_loader_cl:98,overwrit:18,start:[44,25],interfac:[18,27,23,25],low:97,lot:[1,97,25,18,0,3,23],lambda:94,hard:[62,44,0,23,25],tupl:[62,25,32,95,67,44,49],regard:[52,27,25],jun:50,set_permiss:[21,25],updatestatusestask:25,sidnam:[44,25],celery_broadcast_exchang:44,faster:[49,25],iterkei:45,"4e73":25,"0b2":25,"default":25,picki:27,bucket:[64,4],day_of_week:[66,18,25],comment_author:3,acks_lat:25,autocomplet:0,embed:25,deadlock:25,comment_author_email:3,connect:25,redis_password:[44,25],uid:25,creat:[44,2,25],multipleobjectsreturn:25,taskpool:[95,44,25],"47ed":25,file:25,on_retri:25,create_articl:3,fill:32,incorrect:25,again:[95,34,18,0,25],idangazit:50,googl:[1,27,21],celeryd_group:48,prepend:[18,52],field:[44,25],valid:78,collis:25,you:[1,48,32,59,34,64,66,89,67,18,40,94,21,22,44,19,97,25,0,50,27,49],architectur:64,poor:97,behvavior:25,createusertask:3,registri:[33,44,4,25],sequenc:[44,62],time:[44,2,48,25],docstr:25,celeryd_us:48,track:[34,3,49],bo9rsw:18,pool:[18,25,64,4,73,44],lookup_rout:72,cpo:21,directori:[59,57,48,21,25],celery_backend:25,schedulecontrol:[44,25],celeryd_eta_scheduler_precis:25,potenti:[1,23,25],"__ss_2089054":50,cpu:[44,49,23,25],represent:[33,25],myrout:0,consider:23,osx:21,alreadyregist:35,improperli:35,concept:[1,0,89],deprecationwarn:[1,25],tahoma:50,follow:[19,27,25,56,18,0,48,3,52,21,5,64,44,54,97],disk:[27,21,25],children:23,cet:25,articl:[18,3,50],mktime:25,init:25,program:[18,48,25],"9e39363125a4":25,celerydb:[44,25],thursdai:66,global:[1,18,97,98,25,64,3,44],testkei:0,"1pm":66,fals:[34,45,68,25,0,65,3,72,54,27,95,67,44,49,16],faq:[1,18,25,57,0,44],offlin:[73,25],util:[33,94,4,21,25],worst:[18,3],failur:[34,9,19,25],taskbucket:74,receriverkei:67,celeryd3:25,celeryd1:25,list:[34,25,18,48,21,44],celeryd4:25,celeryd5:25,emul:[44,25],adjust:23,"809c":23,stderr:[44,49,25],small:[95,3],"94fwdd":25,ten:66,harder:25,periodictask:[3,18,1,27,25],sync:[89,25],rate:[18,25,64,65,4,44],design:[3,0,25],pass:[1,62,25,64,3,52,95,67,74,97],further:27,excit:25,what:25,sub:64,clock:[66,4,25],sun:[66,65,25],section:[50,25],abl:[1,97,25,18,3,52,64,67,23],overload:[95,64],delet:[64,27,25,18,94,32,44],abbrevi:[3,68],version:25,"public":[1,25],full:[34,64,25,1,48,3,32,95,59,23],caqmadm:33,behaviour:[44,25],shouldn:[18,3,62],ineffici:3,modifi:[74,97,25],valu:[34,45,62,66,25,64,0,65,50,3,52,32,89,95,22,44,49,23,68],celerybeat_max_loop_interv:[44,49,25],search:33,sender:[22,67,44,16,25],margin:50,memcach:[94,44,4,25],boundnondescriptormethodweakref:62,amount:[3,25],nosetest:25,pick:34,action:22,propagate_st:9,djangosnippet:25,celery_result_backend:[34,44,25],via:[64,1,19,44,25],requestcontext:3,celeryd_pid_fil:[48,25],apply_async:[34,97,25,56,18,0,52,44],task_name_or_cl:52,filenam:[97,18,49,44,25],href:50,famili:50,decrement:32,establish:[97,44,49,25],taskdaemon:25,select:[38,64,97],fridai:66,clockservic:38,stdout:25,regist:[35,97,25,57,78,1,3,27,67,44,49],two:[34,64,27,25,18,0,94,3,32,95,74,97,62],coverag:25,celerybeat_log_fil:[44,49],morn:[18,25],taken:[97,57,0,25],minor:[18,1],oebfar:80,desir:25,tester:25,hundr:3,sharedcount:32,flag:97,"17t12":5,broke:25,particular:[66,67,18,71],known:[18,25],none:[34,40,62,25,71,18,0,65,45,72,3,52,32,95,22,67,44,49,16,68],thread:[4,25],hour:[1,97,25,18,65,3,66],remain:[65,25],registered_task:[23,25],amqp_:25,userguid:[18,25],delivery_tag:0,def:[34,19,62,66,25,18,0,94,3,52,27,95,22,44,64,23,97],mail_admin:16,explod:18,prompt:0,challeng:3,registr:25,share:[3,1,25],templat:3,worker_process_init:[22,25],minimum:25,magenta:25,pickledobject:25,cours:[18,3,97,23],secur:25,rather:[0,21],anoth:94,divis:66,"gr\u00e9goir":25,simpl:[18,21,25],akismet_kei:3,isn:[18,3,89,50],resourc:[86,18],camqadm:[33,25],referenc:[67,62],nose_verbos:25,pythonpath:25,sneak:25,reflect:25,unlink:25,associ:18,stabil:25,"short":[62,25,0,3,95,68],confus:0,celery_amqp_connection_max_retri:25,hashcompat:94,caus:[3,23,25],callback:[33,64,25,18,95,73],store_page_info:3,egg:25,celery_amqp_connection_retri:25,tt_port:[44,25],improperlyconfigur:[3,35,25],soon:[18,49,32,25],commonli:1,scott:[44,25],reconnect:25,brokerconnect:25,paramet:[62,78,40,65,32,95,67],style:50,arial:50,celeryresult:[44,49,25],itervalu:45,psycopg2:25,late:[44,25],pend:[9,1,44,25],auxww:[18,23],might:[27,25,18,0,3,32],"413e":23,tri:[18,25],good:[27,25,18,3,32,44,97],"return":[3,32,34,9,62,64,65,67,18,40,94,19,52,95,22,44,23,45,97,98,25,78,0,27],get_interval_from_databas:18,"422f":25,cpikl:25,timbul:50,subtask:[33,18,25],"6cf8":25,celery_disable_rate_limit:[3,44,23],detach:[21,25],multi_arg:68,troubleshoot:25,authent:[18,44,25],mysteri:25,easili:[64,19,25],token:[64,4],innodb:18,"1am":66,found:[57,25],intervent:18,backtrac:25,compatibl:25,subsystem:3,exhaust:[95,3,44],get_async:19,limitedset:32,timelin:[33,25],idea:[1,97,25],crontab:[86,18,25],realli:[18,3,25],on_worker_init:[57,54],expect:[18,52,25],todo:25,event:25,robert:50,"0x3800870":45,publish:[97,25,0,3,27,44,49],research:3,print:[66,97,25,18,3,22,23],shockwav:50,foreground:[34,23],proxi:25,advanc:25,pub:3,reason:[59,18,19,0,25],base:[56,33,64,4,25],ask:[44,25],earliest:97,basi:1,worker_readi:22,"_all_inst":62,launch:[18,25],delivery_info:[3,0,25],celeryev:[33,44,25],perman:21,circuit:62,heartbeat:[73,4,25],assign:25,mail_host_password:[44,49],set_loglevel:25,feel:18,exchang:[97,25,18,27,89,44,49],misc:97,number:[34,64,32,25,18,0,3,52,27,5,95,44,49,23,97],done:[34,19,97,25,18,3,21],least:[48,27,97],stdlib:21,blank:3,stabl:25,miss:[95,74,50,25],vandelai:44,differ:[97,64,18,0,25],guest:[44,0,25],script:25,interact:25,dispatcherkeyerror:67,reentrant:18,underlin:50,spam_filt:3,compress_video:0,natur:25,illeg:21,gid:25,scheme:[25,64,18,19,5],celeryd_prefetch_multipli:[44,49,25],schema:89,luckili:18,option:[44,25],auto_delet:25,get_absolute_url:3,fromkei:45,part:[34,50,25,94,3,89,22],pars:[68,65,25],consult:[97,25],albeit:27,kind:25,lowpri:97,grep:[18,23],whenev:34,remov:[18,21,25],increment_click:27,stall:25,store:[34,64,62,25,18,0,3,21,44,49],str:25,stale:[18,25],exception_st:9,comput:18,test_task:25,packag:[64,18,44,21,25],expir:[94,44,49,32,25],dedic:[1,97],"null":25,imagin:[18,3],built:[33,44,4,25],equival:25,remote_addr:3,stepsandnumb:50,also:[64,1,27,66,25,18,0,48,3,52,21,95,22,44,23,97],worker_init:22,build:[64,18,25],auto_declar:0,text:[59,50,27,25],distribut:[59,64,18,48,25],settingsdict:57,previou:[66,1,32,25],reach:[95,1],took:[73,1],most:[64,62,25,18,0,27,23],plai:27,thank:[50,18,25],jerzi:25,eceleryd:1,testproj:25,exc:[95,3,35,40],clear:[45,25],cover:25,celery_amqp_connection_timeout:25,image_task:0,clean:[35,25,0,27,44,23],amqp_host:25,eagerresult:[44,25],microsoft:3,awesom:[1,50],wsgi:25,maxretriesexceed:3,"0x40162a8":57,name_change_request:25,nasdaq:97,session:4,broker_us:[34,44,25],is_iter:95,taskmeta_collect:44,fine:[18,40],find:[48,25],coerc:52,pretti:44,process_upload:18,solut:[18,3,25],couldn:25,factor:23,hit:[18,0,25],ericholsch:50,express:[66,25],celerybeat_group:48,performan:18,emailfield:3,cahng:25,poolwork:25,restart:[35,70,25,18,48,0,44],resend:[3,25],positionqueu:32,timelimit:25,emfil:25,feed:[94,89,0,25],common:[18,62,25,64,2,35],slidesharecdn:50,seamlessli:18,wrote:27,set:25,dump:[40,25],startup:25,"802e93e9":25,atexit:25,see:[59,34,1,27,40,25,57,18,32,0,48,3,52,54,21,95,64,44,23],signifi:0,arg:[35,68,40,25,78,18,0,3,52,72,5,95,22,38,45,73,23,97],reserv:25,dateutil:25,inconveni:18,someth:[34,97,25,18,70,94,67],particip:59,weakli:62,reus:25,md5_constructor:94,cleanup_in_a_hurri:44,experi:23,altern:[18,3,45,25],unrout:25,task_statu:25,add_us:21,isol:18,incident:25,succeed:[73,25],solv:[27,25],xuzzi:25,classnam:95,both:[62,18,1,0,25],last:[95,45,0],opal:48,wed:25,alon:50,constructor:25,rotat:97,"8am":66,context:[18,3],forgotten:25,pdf:[3,50],whole:25,load:[98,23,25],simpli:[74,3,0,23,25],point:[48,25],instanti:[95,78,62],schedul:[44,48,25],ubuntu:25,arbitrarili:64,header:[18,0,5],broadcast_exchang:49,carrotlisten:[44,25],param:[19,50],shutdown:25,throughout:25,due:25,empti:[25,18,32,5],implicit:25,user_ip:3,whom:0,secret:89,get_curr:3,email_host:44,strategi:[70,25],taskpublish:25,mind:1,imag:[97,0,21,25],convert:[74,3,65,25],func:25,botland:80,convers:25,look:[34,19,97,25,3,95],get_bound_method_weakref:62,arg1:[19,97,25],celeryd_log_fil:[44,48,49,25],import_fe:[94,0,25],histor:0,pace:97,"while":[64,97,25,18,0,27,95,44,16],smart:25,abov:[18,0,89],error:25,email_port:44,broker_:25,imagerotatetask:97,leland:50,robin:18,loop:[67,23,25],real:[1,25,18,0,3,27,64],celery_amqp_publisher_routing_kei:[56,25],ordereddict:45,max_client:32,readi:[34,9,64,25,1,52,22,74],readm:25,itself:[62,25,48,0,52,89,23],honza:18,around:[18,3,52],issue4978:95,weakref:[67,62],decor:[33,34,64,25,18,66,44],celeryd_task_log_format:[44,49,25],hexdigest:94,event_exchange_typ:49,mod_wsgi:25,conflict:25,higher:[97,23,25],optim:[1,27],leopard:21,alert:80,moment:[44,25],broadcast_exchange_typ:49,robust:64,stack:25,euro:97,log_result:18,asynchronousmaptask:25,a6e1c5ad:25,unicod:[95,25],discourag:27,older:[32,25],entri:[3,0,25],celery_amqp_consumer_queu:[56,25],amqp_port:25,pickl:[44,25],person:3,expens:3,connnect:25,five:25,dump_reserv:25,self:[62,25,18,0,94,3,27,95],periodic_task:[66,18,1,25],itemgett:95,"2a14":19,shape:1,mysql:[44,25],send_robust:67,init_work:54,cut:23,liu:50,sinist:18,shortcut:[34,19,97,25,3,52],mydatabas:[44,25],armin:25,subsequ:95,bin:[33,18,21],format:[44,4,25],big:[32,25],bit:[18,25],outright:1,lost:[64,25,18,44,49,23],worker1:[23,25],signal:[33,25,18,71,4,38,44],worker2:[23,25],resolv:21,collect:[97,18,44,23,62],subtask_id:25,celerybeat_log_level:[44,49,48],popular:[97,23],send_increment_click:27,celerybeat_logfil:48,encount:25,tmpfile:18,often:3,import_default_modul:54,babii:25,acknowledg:[25,18,0,27,38,44,49],creation:62,some:[94,44,25],back:[67,3,44,21,25],urgent:25,"30a":25,virtualenv:[48,25],mailserv:44,statedb:25,exec:[48,25],per:[1,25,18,70,3,27],auto_add_now:3,mathemat:50,larg:25,"8eac":25,pylibmc:[44,25],djangoceleri:50,machin:[64,3,44,23,97],stompi:18,run:[44,25],"41fa":23,word:[0,97],vitali:25,timeutil:4,sacrif:25,step:25,meantim:3,from:[34,25,18,94,21,44],binding_kei:0,zip:25,syncdb:[89,25],materi:0,memori:[33,18,25],shini:[21,25],delivery_mod:25,page:[33,19,25,18,2,3],maxlen:32,allowfullscreen:50,"442b7124132c":25,unfilledposit:32,exc_info:32,block:[25,18,3,50,44,23],to_i:19,"__repr__":[95,25],helvetica:50,compressvideotask:97,celery_task_error_whitelist:25,ensur:[2,25],announc:[1,25],durabl:25,inclus:25,spam:3,fledg:1,"long":[1,25,18,3,95,44],custom:25,cf6a:25,includ:[62,25,56,64,0,38,44],suit:25,forward:[3,27],properli:[18,3,25],picklefield:25,serif:50,link:33,translat:[3,27],newer:95,delta:65,line:[33,34,21,25],info:[34,25,18,48,4,44],utc:25,consist:[94,74,64,0,25],munin:80,caller:25,issue4607:25,planet:95,firstmethod:95,booleanfield:3,addtask:3,constant:49,curs:[33,25],"4e52":34,flush:25,unpickleableexcept:40,repres:0,incomplet:18,chat:59,guarante:[3,97,27],running_appl:21,baseasyncresult:[18,25],amqp:25,task_is_eag:3,invalid:[62,3,19,25],default_retry_delai:3,deseri:97,update_page_info:3,mongodb:25,delete_expired_task_meta:[3,23],weak_func:62,amqp_serv:25,mro:40,is_du:[18,25],algorithm:[64,1,25],mimetyp:[19,25],evenli:25,taskcontrol:25,"8b24":25,far:[18,3,25],loggerwrapp:25,hello:25,myhttplib:3,code:[1,27,25,18,0,3,21,64],partial:25,queri:[64,27,21,25],get_pickleable_except:40,pydispatch:62,send_ev:49,documen:0,celeryd_chdir:48,send:[44,25],granular:[44,25],lower:[49,25],becam:25,noop:95,getargspec:[95,25],"__str__":95,sent:[34,97,25,18,0,3,27,22,73,44,49],rollback:[3,25],whichev:21,celery_mongodb_backend_set:44,"88d0":25,comment_cont:3,webhook:[33,1,64,70,25],event_seri:49,celerybeat_pidfil:48,oknodo:48,dbname:44,recip:2,magic:[3,25],for_url:27,button:3,michael:[3,0],"try":[40,97,25,18,48,94,3,21,95,44,49,23],race:[3,1,25],django_project_dir:25,pleas:[34,1,27,25,59,18,48,50,3,32,64,44],impli:[0,25],smaller:3,myuser:[34,89,21,25],contructor:45,crop:97,cron:[64,25],video:[97,0,25],earth:95,download:21,click:[33,25],append:[68,18,3,27,44,49,97],compat:[4,25],index:[33,64,4,25],celerystat:25,font:50,f1af57789758:25,anton:18,executewrapp:25,"8d30a464edf":25,access:[34,32,25,18,0,94,3,21,95,23,97],importerror:25,experiment:[18,4,25],garbag:62,whatev:34,celery_rout:[0,25],involv:[18,3],timeouterror:[35,25],run_everi:[66,18,27,25],iteritem:45,got:[22,18,25],bodi:[27,3,0,16],celeryd_pool:[44,49,25],let:[34,97,25,18,0,3,52,27,23],add_vhost:21,myhost:[21,25],becom:[62,25,18,0,52,32],sinc:[19,97,18,3,66,23],great:50,mailinglist:[0,25],weekdai:65,accept_callback:25,later:[64,18,35,27,97],dispatch_uid:67,typic:0,honor:25,chanc:[95,18,35,25],shovel:80,revok:[64,73,18,25],appli:[44,25],app:25,override_backend:54,feed_url_hexdigest:94,api:[33,64,25],redi:25,testqueu:0,encapsul:3,usd:97,feb:50,usa:0,commun:[33,34,64,25,18,21],next:[95,18,0],websit:21,few:[18,3],latenc:23,cosmo:44,on_delet:62,appropi:62,impress:[18,1],about:[34,1,97,25,59,18,0,50,3,21,22,44,23],ugettext_lazi:[3,27],"transient":[44,62],rabbit:[18,0,21,25],actual:[21,18,48,52,27,67],annoy:59,taproot:89,account:[64,1,65],chdir:48,retriev:[64,0,25],alia:[98,25],when:[44,48,25],annoi:1,carrot:[33,44,25,18,74,49],fetch:[34,3,25],aliv:[62,23],sqlite:[44,25],malform:25,tar:64,hostag:18,lock:[94,18,25],sudo:[18,21],high:[64,18,97,23],tag:0,celery_default_delivery_mod:[44,25],tab:0,onlin:[73,25],serial:[64,18,4,44,25],delai:[44,25],uuid4:95,occur:67,memoiz:95,default_queu:49,instead:[1,62,40,25,56,18,0,3,27,95,44],stock:97,overridden:[44,25],watch:18,release_lock:94,differenti:62,reset_connect:[23,25],scutil:21,unready_st:9,anyjson:[19,25],"95b45760":25,loglevel:[34,25,3,95,44,23],bind:[97,18,44,27,25],counter:[33,32,25],correspond:25,setproctitl:[71,1,25],element:95,issu:[59,18,27,25],tasksetresult:[52,25],allow:[3,49,21,25],ignore_result:[18,3,49,44,25],celeryconfig:[34,18,25,57,48,44],retval:[22,34,19],rtype:40,movi:50,move:[74,0,25],turnkeylinux:50,tyrant:25,georg:[95,44],"58fb":25,perfect:27,celery_config_modul:[34,48,25],nonfunct:1,maprout:[72,25],anyon:[64,1,25],therefor:23,bridgen:0,dad:64,crash:25,greater:[34,25],"__getitem__":25,handl:[62,25,0,38,54,97],failwhaleerror:3,dai:[1,25,64,65,66,27],auth:3,billiard:25,front:25,tasktyp:3,unregist:78,multiprocess:[64,18,4,25],edit:3,februari:[82,70,37,13,86,4],mode:[34,48,0,49],playingwithwir:[18,50],kosmo:44,circular:25,subset:67,redeliv:0,bump:[27,25],chunk:95,meta:[3,44,27],"static":50,celery_task_result_expir:[44,25],disable_ev:[23,25],our:[34,97,25,0,52,59],patch:[59,4,25],special:[66,62,25],out:[1,62,25,18,35,3,72,64],variabl:[34,25],reload:[48,21],defend:23,bad:3,signal_nam:71,"39a2":34,rel:[1,65,44,25],dhcp:21,ref:[62,89],ready_st:9,red:25,statist:25,fun:95,shut:25,retrytaskerror:[3,35],insid:[18,1,25],"889143a6":34,"94b7":23,standalon:34,dmap:25,dictionari:[45,62,25,0,32,5,67,44],usual:[25,18,0,3,67,23],releas:[25,82,18,48,13,86,4],myworker2:25,could:[34,19,25,18,0,3,27],put:[32,27,25],membership:32,run_tim:49,datetimefield:3,queuenotfound:35,length:32,outsid:[97,25],broker_connection_retri:49,celeryd_log_level:[44,48,49,25],stuck:23,softwar:59,suffix:[44,68,25],"91d2":23,celery_default_amqp_exchange_typ:56,echo:[44,25],date:[86,64,25,4,5],expand_abbrevi:3,"837b":34,lol:21,drastic:23,facil:44,retry_over_tim:95,prioriti:25,strict:18,unknown:[9,25],licens:86,system:[18,25],messag:25,celery_default_routing_kei:[56,44,0,25],akismet:3,termin:[34,35,25,18,67,23],d80d33efb22d:34,shell:[33,25],viktor:[18,50],gotcha:3,shallow:45,sort:[74,25],create_missing_queu:25,rst:25,shelv:25,textfield:3,exactli:97,haven:[89,25],rss:[94,0],amqp_connection_retri:25,structur:4,charact:0,verify_kei:3,stricter:25,quickban:97,celery_import:[34,25,57,3,44,23],"function":[34,62,25,18,4,95,38,67],kwdict:95,viewer:[33,25],mycorp:3,myproject:48,have:[94,44,25],tabl:[44,25],close:[97,25,18,0,3,27,44,23],idan:50,autodiscov:25,"9am":66,maxretriesexceedederror:35,simplejson:25,rout:25,mid:18,builtin:[33,44,4,25],which:[34,1,27,66,25,97,18,0,65,45,95,3,52,21,64,22,67,44,49,23,62],jail:25,attributedict:32,singl:[34,1,62,25,18,0,45,94,3,52,27,95,64,44,23],server_email:[44,49],unless:[18,44,23],who:[18,25],celery_result_seri:44,every_morn:25,keyerror:[95,25],callabl:62,awk:[18,23],xarg:[18,23],database_:[89,25],why:[48,25],slideshar:50,url:[64,94,18,25],amqp_vhost:25,gather:[52,97,27],upset:25,inde:3,pidfil:[48,25],brew:21,f1c77c94beeb:19,indi:50,fact:64,gazit:50,frmo:3,verbos:[44,48,25],celery_queu:[35,25,56,18,0,3,89,44],anywai:25,redirect:25,"5pm":66,pyweb:50,worker3:23,much:[27,25,18,32,95,23,97],forev:[95,44,49,23,25],should:[44,48,25],jan:25,won:[48,25],local:[44,49,21,25],flexibl:[66,0],insight:80,contribut:[86,25],disable_rate_limit:49,beat:25,midnight:66,pypi:[64,1,44],get_full_cls_nam:95,filter_typ:78,format_except:32,celery_send_ev:44,increas:[95,44,27,25],feed_url_digest:94,tests_requir:25,enabl:[66,1,25,18,0,19,52,89,64,74,44,49],possibl:[1,9,27,25,18,0,94,3,21,67,49],"8e93":23,redis_host:44,stuff:27,blogspot:50,integr:[64,25],contain:[34,1,25,18,2,0,48,3,27,95,38,44],cachet:25,"11am":66,format_opt:68,view:25,b9a0:18,mediatask:0,trixx:80,temporarili:[64,23],kwlist:95,statu:[19,25,64,48,3,21,44],on_process_cleanup:54,pattern:[18,27],task_postrun:[22,25],phpapp01:50,favor:25,state:[33,34,25,18,4,73],progress:[64,25],warren:0,email:25,redis_connect_retri:[44,25],kei:[94,44,25],"2px":50,job:[64,18,4,25],entir:1,celery_event_seri:44,homebrew:21,task_prerun:[22,25],addit:[34,97,25,18,0,48,3,44,23],pythonpap:50,current_load:[98,25],plugin:0,admin:[25,18,0,21,44,49,16],trove:25,equal:[66,45,62],etc:[25,18,48,21,38,44],eta:[74,25,18,5,22,73,44,49],iterqueu:27,repeatlast:95,comment:3,abrubtli:25,notregist:[78,35,25],author:[3,23],ssplayer2:50,read_configur:57,wrap:[40,34,3,52,32],cxc:21,weak_self:62,commentform:3,workcontrol:[38,25],find_nearest_pickleable_except:40,rpm:25,quit:[3,67,1,25],tt_host:[44,25],yaml:[18,97,64,3,5,44,49],set_process_titl:71,compon:25,updatereccomendationstask:97,json:[19,97,25,18,3,52,5,64,44,49],immedi:[97,25,18,3,32,74],testexchang:0,assert:0,mywork:25,togeth:[62,97],bull:50,multi:25,asyncresult:[34,25,18,3,52,44],plain:27,align:[19,50],rate_limit:[3,23,25],defin:[33,34,62,25,64,66,67,49],default_exchange_typ:49,exc_modul:40,wild:97,amqp_password:25,malformedinputerror:25,"85ad":19,almost:3,"__reduce__":25,site:[78,3,27],archiv:50,celeryd_concurr:[44,49,25],welcom:[59,19,25],refetch:25,cross:64,member:32,python:[34,64,25,18,48,4,5,95,44],wakeup:25,"27f4":25,competit:25,workdir:25,http:[33,59,25,56,18,21,64,44],hostnam:[18,44,25],localcach:32,taskrevokederror:[35,25],effect:[3,49,25],handi:34,message_count:0,logfil:[19,25,18,48,3,95,44],php:50,expand:[3,0,72,68],event_routing_kei:49,off:[27,3,0,23,25],well:[1,25,18,0,3,27,64],thought:50,weblog:3,exampl:25,choos:[3,97,21,25],undefin:18,unpickleableexceptionwrapp:40,latest:64,regularli:25,"7a7c44e39344789f11b5346e9cc8340f5fe4846c":25,less:18,kramer:44,mnesia:21,casper:25,import_from_cwd:57,simultan:44,platform:25,web:[64,18,1],"30am":66,priorit:18,add:[34,1,32,25,18,0,94,3,52,21,89,22,64,23,97],reconsid:3,fail_sil:16,logger:[80,25,18,94,3,38,23],match:[18,0,97],jython:62,agnost:1,route_for_task:[0,72,25],"26px":50,database_engin:89,"5am":66,know:[34,64,97,25,18,94,3,52,23],delta_resolut:[65,25],loader:[56,33,44,4,25],insert:[45,27],like:[34,18,25,86,64,44],success:[34,9,25,19,52,44],incred:25,corpor:3,"11pm":66,necessari:0,lose:25,resiz:25,soft:[35,44,23,25],import_modul:57,"11px":50,context_inst:3,bdist_rpm:25,exceed:[95,3,35,44,25],drop:[3,0,25],"12px":50,acquire_lock:94,captur:[64,49,25],twitter:3,reset_sign:71,contin:3,"export":[48,21,25],superclass:3,pidlock:25,proper:25,home:[3,21],is_don:25,librari:[19,25,18,3,89,44],trust:3,buildout:25,lead:25,leak:[23,25],slide:50,"8b19":23,executeremotetask:25,estim:[25,97,23,5],leav:0,something_raising_unpickleable_exc:40,swartz:50,process_click:27,preload:[18,3],reciev:18,encourag:[59,18,25],investig:[64,3,25],wanted_module_item:57,saferef:4,imaginari:94,usag:[68,25,57,48,52,59],celerybeat_us:48,vhost:25,host:[34,64,18,16,21,89,44,23],although:25,slug:3,panel:[23,25],sbin:21,pypars:25,rare:18,pika:25,cpubound:25,"6am":66,column:25,verbose_name_plur:[3,27],commerci:3,discard:25,vejrazka:25,refresh_feed_slic:25,disabl:[18,1,49,44,25],own:[97,27,25],processnam:[44,25],additionl:25,easy_instal:[64,44,25],automat:[34,64,25,78,1,67,44,49],interval_max:95,guard:25,weather:0,swf:50,merg:25,transfer:[3,97],completed_count:52,intellig:97,"9hom6t":25,clicks_for_url:27,"var":[18,48,25],individu:[27,23],deliveri:[97,3,0,27,49],mailer:[16,25],unexpect:94,model_object:3,celery_broadcast_exchange_typ:44,curernt:25,celerymon_pid_fil:25,gain:[3,25],oauth:3,eas:18,highest:[3,97],bc61:18,count:[49,18,0,27,25],made:[64,97,25],noon:66,whether:[67,3,19,0,44],displai:[1,50],"__doc__":25,asynchron:[1,50,18,3,52,64,23],below:[40,0],limit:[64,25,18,48,4,32,44],indefinit:23,otherwis:[74,62],problem:[18,27,16,25],evalu:[95,44,45],"int":[25,3,19,32,5],dure:66,pid:[48,23,25],twist:25,replica:1,implement:[64,62,25,18,0,27,73,97],pip:[1,18,25,64,89,44],probabl:[34,64,25,18,48,27,23],detail:[3,97,1,62,25],virtual:[34,18,21],"4ce8":25,futur:[59,73,18,97,25],rememb:[74,45,25],celery_result:44,xvfz:64,stat:25,repeat:18,mpromis:95,"61a68756":25,"class":25,mondai:[66,18,25],debian:25,stai:48,mitemgett:95,colliss:95,sphinx:25,add_opt:68,reliabl:[18,62,32,25],delay_task:25,rule:0,yadayada:25,sasl:21,cookbook:25},objtypes:{"0":"py:module","1":"py:method","2":"py:data","3":"py:function","4":"py:class","5":"py:attribute","6":"py:exception","7":"py:classmethod"},objnames:{"0":["py","module","Python module"],"1":["py","method","Python method"],"2":["py","data","Python data"],"3":["py","function","Python function"],"4":["py","class","Python class"],"5":["py","attribute","Python attribute"],"6":["py","exception","Python exception"],"7":["py","classmethod","Python class method"]},filenames:["userguide/routing","releases/1.0/announcement","cookbook/index","userguide/tasks","internals/index","internals/protocol","reference/celery.task.http","internals/reference/celery.worker.scheduler","internals/reference/celery.utils.functional","reference/celery.states","internals/reference/celery.worker.control.builtins","internals/reference/celery.log","internals/reference/celery.worker","reference/index","internals/reference/celery.worker.listener","reference/celery.events.state","internals/reference/celery.utils.mail","internals/reference/celery.execute.trace","faq","userguide/remote-tasks","internals/reference/celery.worker.job","getting-started/broker-installation","reference/celery.signals","userguide/workers","reference/celery.execute","changelog","reference/celery.result","tutorials/clickcounter","internals/reference/celery.db.models","reference/celery.task.control","internals/reference/celery.backends","reference/celery.task.base","internals/reference/celery.datastructures","index","getting-started/first-steps-with-celery","reference/celery.exceptions","reference/celery.messaging","tutorials/index","internals/moduleindex","internals/reference/celery.backends.pyredis","internals/reference/celery.serialization","reference/celery.contrib.abortable","reference/celery.bin.celerybeat","internals/reference/celery.worker.buckets","configuration","internals/reference/celery.utils.compat","internals/reference/celery.db.session","reference/celery.events","cookbook/daemonizing","reference/celery.conf","tutorials/external","reference/celery.bin.celeryev","userguide/tasksets","internals/reference/celery.utils.info","reference/celery.loaders.base","reference/celery.task.builtins","internals/deprecation","reference/celery.loaders.default","reference/celery.task.sets","getting-started/resources","internals/reference/celery.concurrency.processes.pool","internals/reference/celery.worker.controllers","internals/reference/celery.utils.dispatch.saferef","reference/celery.bin.celeryd","getting-started/introduction","internals/reference/celery.utils.timeutils","getting-started/periodic-tasks","internals/reference/celery.utils.dispatch.signal","reference/celery.bin.celeryd_multi","internals/reference/celery.concurrency.processes","userguide/index","internals/reference/celery.platform","internals/reference/celery.routes","internals/events","internals/worker","reference/celery.task","internals/reference/celery.utils.dispatch","internals/reference/celery.backends.cache","reference/celery.registry","internals/reference/celery.worker.control","links","internals/reference/celery.backends.database","internals/reference/index","internals/reference/celery.utils.patch","internals/reference/celery.backends.cassandra","internals/reference/celery.backends.tyrant","getting-started/index","internals/reference/celery.worker.state","internals/reference/celery.worker.control.registry","tutorials/otherqueues","internals/reference/celery.backends.base","internals/reference/celery.beat","internals/reference/celery.concurrency.threads","internals/reference/celery.backends.mongodb","cookbook/tasks","internals/reference/celery.utils","internals/reference/celery.worker.heartbeat","userguide/executing","reference/celery.loaders","reference/celery.bin.camqadm","reference/celery.task.schedules","reference/celery.decorators","internals/reference/celery.backends.amqp"],titles:["Routing Tasks","Celery 1.0 has been released!","Cookbook","Tasks","Internals","Task Message Protocol","HTTP Callback Tasks - celery.task.http","Worker Scheduler - celery.worker.scheduler","functools compat - celery.utils.functional","Task States - celery.states","Built-in Remote Control Commands - celery.worker.control.builtins","Logging - celery.log","Multiprocessing Worker - celery.worker","API Reference","Worker Message Listener - celery.worker.listener","In-memory Representation of Cluster State - celery.events.state","Sending E-mail - celery.utils.mail","Tracing Execution - celery.execute.trace","Frequently Asked Questions","HTTP Callback Tasks (Webhooks)","Executable Jobs - celery.worker.job","Broker Installation","Signals - celery.signals","Workers Guide","Executing Tasks - celery.execute","Change history","Task Result - celery.result","Tutorial: Creating a click counter using carrot and celery","SQLAlchemy Models - celery.db.models","Remote Management of Workers - celery.task.control","Backends - celery.backends","Defining Tasks - celery.task.base","Datastructures - celery.datastructures","Celery - Distributed Task Queue","First steps with Celery","Exceptions - celery.exceptions","Messaging - celery.messaging","Tutorials","Module Index","Backend: Redis - celery.backends.pyredis","Serialization Tools - celery.serialization","Contrib: Abortable tasks - celery.contrib.abortable","Celery Periodic Task Server - celery.bin.celerybeat","Token Bucket (rate limiting) - celery.worker.buckets","Configuration and defaults","Python Compatibility - celery.utils.compat","SQLAlchemy Session - celery.db.session","Events - celery.events","Running celeryd as a daemon","Configuration - celery.conf","Tutorials and resources from the community","celeryev: Curses Event Viewer - celery.bin.celeryev","Sets of tasks, Subtasks and Callbacks","Debugging Info - celery.utils.info","Loader Base Classes - celery.loaders.base","Built-in Task Classes - celery.task.builtins","Celery Deprecation Timeline","Default Loader - celery.loaders.default","Task Sets, Subtasks and Callbacks - celery.task.sets","Resources","extended multiprocessing.pool - celery.concurrency.processes.pool","Worker Controller Threads - celery.worker.controllers","Signals: Safe References - celery.utils.dispatch.saferef","Celery Worker Daemon - celery.bin.celeryd","Introduction","Time and Date Utilities - celery.utils.timeutils","Periodic Tasks","Signals: Dispatcher - celery.utils.dispatch.signal","Celeryd Multi Tool - celery.bin.celeryd_multi","Multiprocessing Pool Support - celery.concurrency.processes","User Guide","Platform Specific - celery.platform","Message Routers - celery.routes","List of Worker Events","Internals: The worker","Task Information and Utilities - celery.task","Signal Dispatch - celery.utils.dispatch","Backend: Memcache - celery.backends.cache","Task Registry - celery.registry","Worker Control - celery.worker.control","Interesting Links","Backend: SQLAlchemy Database - celery.backends.database","Internal Module Reference","Compatibility Patches - celery.utils.patch","Backend: Cassandra - celery.backends.cassandra","Backend: Tokyo Tyrant - celery.backends.tyrant","Getting Started","Worker State - celery.worker.state","Remote Control Command Registry - celery.worker.control.registry","Using Celery with Redis/Database as the messaging queue.","Backend: Base - celery.backends.base","Clock Service - celery.beat","Thread Pool Support EXPERIMENTAL - celery.concurrency.threads","Backend: MongoDB - celery.backends.mongodb","Creating Tasks","Utilities - celery.utils","Worker Heartbeats - celery.worker.heartbeat","Executing Tasks","Loaders - celery.loaders","caqmadm: AMQP API Command-line Shell - celery.bin.camqadm","Periodic Task Schedule Behaviors - celery.task.schedules","Task Decorators - celery.decorators","Backend: AMQP - celery.backends.amqp"],objects:{"celery.utils.timeutils":{timedelta_seconds:[65,3,1,""],rate:[65,3,1,""],delta_resolution:[65,3,1,""],weekday:[65,3,1,""],remaining:[65,3,1,""]},"celery.utils.promise":{evaluate:[95,1,1,""]},"celery.exceptions":{NotRegistered:[35,6,1,""],TaskRevokedError:[35,6,1,""],MaxRetriesExceededError:[35,6,1,""],TimeoutError:[35,6,1,""],ImproperlyConfigured:[35,6,1,""],WorkerLostError:[35,6,1,""],SoftTimeLimitExceeded:[35,6,1,""],RetryTaskError:[35,6,1,""],QueueNotFound:[35,6,1,""],AlreadyRegistered:[35,6,1,""],TimeLimitExceeded:[35,6,1,""]},"celery.loaders.base":{BaseLoader:[54,4,1,""]},"celery.utils.dispatch.signal.Signal":{send_robust:[67,1,1,""],disconnect:[67,1,1,""],connect:[67,1,1,""],send:[67,1,1,""],receivers:[67,5,1,""]},"celery.utils.mail":{Message:[16,4,1,""],SendmailWarning:[16,6,1,""],Mailer:[16,4,1,""],mail_admins:[16,3,1,""]},"celery.bin":{celeryd_multi:[68,0,0,"-"]},"celery.utils.mpromise":{evaluate:[95,1,1,""],evaluated:[95,5,1,""]},"celery.loaders.base.BaseLoader":{on_process_cleanup:[54,1,1,""],on_task_init:[54,1,1,""],init_worker:[54,1,1,""],import_task_module:[54,1,1,""],worker_initialized:[54,5,1,""],import_default_modules:[54,1,1,""],on_worker_init:[54,1,1,""],override_backends:[54,5,1,""],conf:[54,5,1,""],configured:[54,5,1,""]},"celery.routes.MapRoute":{route_for_task:[72,1,1,""]},"celery.bin.celeryd_multi.NamespacedOptionParser":{parse:[68,1,1,""],optmerge:[68,1,1,""],add_option:[68,1,1,""],process_long_opt:[68,1,1,""],process_short_opt:[68,1,1,""]},"celery.signals":{task_sent:[22,2,1,""],task_postrun:[22,2,1,""],worker_shutdown:[22,2,1,""],worker_process_init:[22,2,1,""],worker_ready:[22,2,1,""],worker_init:[22,2,1,""],task_prerun:[22,2,1,""]},"celery.utils.dispatch.saferef.BoundMethodWeakref":{"_all_instances":[62,5,1,""],weak_func:[62,5,1,""],deletion_methods:[62,5,1,""],key:[62,5,1,""],weak_self:[62,5,1,""],calculate_key:[62,7,1,""]},celery:{datastructures:[32,0,0,"-"],platform:[71,0,0,"-"],utils:[95,0,0,"-"],loaders:[98,0,0,"-"],states:[9,0,0,"-"],routes:[72,0,0,"-"],registry:[78,0,0,"-"],exceptions:[35,0,0,"-"],serialization:[40,0,0,"-"]},"celery.utils":{kwdict:[95,3,1,""],functional:[8,0,0,"-"],dispatch:[76,0,0,"-"],noop:[95,3,1,""],promise:[95,4,1,""],chunks:[95,3,1,""],timeutils:[65,0,0,"-"],padlist:[95,3,1,""],compat:[45,0,0,"-"],fun_takes_kwargs:[95,3,1,""],is_iterable:[95,3,1,""],mitemgetter:[95,3,1,""],get_full_cls_name:[95,3,1,""],gen_unique_id:[95,3,1,""],mail:[16,0,0,"-"],retry_over_time:[95,3,1,""],mattrgetter:[95,3,1,""],mpromise:[95,4,1,""],instantiate:[95,3,1,""],patch:[83,0,0,"-"],maybe_promise:[95,3,1,""],get_cls_by_name:[95,3,1,""],firstmethod:[95,3,1,""],first:[95,3,1,""],repeatlast:[95,3,1,""]},"celery.utils.dispatch.signal":{Signal:[67,4,1,""]},"celery.serialization.UnpickleableExceptionWrapper":{restore:[40,1,1,""],exc_module:[40,5,1,""],from_exception:[40,7,1,""],exc_args:[40,5,1,""],exc_cls_name:[40,5,1,""]},"celery.datastructures.PositionQueue":{UnfilledPosition:[32,4,1,""],length:[32,5,1,""],full:[32,1,1,""],filled:[32,5,1,""]},"celery.datastructures.SharedCounter":{decrement:[32,1,1,""],increment:[32,1,1,""]},"celery.serialization":{get_pickleable_exception:[40,3,1,""],get_pickled_exception:[40,3,1,""],UnpickleableExceptionWrapper:[40,6,1,""],subclass_exception:[40,3,1,""],create_exception_cls:[40,3,1,""],find_nearest_pickleable_exception:[40,3,1,""]},"celery.datastructures":{SharedCounter:[32,4,1,""],PositionQueue:[32,4,1,""],LimitedSet:[32,4,1,""],ExceptionInfo:[32,4,1,""],consume_queue:[32,3,1,""],AttributeDict:[32,4,1,""],LocalCache:[32,4,1,""]},"celery.routes.Router":{add_queue:[72,1,1,""],route:[72,1,1,""],lookup_route:[72,1,1,""],expand_destination:[72,1,1,""]},"celery.routes":{Router:[72,4,1,""],MapRoute:[72,4,1,""],prepare:[72,3,1,""]},"celery.loaders.default.Loader":{import_from_cwd:[57,1,1,""],on_worker_init:[57,1,1,""],read_configuration:[57,1,1,""],setup_settings:[57,1,1,""]},"celery.loaders":{load_settings:[98,3,1,""],"default":[57,0,0,"-"],current_loader:[98,3,1,""],get_loader_cls:[98,3,1,""],base:[54,0,0,"-"],setup_loader:[98,3,1,""]},"celery.registry.TaskRegistry":{NotRegistered:[78,6,1,""],periodic:[78,1,1,""],unregister:[78,1,1,""],register:[78,1,1,""],pop:[78,1,1,""],filter_types:[78,1,1,""],regular:[78,1,1,""]},"celery.bin.celeryd_multi.MultiTool":{help:[68,1,1,""],get:[68,1,1,""],start:[68,1,1,""],names:[68,1,1,""],usage:[68,1,1,""],expand:[68,1,1,""]},"celery.loaders.default":{wanted_module_item:[57,3,1,""],Loader:[57,4,1,""],NotConfigured:[57,6,1,""],Settings:[57,4,1,""]},"celery.datastructures.ExceptionInfo":{exception:[32,5,1,""],traceback:[32,5,1,""]},"celery.utils.mail.Mailer":{send:[16,1,1,""]},"celery.task":{base:[3,0,0,"-"],http:[19,0,0,"-"]},"celery.utils.compat.OrderedDict":{fromkeys:[45,7,1,""],setdefault:[45,1,1,""],keys:[45,1,1,""],items:[45,1,1,""],clear:[45,1,1,""],iteritems:[45,1,1,""],update:[45,1,1,""],pop:[45,1,1,""],values:[45,1,1,""],itervalues:[45,1,1,""],popitem:[45,1,1,""],copy:[45,1,1,""],iterkeys:[45,1,1,""]},"celery.utils.dispatch":{saferef:[62,0,0,"-"],signal:[67,0,0,"-"]},"celery.platform":{ignore_signal:[71,3,1,""],set_mp_process_title:[71,3,1,""],reset_signal:[71,3,1,""],set_process_title:[71,3,1,""],install_signal_handler:[71,3,1,""]},"celery.utils.patch":{ensure_process_aware_logger:[83,3,1,""]},"celery.conf":{MAIL_HOST_PASSWORD:[49,2,1,""],TASK_SERIALIZER:[49,2,1,""],BROKER_CONNECTION_MAX_RETRIES:[49,2,1,""],DEFAULT_QUEUE:[49,2,1,""],MAIL_HOST_USER:[49,2,1,""],EAGER_PROPAGATES_EXCEPTIONS:[49,2,1,""],BROKER_CONNECTION_RETRY:[49,2,1,""],BROADCAST_EXCHANGE_TYPE:[49,2,1,""],EVENT_ROUTING_KEY:[49,2,1,""],TASK_RESULT_EXPIRES:[49,2,1,""],CELERYBEAT_MAX_LOOP_INTERVAL:[49,2,1,""],CELERYD_LOG_LEVEL:[49,2,1,""],RESULT_BACKEND:[49,2,1,""],CELERYD_LOG_FILE:[49,2,1,""],LOG_LEVELS:[49,2,1,""],DEFAULT_RATE_LIMIT:[49,2,1,""],CELERYMON_LOG_FILE:[49,2,1,""],CELERYD_ETA_SCHEDULER:[49,2,1,""],QUEUES:[49,2,1,""],CELERYD_LOG_FORMAT:[49,2,1,""],CELERYD_LISTENER:[49,2,1,""],CELERYD_POOL:[49,2,1,""],EVENT_EXCHANGE:[49,2,1,""],MAIL_HOST:[49,2,1,""],MAIL_PORT:[49,2,1,""],DISABLE_RATE_LIMITS:[49,2,1,""],CELERYD_MEDIATOR:[49,2,1,""],ACKS_LATE:[49,2,1,""],DEFAULT_EXCHANGE_TYPE:[49,2,1,""],CELERYBEAT_SCHEDULE_FILENAME:[49,2,1,""],STORE_ERRORS_EVEN_IF_IGNORED:[49,2,1,""],BROADCAST_QUEUE:[49,2,1,""],BROADCAST_EXCHANGE:[49,2,1,""],EVENT_SERIALIZER:[49,2,1,""],RESULT_EXCHANGE:[49,2,1,""],SEND_EVENTS:[49,2,1,""],DEFAULT_DELIVERY_MODE:[49,2,1,""],TRACK_STARTED:[49,2,1,""],CELERYMON_LOG_LEVEL:[49,2,1,""],EVENT_QUEUE:[49,2,1,""],SERVER_EMAIL:[49,2,1,""],CELERYBEAT_LOG_FILE:[49,2,1,""],BROKER_CONNECTION_TIMEOUT:[49,2,1,""],EVENT_EXCHANGE_TYPE:[49,2,1,""],ALWAYS_EAGER:[49,2,1,""],DEFAULT_ROUTING_KEY:[49,2,1,""],MAX_CACHED_RESULTS:[49,2,1,""],DEFAULT_EXCHANGE:[49,2,1,""],CELERYD_CONCURRENCY:[49,2,1,""],ADMINS:[49,2,1,""],CELERYBEAT_LOG_LEVEL:[49,2,1,""],IGNORE_RESULT:[49,2,1,""],CELERY_CACHE_BACKEND:[49,2,1,""],CELERYD_PREFETCH_MULTIPLIER:[49,2,1,""],CELERY_SEND_TASK_ERROR_EMAILS:[49,2,1,""],CELERYD_TASK_LOG_FORMAT:[49,2,1,""]},"celery.registry":{TaskRegistry:[78,4,1,""]},"celery.bin.celeryd_multi":{main:[68,3,1,""],MultiTool:[68,4,1,""],multi_args:[68,3,1,""],quote:[68,3,1,""],abbreviations:[68,3,1,""],say:[68,3,1,""],parse_ns_range:[68,3,1,""],NamespacedOptionParser:[68,4,1,""],format_opt:[68,3,1,""]},"celery.utils.dispatch.saferef":{get_bound_method_weakref:[62,3,1,""],BoundNonDescriptorMethodWeakref:[62,4,1,""],BoundMethodWeakref:[62,4,1,""],safe_ref:[62,3,1,""]},"celery.utils.compat":{chain_from_iterable:[45,3,1,""],OrderedDict:[45,4,1,""]},"celery.states":{ALL_STATES:[9,2,1,""],RETRY:[9,2,1,""],REVOKED:[9,2,1,""],SUCCESS:[9,2,1,""],STARTED:[9,2,1,""],UNREADY_STATES:[9,2,1,""],PROPAGATE_STATES:[9,2,1,""],FAILURE:[9,2,1,""],READY_STATES:[9,2,1,""],EXCEPTION_STATES:[9,2,1,""],PENDING:[9,2,1,""]},"celery.datastructures.LimitedSet":{chronologically:[32,5,1,""],pop_value:[32,1,1,""],as_dict:[32,1,1,""],update:[32,1,1,""],add:[32,1,1,""],first:[32,5,1,""]}},titleterms:{represent:15,all:18,consum:0,primer:0,depend:18,send:[18,27,16,49],countdown:97,init:48,retri:[18,3],passiv:0,sourc:64,webhook:19,util:[75,8,45,62,76,65,83,95,38,53,67,16],veri:25,list:[73,59],rabbitmq:[18,80,21,50],session:46,quick:50,natur:18,direct:0,cron:50,rate:[43,3,23],download:64,click:27,compat:[8,45,38,83],index:38,what:[18,1],clock:91,current:[18,23],delet:0,version:[56,64],"new":[1,25],gener:18,caqmadm:99,ubuntu:48,strong:92,wait:18,task_id:18,memcach:77,queue:[33,18,0,50,89,49],chang:[18,0,25],love:50,revok:38,appli:18,modul:[82,38],releas:1,api:[13,1,0,99],celerybeat:[48,66,42,38,44,49],instal:[64,21,89],redi:[44,39,89],granular:3,from:[64,50],commun:50,regist:23,upgrad:25,type:0,relat:0,cach:[77,44,25],tokyo:[44,85],work:[18,3,50],histori:25,abort:41,can:18,learn:50,pre1:25,pre3:25,pre2:25,control:[29,61,25,10,18,88,38,23,79],defer:50,quickstart:50,process:[69,18,60,50],integrityerror:18,indic:33,topic:0,critic:25,carrot:[50,27],want:3,serial:[40,97,5],delai:[18,3,50],anoth:18,ping:23,write:23,how:[18,3,0,50],misconcept:18,simpl:34,resourc:[59,1,50],camqadm:99,max:23,router:[0,72],date:65,data:[74,3],practic:3,bind:0,counter:27,disabl:[3,23],inform:75,freebsd:[18,50],exclus:0,help:59,tyrant:[44,85],still:18,monitor:44,fix:25,platform:[71,38,18],window:18,onc:18,mail:[59,44,49,16],anim:50,crash:18,thei:3,python:[45,50],safe:[18,62],dai:50,subtask:[58,3,52],introduct:[64,66,50,74,27],multiprocess:[69,60,12],name:[18,0],anyth:18,troubleshoot:[18,48],token:43,timeout:97,debug:53,exchange_nam:0,launchd:48,worker:[7,34,61,29,79,63,10,18,12,96,87,88,74,14,43,22,38,44,73,23,20],timelin:56,crontab:66,ensur:94,connect:[18,97,44],django:[50,18,48,19,25],event:[47,51,15,38,44,73,23],celerymon:[44,49],shut:18,advanc:44,hang:18,base:[31,38,50,90,54],ask:18,extend:60,thread:[61,92],launch:3,celeryev:51,synchron:3,lingual:18,keep:18,thing:18,heartbeat:[38,96],frequent:18,first:34,softwar:50,exchang:0,datastructur:[38,32],stabl:1,prioriti:18,script:48,licens:59,system:21,messag:[89,36,72,50,18,0,3,14,27,5,38,44],routing_kei:0,listen:[38,14],shell:99,option:[18,3,48,97],auto_delet:0,tool:[40,68],specifi:[18,0],broadcast:[44,23],mostli:50,than:50,kind:18,keyword:3,remot:[29,25,10,18,88,23],remov:56,structur:74,reus:18,viewer:51,if_empti:0,argument:3,have:18,tabl:33,incompat:25,cassandra:84,built:[10,55],callback:[58,6,52,19],rout:[3,72,0,44,97],note:[89,25],builtin:[10,38,55],build:50,distribut:33,trace:[38,17],why:18,don:3,url:27,doe:18,declar:0,runtim:18,concurr:[69,44,60,92,23],find:18,celeri:[29,57,55,56,71,1,30,69,61,31,87,102,65,32,43,58,6,60,7,8,9,36,62,85,77,63,10,11,80,12,101,88,14,89,100,15,38,90,39,16,17,41,81,68,40,33,18,34,92,93,35,42,20,72,99,95,22,96,84,67,83,75,24,98,45,46,78,76,26,28,50,91,27,51,47,53,49,54,79],onli:[94,18],execut:[34,24,97,50,18,94,19,20,38,44,49,23,17],transact:3,configur:[34,48,21,89,38,44,49],should:18,experiment:92,queu:50,local:3,contribut:59,get:[59,86,18,50],beat:[38,18,91],stomp:18,stop:[50,23,21,48],restart:23,enabl:23,patch:[38,83],mediat:74,view:[3,27],wiki:59,set:[9,18,52,21,58,44,23],dump:23,startup:18,result:[25,18,26,3,52,38,44],fail:3,reserv:23,if_unus:0,kei:[18,0],databas:[81,25,3,89,38,44],someth:3,state:[9,38,3,87,15],won:18,pyredi:39,"import":[89,25],irc:59,foreword:25,job:[38,20],solv:50,queue_nam:0,eta:[97,23],point:18,overview:64,period:[27,18,66,42,100,44],dispatch:[67,62,76],loader:[38,57,98,54],functool:8,carrotlisten:74,shutdown:23,cancel:18,guid:[70,23],backend:[90,77,85,25,81,30,84,93,50,102,38,44,39],been:1,compon:[74,44],interest:80,basic:[22,3,19,0,97],ghettoq:18,strategi:3,rubi:[19,50],child:23,multi:[18,68],servic:91,defin:[31,0],behavior:100,error:[18,44],spawn:18,best:3,destin:0,cluster:15,conf:[38,49],decor:[38,101],develop:64,perform:3,same:18,tutori:[50,27,37],document:[64,25],finish:[18,27],http:[38,6,19],hostnam:21,rail:19,hand:0,user:[70,25],stack:50,task:[29,55,31,3,5,58,6,33,34,9,66,38,18,100,41,94,19,42,22,73,44,23,75,24,97,78,0,26,50,27,52,101],pickl:18,exampl:[19,64,48,3,5,44],command:[25,10,18,0,99,88,44,23],model:[3,28,27],left:18,protocol:5,just:18,less:50,when:18,mysql:18,web:50,miscellan:38,except:[38,35],blog:3,schedul:[7,18,66,100,38,23],bin:[63,99,42,68,51],celeryd:[68,63,18,48,50,44,49],supervisord:48,format:5,background:[18,50],eta_schedul:74,daemon:[63,48],like:66,specif:[71,18],deprec:[56,25],signal:[22,67,62,76],manual:0,server:[34,18,42,44,21],celeryd_multi:68,interv:18,some:18,intern:[82,74,4,0],avoid:3,per:23,backward:25,tracker:59,larg:50,duplic:18,refer:[82,13,62],run:[34,18,48],saferef:62,inspect:23,broker:[18,0,21,49],timeutil:65,step:34,"throw":18,memori:15,manag:29,discard:18,produc:0,own:23,automat:0,down:18,contrib:41,storag:50,your:[50,23],durabl:0,log:[11,38,3,44],aren:18,support:[69,18,92],question:18,custom:[18,3,44],avail:48,start:[50,86,48,66,21,23],"function":[8,23],sqlalchemi:[46,28,81],link:80,line:99,activemq:18,bug:[59,25],info:[38,53],"default":[57,38,3,0,44],bucket:[43,38],acks_lat:18,limit:[43,3,23],problem:50,deadlock:18,featur:[64,18,1],curs:51,creat:[34,94,27],taskpool:74,doesn:18,ready_queu:74,file:44,amqp:[97,80,18,0,99,102,38,44],tip:3,other:25,you:3,registri:[38,88,78],mongodb:[93,44],"class":[38,44,54,55],debian:48,pool:[38,69,60,92],receiv:18,ignor:3,time:[94,18,65,23],cookbook:2,schedulecontrol:74}})PKHDDD))$celery-2.0-archived/py-modindex.html Python Module Index — Celery 2.0.3 (stable) documentation
PKHDD၏fIIcelery-2.0-archived/search.html Search — Celery 2.0.3 (stable) documentation

Search

Please activate JavaScript to enable the search functionality.

From here you can search these documents. Enter your search words into the box below and click "search". Note that the search function will automatically search for all of the words. Pages containing fewer words won't appear in the result list.

PKHDD~]~celery-2.0-archived/.buildinfo# Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. config: 8970fedfee6bdbbe510e4a3a4ef649cc tags: efa25262f700e02b1777eb79ee109f5c PKHDDY1ކ&celery-2.0-archived/configuration.html Configuration and defaults — Celery 2.0.3 (stable) documentation

Configuration and defaults

This document describes the configuration options available.

If you’re using the default loader, you must create the celeryconfig.py module and make sure it is available on the Python path.

Example configuration file

This is an example configuration file to get you started. It should contain all you need to run a basic celery set-up.

# List of modules to import when celery starts.
CELERY_IMPORTS = ("myapp.tasks", )

## Result store settings.
CELERY_RESULT_BACKEND = "database"
CELERY_RESULT_DBURI = "sqlite:///mydatabase.db"

## Broker settings.
BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_VHOST = "/"
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"

## Worker settings
## If you're doing mostly I/O you can have more processes,
## but if mostly spending CPU, try to keep it close to the
## number of CPUs on your machine. If not set, the number of CPUs/cores
## available will be used.
CELERYD_CONCURRENCY = 10
# CELERYD_LOG_FILE = "celeryd.log"
# CELERYD_LOG_LEVEL = "INFO"

Concurrency settings

  • CELERYD_CONCURRENCY

    The number of concurrent worker processes, executing tasks simultaneously.

    Defaults to the number of CPUs/cores available.

  • CELERYD_PREFETCH_MULTIPLIER

    How many messages to prefetch at a time multiplied by the number of concurrent processes. The default is 4 (four messages for each process). The default setting seems pretty good here. However, if you have very long running tasks waiting in the queue and you have to start the workers, note that the first worker to start will receive four times the number of messages initially. Thus the tasks may not be fairly balanced among the workers.

Task result backend settings

  • CELERY_RESULT_BACKEND

    The backend used to store task results (tombstones). Can be one of the following:

    • database (default)

      Use a relational database supported by SQLAlchemy.

    • cache

      Use memcached to store the results.

    • mongodb

      Use MongoDB to store the results.

    • redis

      Use Redis to store the results.

    • tyrant

      Use Tokyo Tyrant to store the results.

    • amqp

      Send results back as AMQP messages (WARNING While very fast, you must make sure you only receive the result once. See Executing Tasks).

Database backend settings

Please see Supported Databases for a table of supported databases. To use this backend you need to configure it with an Connection String, some examples include:

# sqlite (filename)
CELERY_RESULT_DBURI = "sqlite:///celerydb.sqlite"

# mysql
CELERY_RESULT_DBURI = "mysql://scott:tiger@localhost/foo"

# postgresql
CELERY_RESULT_DBURI = "postgresql://scott:tiger@localhost/mydatabase"

# oracle
CELERY_RESULT_DBURI = "oracle://scott:tiger@127.0.0.1:1521/sidname"

See Connection String for more information about connection strings.

To specify additional SQLAlchemy database engine options you can use the CELERY_RESULT_ENGINE_OPTIONS setting:

# echo enables verbose logging from SQLAlchemy.
CELERY_RESULT_ENGINE_OPTIONS = {"echo": True}

Example configuration

CELERY_RESULT_BACKEND = "database"
CELERY_RESULT_DBURI = "mysql://user:password@host/dbname"

AMQP backend settings

  • CELERY_RESULT_EXCHANGE

    Name of the exchange to publish results in. Default is "celeryresults".

  • CELERY_RESULT_EXCHANGE_TYPE

    The exchange type of the result exchange. Default is to use a direct exchange.

  • CELERY_RESULT_SERIALIZER

    Result message serialization format. Default is "pickle".

  • CELERY_RESULTS_PERSISTENT

    If set to True, result messages will be persistent. This means the messages will not be lost after a broker restart. The default is for the results to be transient.

Example configuration

CELERY_RESULT_BACKEND = “amqp”

Cache backend settings

The cache backend supports the pylibmc and python-memcached libraries. The latter is used only if pylibmc is not installed.

Example configuration

Using a single memcached server:

CELERY_CACHE_BACKEND = 'memcached://127.0.0.1:11211/'

Using multiple memcached servers:

CELERY_RESULT_BACKEND = "cache"
CELERY_CACHE_BACKEND = 'memcached://172.19.26.240:11211;172.19.26.242:11211/'

You can set pylibmc options using the CELERY_CACHE_BACKEND_OPTIONS setting:

CELERY_CACHE_BACKEND_OPTIONS = {"binary": True,
                                "behaviors": {"tcp_nodelay": True}}

Tokyo Tyrant backend settings

NOTE The Tokyo Tyrant backend requires the pytyrant library:
http://pypi.python.org/pypi/pytyrant/

This backend requires the following configuration directives to be set:

  • TT_HOST

    Hostname of the Tokyo Tyrant server.

  • TT_PORT

    The port the Tokyo Tyrant server is listening to.

Example configuration

CELERY_RESULT_BACKEND = "tyrant"
TT_HOST = "localhost"
TT_PORT = 1978

Redis backend settings

NOTE The Redis backend requires the redis library:
http://pypi.python.org/pypi/redis/0.5.5

To install the redis package use pip or easy_install:

$ pip install redis

This backend requires the following configuration directives to be set:

  • REDIS_HOST

    Hostname of the Redis database server. e.g. "localhost".

  • REDIS_PORT

    Port to the Redis database server. e.g. 6379.

Also, the following optional configuration directives are available:

  • REDIS_DB

    Database number to use. Default is 0

  • REDIS_PASSWORD

    Password used to connect to the database.

Example configuration

CELERY_RESULT_BACKEND = "redis"
REDIS_HOST = "localhost"
REDIS_PORT = 6379
REDIS_DB = "celery_results"
REDIS_CONNECT_RETRY=True

MongoDB backend settings

NOTE The MongoDB backend requires the pymongo library:
http://github.com/mongodb/mongo-python-driver/tree/master
  • CELERY_MONGODB_BACKEND_SETTINGS

    This is a dict supporting the following keys:

    • host

      Hostname of the MongoDB server. Defaults to “localhost”.

    • port

      The port the MongoDB server is listening to. Defaults to 27017.

    • user

      User name to authenticate to the MongoDB server as (optional).

    • password

      Password to authenticate to the MongoDB server (optional).

    • database

      The database name to connect to. Defaults to “celery”.

    • taskmeta_collection

      The collection name to store task meta data. Defaults to “celery_taskmeta”.

Example configuration

CELERY_RESULT_BACKEND = "mongodb"
CELERY_MONGODB_BACKEND_SETTINGS = {
    "host": "192.168.1.100",
    "port": 30000,
    "database": "mydb",
    "taskmeta_collection": "my_taskmeta_collection",
}

Messaging settings

Routing

  • CELERY_QUEUES

    The mapping of queues the worker consumes from. This is a dictionary of queue name/options. See Routing Tasks for more information.

    The default is a queue/exchange/binding key of "celery", with exchange type direct.

    You don’t have to care about this unless you want custom routing facilities.

  • CELERY_DEFAULT_QUEUE

    The queue used by default, if no custom queue is specified. This queue must be listed in CELERY_QUEUES. The default is: celery.

  • CELERY_DEFAULT_EXCHANGE

    Name of the default exchange to use when no custom exchange is specified. The default is: celery.

  • CELERY_DEFAULT_EXCHANGE_TYPE

    Default exchange type used when no custom exchange is specified. The default is: direct.

  • CELERY_DEFAULT_ROUTING_KEY

    The default routing key used when sending tasks. The default is: celery.

  • CELERY_DEFAULT_DELIVERY_MODE

    Can be transient or persistent. Default is to send persistent messages.

Connection

  • CELERY_BROKER_CONNECTION_TIMEOUT

    The timeout in seconds before we give up establishing a connection to the AMQP server. Default is 4 seconds.

  • CELERY_BROKER_CONNECTION_RETRY

    Automatically try to re-establish the connection to the AMQP broker if it’s lost.

    The time between retries is increased for each retry, and is not exhausted before CELERY_BROKER_CONNECTION_MAX_RETRIES is exceeded.

    This behavior is on by default.

  • CELERY_BROKER_CONNECTION_MAX_RETRIES

    Maximum number of retries before we give up re-establishing a connection to the AMQP broker.

    If this is set to 0 or None, we will retry forever.

    Default is 100 retries.

Task execution settings

  • CELERY_ALWAYS_EAGER

    If this is True, all tasks will be executed locally by blocking until it is finished. apply_async and Task.delay will return a celery.result.EagerResult which emulates the behavior of celery.result.AsyncResult, except the result has already been evaluated.

    Tasks will never be sent to the queue, but executed locally instead.

  • CELERY_EAGER_PROPAGATES_EXCEPTIONS

    If this is True, eagerly executed tasks (using .apply, or with CELERY_ALWAYS_EAGER on), will raise exceptions.

    It’s the same as always running apply with throw=True.

  • CELERY_IGNORE_RESULT

    Whether to store the task return values or not (tombstones). If you still want to store errors, just not successful return values, you can set CELERY_STORE_ERRORS_EVEN_IF_IGNORED.

  • CELERY_TASK_RESULT_EXPIRES

    Time (in seconds, or a datetime.timedelta object) for when after stored task tombstones will be deleted.

    A built-in periodic task will delete the results after this time (celery.task.builtins.DeleteExpiredTaskMetaTask).

    NOTE: For the moment this only works with the database, cache and MongoDB backends.

    NOTE: celerybeat must be running for the results to be expired.

  • CELERY_MAX_CACHED_RESULTS

    Total number of results to store before results are evicted from the result cache. The default is 5000.

  • CELERY_TRACK_STARTED

    If True the task will report its status as “started” when the task is executed by a worker. The default value is False as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a “started” status can be useful for when there are long running tasks and there is a need to report which task is currently running. backends.

  • CELERY_TASK_SERIALIZER

    A string identifying the default serialization method to use. Can be pickle (default), json, yaml, or any custom serialization methods that have been registered with carrot.serialization.registry.

    Default is pickle.

  • CELERY_DEFAULT_RATE_LIMIT

    The global default rate limit for tasks.

    This value is used for tasks that does not have a custom rate limit The default is no rate limit.

  • CELERY_DISABLE_RATE_LIMITS

    Disable all rate limits, even if tasks has explicit rate limits set.

  • CELERY_ACKS_LATE

    Late ack means the task messages will be acknowledged after the task has been executed, not just before, which is the default behavior.

    See http://ask.github.com/celery/faq.html#should-i-use-retry-or-acks-late

Worker: celeryd

  • CELERY_IMPORTS

    A sequence of modules to import when the celery daemon starts.

    This is used to specify the task modules to import, but also to import signal handlers and additional remote control commands, etc.

  • CELERYD_MAX_TASKS_PER_CHILD

    Maximum number of tasks a pool worker process can execute before it’s replaced with a new one. Default is no limit.

  • CELERYD_TASK_TIME_LIMIT

    Task hard time limit in seconds. The worker processing the task will be killed and replaced with a new one when this is exceeded.

  • CELERYD_SOFT_TASK_TIME_LIMIT

    Task soft time limit in seconds. The celery.exceptions.SoftTimeLimitExceeded exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes.

    from celery.decorators import task
    from celery.exceptions import SoftTimeLimitExceeded
    
    @task()
    def mytask():
        try:
            return do_work()
        except SoftTimeLimitExceeded:
            cleanup_in_a_hurry()
    
  • CELERY_STORE_ERRORS_EVEN_IF_IGNORED

    If set, the worker stores all task errors in the result store even if Task.ignore_result is on.

Error E-Mails

  • CELERY_SEND_TASK_ERROR_EMAILS

    If set to True, errors in tasks will be sent to admins by e-mail.

  • ADMINS

    List of (name, email_address) tuples for the admins that should receive error e-mails.

  • SERVER_EMAIL

    The e-mail address this worker sends e-mails from. Default is "celery@localhost".

  • MAIL_HOST

    The mail server to use. Default is "localhost".

  • MAIL_HOST_USER

    Username (if required) to log on to the mail server with.

  • MAIL_HOST_PASSWORD

    Password (if required) to log on to the mail server with.

  • MAIL_PORT

    The port the mail server is listening on. Default is 25.

Example E-Mail configuration

This configuration enables the sending of error e-mails to george@vandelay.com and kramer@vandelay.com:

# Enables error e-mails.
CELERY_SEND_TASK_ERROR_EMAILS = True

# Name and e-mail addresses of recipients
ADMINS = (
    ("George Costanza", "george@vandelay.com"),
    ("Cosmo Kramer", "kosmo@vandelay.com"),
)

# E-mail address used as sender (From field).
SERVER_EMAIL = "no-reply@vandelay.com"

# Mailserver configuration
EMAIL_HOST = "mail.vandelay.com"
EMAIL_PORT = 25
# EMAIL_HOST_USER = "servers"
# EMAIL_HOST_PASSWORD = "s3cr3t"

Events

  • CELERY_SEND_EVENTS

    Send events so the worker can be monitored by tools like celerymon.

  • CELERY_EVENT_EXCHANGE

    Name of the exchange to send event messages to. Default is "celeryevent".

  • CELERY_EVENT_EXCHANGE_TYPE

    The exchange type of the event exchange. Default is to use a direct exchange.

  • CELERY_EVENT_ROUTING_KEY

    Routing key used when sending event messages. Default is "celeryevent".

  • CELERY_EVENT_SERIALIZER

    Message serialization format used when sending event messages. Default is "json".

Broadcast Commands

  • CELERY_BROADCAST_QUEUE

    Name prefix for the queue used when listening for broadcast messages. The workers hostname will be appended to the prefix to create the final queue name.

    Default is "celeryctl".

  • CELERY_BROADCAST_EXCHANGE

    Name of the exchange used for broadcast messages.

    Default is "celeryctl".

  • CELERY_BROADCAST_EXCHANGE_TYPE

    Exchange type used for broadcast messages. Default is "fanout".

Logging

  • CELERYD_LOG_FILE

    The default file name the worker daemon logs messages to, can be overridden using the –logfile` option to celeryd.

    The default is None (stderr) Can also be set via the --logfile argument.

  • CELERYD_LOG_LEVEL

    Worker log level, can be any of DEBUG, INFO, WARNING, ERROR, CRITICAL.

    Can also be set via the --loglevel argument.

    See the logging module for more information.

  • CELERYD_LOG_FORMAT

    The format to use for log messages.

    Default is [%(asctime)s: %(levelname)s/%(processName)s] %(message)s

    See the Python logging module for more information about log formats.

  • CELERYD_TASK_LOG_FORMAT

    The format to use for log messages logged in tasks. Can be overridden using the --loglevel option to celeryd.

    Default is:

    [%(asctime)s: %(levelname)s/%(processName)s]
        [%(task_name)s(%(task_id)s)] %(message)s

    See the Python logging module for more information about log formats.

Custom Component Classes (advanced)

  • CELERYD_POOL

    Name of the task pool class used by the worker. Default is "celery.concurrency.processes.TaskPool".

  • CELERYD_LISTENER

    Name of the listener class used by the worker. Default is "celery.worker.listener.CarrotListener".

  • CELERYD_MEDIATOR

    Name of the mediator class used by the worker. Default is "celery.worker.controllers.Mediator".

  • CELERYD_ETA_SCHEDULER

    Name of the ETA scheduler class used by the worker. Default is "celery.worker.controllers.ScheduleController".

Periodic Task Server: celerybeat

  • CELERYBEAT_SCHEDULE_FILENAME

    Name of the file celerybeat stores the current schedule in. Can be a relative or absolute path, but be aware that the suffix .db will be appended to the file name.

    Can also be set via the --schedule argument.

  • CELERYBEAT_MAX_LOOP_INTERVAL

    The maximum number of seconds celerybeat can sleep between checking the schedule. Default is 300 seconds (5 minutes).

  • CELERYBEAT_LOG_FILE

    The default file name to log messages to, can be overridden using the –logfile` option.

    The default is None (stderr). Can also be set via the --logfile argument.

  • CELERYBEAT_LOG_LEVEL

    Logging level. Can be any of DEBUG, INFO, WARNING, ERROR, or CRITICAL.

    Can also be set via the --loglevel argument.

    See the logging module for more information.

Monitor Server: celerymon

  • CELERYMON_LOG_FILE

    The default file name to log messages to, can be overridden using the –logfile` option.

    The default is None (stderr) Can also be set via the --logfile argument.

  • CELERYMON_LOG_LEVEL

    Logging level. Can be any of DEBUG, INFO, WARNING, ERROR, or CRITICAL.

    See the logging module for more information.

PKHDD?G@-@-"celery-2.0-archived/changelog.html Change history — Celery 2.0.3 (stable) documentation

Change history

2.0.3

release-date:2010-08-27 12:00 P.M CEST

Fixes

  • celeryd: Properly handle connection errors happening while closing consumers.

  • celeryd: Events are now buffered if the connection is down, then sent when the connection is re-established.

  • No longer depends on the mailer package.

    This package had a namespace collision with django-mailer, so its functionality was replaced.

  • Redis result backend: Documentation typos: Redis doesn’t have database names, but database numbers. The default database is now 0.

  • inspect: registered_tasks was requesting an invalid command because of a typo.

  • CELERY_ROUTES: Values defined in the route should now have precedence over values defined in CELERY_QUEUES when merging the two.

    With the follow settings:

    CELERY_QUEUES = {"cpubound": {"exchange": "cpubound",
                                  "routing_key": "cpubound"}}
    
    CELERY_ROUTES = {"tasks.add": {"queue": "cpubound",
                                   "routing_key": "tasks.add",
                                   "serializer": "json"}}
    

    The final routing options for tasks.add will become:

    {"exchange": "cpubound",
     "routing_key": "tasks.add",
     "serializer": "json"}
    

    This was not the case before: the values in CELERY_QUEUES would take precedence.

  • Worker crashed if the value of CELERY_TASK_ERROR_WHITELIST was not an iterable

  • apply(): Make sure kwargs["task_id"] is always set.

  • AsyncResult.traceback: Now returns None, instead of raising KeyError if traceback is missing.

  • inspect: Replies did not work correctly if no destination was specified.

  • Can now store result/metadata for custom states.

  • celeryd: A warning is now emitted if the sending of task error e-mails fails.

  • celeryev: Curses monitor no longer crashes if the terminal window is resized.

  • celeryd: On OS X it is not possible to run os.exec* in a process that is threaded.

    This breaks the SIGHUP restart handler, and is now disabled on OS X, emitting a warning instead.

    See http://github.com/ask/celery/issues/issue/152

  • celery.execute.trace: Properly handle raise(str), which is still allowed in Python 2.4.

  • Using urllib2 in a periodic task on OS X crashed because of the proxy autodetection used in OS X.

    This is now fixed by using a workaround. See http://github.com/ask/celery/issues/issue/143

  • Debian init scripts: Commands should not run in a subshell

  • Debian init scripts: Use abspath for celeryd to allow stat

Documentation

  • getting-started/broker-installation: Fixed typo

    set_permissions "" -> set_permissions ".*".

  • Tasks Userguide: Added section on database transactions.

  • Routing Userguide: Fixed typo "feed": -> {"queue": "feeds"}.

  • Documented the default values for the CELERYD_CONCURRENCY and CELERYD_PREFETCH_MULTIPLIER settings.

  • Tasks Userguide: Fixed typos in the subtask example

  • celery.signals: Documented worker_process_init.

  • Daemonization cookbook: Need to export DJANGO_SETTINGS_MODULE in /etc/default/celeryd.

  • Added some more FAQs from stack overflow

  • Daemonization cookbook: Fixed typo CELERYD_LOGFILE/CELERYD_PIDFILE

    to CELERYD_LOG_FILE / CELERYD_PID_FILE

    Also added troubleshooting section for the init scripts.

2.0.2

release-date:2010-07-22 11:31 A.M CEST
  • Routes: When using the dict route syntax, the exchange for a task could dissapear making the task unroutable.

  • Test suite now passing on Python 2.4

  • No longer have to type PYTHONPATH=. to use celeryconfig in current dir.

    This is accomplished by the default loader ensuring that the current directory is in sys.path when loading the config module. sys.path is reset to its original state after loading.

    Adding cwd to sys.path without the user knowing may be a security issue, as this means someone can drop a Python module in the users directory that executes arbitrary commands. This was the original reason not to do this, but if done only when loading the config module, this means that the behvavior will only apply to the modules imported in the config module, which I think is a good compromise (certainly better than just explictly setting PYTHONPATH=. anyway)

  • Experimental Cassandra backend added.

  • celeryd: SIGHUP handler accidentally propagated to worker pool processes.

    In combination with 7a7c44e39344789f11b5346e9cc8340f5fe4846c this would make each child process start a new celeryd when the terminal window was closed :/

  • celeryd: Do not install SIGHUP handler if running from a terminal.

    This fixes the problem where celeryd is launched in the background when closing the terminal.

  • celeryd: Now joins threads at shutdown.

  • Test teardown: Don’t use atexit but nose’s teardown() functionality instead.

  • Debian init script for celeryd: Stop now works correctly.

  • Task logger: warn method added (synonym for warning)

  • Can now define a whitelist of errors to send error e-mails for.

    Example:

    CELERY_TASK_ERROR_WHITELIST = ('myapp.MalformedInputError')
    

    See http://github.com/ask/celery/issues/issue/153

  • celeryd: Now handles overflow exceptions in time.mktime while parsing the ETA field.

  • LoggerWrapper: Try to detect loggers logging back to stderr/stdout making an infinite loop.

  • Added celery.task.control.inspect: Inspects a running worker.

    Examples:

    # Inspect a single worker
    >>> i = inspect("myworker.example.com")
    
    # Inspect several workers
    >>> i = inspect(["myworker.example.com", "myworker2.example.com"])
    
    # Inspect all workers consuming on this vhost.
    >>> i = inspect()
    
    ### Methods
    
    # Get currently executing tasks
    >>> i.active()
    
    # Get currently reserved tasks
    >>> i.reserved()
    
    # Get the current eta schedule
    >>> i.scheduled()
    
    # Worker statistics and info
    >>> i.stats()
    
    # List of currently revoked tasks
    >>> i.revoked()
    
    # List of registered tasks
    >>> i.registered_tasks()
  • Remote control commands dump_active/dump_reserved/dump_schedule now replies with detailed task requests.

    Containing the original arguments and fields of the task requested.

    In addition the remote control command set_loglevel has been added, this only changes the loglevel for the main process.

  • Worker control command execution now catches errors and returns their string representation in the reply.

  • Functional test suite added

    celery.tests.functional.case contains utilities to start and stop an embedded celeryd process, for use in functional testing.

2.0.1

release-date:2010-07-09 03:02 P.M CEST
  • multiprocessing.pool: Now handles encoding errors, so that pickling errors doesn’t crash the worker processes.

  • The remote control command replies was not working with RabbitMQ 1.8.0’s stricter equivalence checks.

    If you’ve already hit this problem you may have to delete the declaration:

    $ camqadm exchange.delete celerycrq

    or:

    $ python manage.py camqadm exchange.delete celerycrq
  • A bug sneaked in the ETA scheduler that made it only able to execute one task per second(!)

    The scheduler sleeps between iterations so it doesn’t consume too much CPU. It keeps a list of the scheduled items sorted by time, at each iteration it sleeps for the remaining time of the item with the nearest deadline. If there are no eta tasks it will sleep for a minimum amount of time, one second by default.

    A bug sneaked in here, making it sleep for one second for every task that was scheduled. This has been fixed, so now it should move tasks like hot knife through butter.

    In addition a new setting has been added to control the minimum sleep interval; CELERYD_ETA_SCHEDULER_PRECISION. A good value for this would be a float between 0 and 1, depending on the needed precision. A value of 0.8 means that when the ETA of a task is met, it will take at most 0.8 seconds for the task to be moved to the ready queue.

  • Pool: Supervisor did not release the semaphore.

    This would lead to a deadlock if all workers terminated prematurely.

  • Added Python version trove classifiers: 2.4, 2.5, 2.6 and 2.7

  • Tests now passing on Python 2.7.

  • Task.__reduce__: Tasks created using the task decorator can now be pickled.

  • setup.py: nose added to tests_require.

  • Pickle should now work with SQLAlchemy 0.5.x

  • New homepage design by Jan Henrik Helmers: http://celeryproject.org

  • New Sphinx theme by Armin Ronacher: http://celeryproject.org/docs

  • Fixed “pending_xref” errors shown in the HTML rendering of the documentation. Apparently this was caused by new changes in Sphinx 1.0b2.

  • Router classes in CELERY_ROUTES are now imported lazily.

    Importing a router class in a module that also loads the Celery environment would cause a circular dependency. This is solved by importing it when needed after the environment is set up.

  • CELERY_ROUTES was broken if set to a single dict.

    This example in the docs should now work again:

    CELERY_ROUTES = {"feed.tasks.import_feed": "feeds"}
    
  • CREATE_MISSING_QUEUES was not honored by apply_async.

  • New remote control command: stats

    Dumps information about the worker, like pool process pids, and total number of tasks executed by type.

    Example reply:

    [{'worker.local':
         'total': {'tasks.sleeptask': 6},
         'pool': {'timeouts': [None, None],
                  'processes': [60376, 60377],
                  'max-concurrency': 2,
                  'max-tasks-per-child': None,
                  'put-guarded-by-semaphore': True}}]
  • New remote control command: dump_active

    Gives a list of tasks currently being executed by the worker. By default arguments are passed through repr in case there are arguments that is not JSON encodable. If you know the arguments are JSON safe, you can pass the argument safe=True.

    Example reply:

    >>> broadcast("dump_active", arguments={"safe": False}, reply=True)
    [{'worker.local': [
        {'args': '(1,)',
         'time_start': 1278580542.6300001,
         'name': 'tasks.sleeptask',
         'delivery_info': {
             'consumer_tag': '30',
             'routing_key': 'celery',
             'exchange': 'celery'},
         'hostname': 'casper.local',
         'acknowledged': True,
         'kwargs': '{}',
         'id': '802e93e9-e470-47ed-b913-06de8510aca2',
        }
    ]}]
    
  • Added experimental support for persistent revokes.

    Use the -S|--statedb argument to celeryd to enable it:

    $ celeryd --statedb=/var/run/celeryd

    This will use the file: /var/run/celeryd.db, as the shelve module automatically adds the .db suffix.

2.0.0

release-date:2010-07-02 02:30 P.M CEST

Foreword

Celery 2.0 contains backward incompatible changes, the most important being that the Django dependency has been removed so Celery no longer supports Django out of the box, but instead as an add-on package called django-celery.

We’re very sorry for breaking backwards compatibility, but there’s also many new and exciting features to make up for the time you lose upgrading, so be sure to read the News section.

Quite a lot of potential users have been upset about the Django dependency, so maybe this is a chance to get wider adoption by the Python community as well.

Big thanks to all contributors, testers and users!

Upgrading for Django-users

Django integration has been moved to a separate package: django-celery.

  • To upgrade you need to install the django-celery module and change:

    INSTALLED_APPS = "celery"
    

    to:

    INSTALLED_APPS = "djcelery"
    
  • If you use mod_wsgi you need to add the following line to your .wsgi file:

    import os
    os.environ["CELERY_LOADER"] = "django"
    
  • The following modules has been moved to django-celery:

    Module name Replace with
    celery.models djcelery.models
    celery.managers djcelery.managers
    celery.views djcelery.views
    celery.urls djcelery.urls
    celery.management djcelery.management
    celery.loaders.djangoapp djcelery.loaders
    celery.backends.database djcelery.backends.database
    celery.backends.cache djcelery.backends.cache

Importing djcelery will automatically setup Celery to use Django loader. loader. It does this by setting the CELERY_LOADER environment variable to "django" (it won’t change it if a loader is already set.)

When the Django loader is used, the “database” and “cache” result backend aliases will point to the djcelery backends instead of the built-in backends, and configuration will be read from the Django settings.

Upgrading for others

Database result backend

The database result backend is now using SQLAlchemy instead of the Django ORM, see Supported Databases for a table of supported databases.

The DATABASE_* settings has been replaced by a single setting: CELERY_RESULT_DBURI. The value here should be an SQLAlchemy Connection String, some examples include:

# sqlite (filename)
CELERY_RESULT_DBURI = "sqlite:///celerydb.sqlite"

# mysql
CELERY_RESULT_DBURI = "mysql://scott:tiger@localhost/foo"

# postgresql
CELERY_RESULT_DBURI = "postgresql://scott:tiger@localhost/mydatabase"

# oracle
CELERY_RESULT_DBURI = "oracle://scott:tiger@127.0.0.1:1521/sidname"

See SQLAlchemy Connection Strings for more information about connection strings.

To specify additional SQLAlchemy database engine options you can use the CELERY_RESULT_ENGINE_OPTIONS setting:

# echo enables verbose logging from SQLAlchemy.
CELERY_RESULT_ENGINE_OPTIONS = {"echo": True}

Cache result backend

The cache result backend is no longer using the Django cache framework, but it supports mostly the same configuration syntax:

CELERY_CACHE_BACKEND = "memcached://A.example.com:11211;B.example.com"

To use the cache backend you must either have the pylibmc or python-memcached library installed, of which the former is regarded as the best choice.

The support backend types are memcached:// and memory://, we haven’t felt the need to support any of the other backends provided by Django.

Backward incompatible changes

  • Default (python) loader now prints warning on missing celeryconfig.py instead of raising ImportError.

    celeryd raises ImproperlyConfigured if the configuration is not set up. This makes it possible to use --help etc, without having a working configuration.

    Also this makes it possible to use the client side of celery without being configured:

    >>> from carrot.connection import BrokerConnection
    >>> conn = BrokerConnection("localhost", "guest", "guest", "/")
    >>> from celery.execute import send_task
    >>> r = send_task("celery.ping", args=(), kwargs={}, connection=conn)
    >>> from celery.backends.amqp import AMQPBackend
    >>> r.backend = AMQPBackend(connection=conn)
    >>> r.get()
    'pong'
    
  • The following deprecated settings has been removed (as scheduled by the deprecation timeline):

    Setting name Replace with
    CELERY_AMQP_CONSUMER_QUEUES CELERY_QUEUES
    CELERY_AMQP_EXCHANGE CELERY_DEFAULT_EXCHANGE
    CELERY_AMQP_EXCHANGE_TYPE CELERY_DEFAULT_EXCHANGE_TYPE
    CELERY_AMQP_CONSUMER_ROUTING_KEY CELERY_QUEUES
    CELERY_AMQP_PUBLISHER_ROUTING_KEY CELERY_DEFAULT_ROUTING_KEY
  • The celery.task.rest module has been removed, use celery.task.http instead (as scheduled by the deprecation timeline).

  • It’s no longer allowed to skip the class name in loader names. (as scheduled by the deprecation timeline):

    Assuming the implicit Loader class name is no longer supported, if you use e.g.:

    CELERY_LOADER = "myapp.loaders"
    

    You need to include the loader class name, like this:

    CELERY_LOADER = "myapp.loaders.Loader"
    
  • CELERY_TASK_RESULT_EXPIRES now defaults to 1 day.

    Previous default setting was to expire in 5 days.

  • AMQP backend: Don’t use different values for auto_delete.

    This bug became visible with RabbitMQ 1.8.0, which no longer allows conflicting declarations for the auto_delete and durable settings.

    If you’ve already used celery with this backend chances are you have to delete the previous declaration:

    $ camqadm exchange.delete celeryresults
  • Now uses pickle instead of cPickle on Python versions <= 2.5

    cPikle is broken in Python <= 2.5.

    It unsafely and incorrectly uses relative instead of absolute imports, so e.g:

    exceptions.KeyError
    

    becomes:

    celery.exceptions.KeyError
    

    Your best choice is to upgrade to Python 2.6, as while the pure pickle version has worse performance, it is the only safe option for older Python versions.

News

  • celeryev: Curses Celery Monitor and Event Viewer.

    This is a simple monitor allowing you to see what tasks are executing in real-time and investigate tracebacks and results of ready tasks. It also enables you to set new rate limits and revoke tasks.

    Screenshot:

    http://celeryproject.org/img/celeryevshotsm.jpg

    If you run celeryev with the -d switch it will act as an event dumper, simply dumping the events it receives to standard out:

    $ celeryev -d
    -> celeryev: starting capture...
    casper.local [2010-06-04 10:42:07.020000] heartbeat
    casper.local [2010-06-04 10:42:14.750000] task received:
        tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={}
        eta=2010-06-04T10:42:16.669290, retries=0
    casper.local [2010-06-04 10:42:17.230000] task started
        tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={}
    casper.local [2010-06-04 10:42:17.960000] task succeeded:
        tasks.add(61a68756-27f4-4879-b816-3cf815672b0e)
        args=[2, 2] kwargs={} result=4, runtime=0.782663106918
    
    The fields here are, in order: *sender hostname*, *timestamp*, *event type* and
    *additional event fields*.
  • AMQP result backend: Now supports .ready(), .successful(), .result, .status, and even responds to changes in task state

  • New user guides:

  • celeryd: Standard out/error is now being redirected to the logfile.

  • billiard has been moved back to the celery repository.

    Module name celery equivalent
    billiard.pool celery.concurrency.processes.pool
    billiard.serialization celery.serialization
    billiard.utils.functional celery.utils.functional

    The billiard distribution may be maintained, depending on interest.

  • now depends on carrot >= 0.10.5

  • now depends on pyparsing

  • celeryd: Added --purge as an alias to --discard.

  • celeryd: Ctrl+C (SIGINT) once does warm shutdown, hitting Ctrl+C twice forces termination.

  • Added support for using complex crontab-expressions in periodic tasks. For example, you can now use:

    >>> crontab(minute="*/15")
    

    or even:

    >>> crontab(minute="*/30", hour="8-17,1-2", day_of_week="thu-fri")
    

    See Periodic Tasks.

  • celeryd: Now waits for available pool processes before applying new tasks to the pool.

    This means it doesn’t have to wait for dozens of tasks to finish at shutdown because it has applied prefetched tasks without having any pool processes available to immediately accept them.

    See http://github.com/ask/celery/issues/closed#issue/122

  • New built-in way to do task callbacks using subtask.

    See Sets of tasks, Subtasks and Callbacks for more information.

  • TaskSets can now contain several types of tasks.

    TaskSet has been refactored to use a new syntax, please see Sets of tasks, Subtasks and Callbacks for more information.

    The previous syntax is still supported, but will be deprecated in version 1.4.

  • TaskSet failed() result was incorrect.

  • Now creates different loggers per task class.

  • Missing queue definitions are now created automatically.

    You can disable this using the CELERY_CREATE_MISSING_QUEUES setting.

    The missing queues are created with the following options:

    CELERY_QUEUES[name] = {"exchange": name,
                           "exchange_type": "direct",
                           "routing_key": "name}

    This feature is added for easily setting up routing using the -Q option to celeryd:

    $ celeryd -Q video, image

    See the new routing section of the userguide for more information: Routing Tasks.

  • New Task option: Task.queue

    If set, message options will be taken from the corresponding entry in CELERY_QUEUES. exchange, exchange_type and routing_key will be ignored

  • Added support for task soft and hard timelimits.

    New settings added:

    • CELERYD_TASK_TIME_LIMIT

      Hard time limit. The worker processing the task will be killed and replaced with a new one when this is exceeded.

    • CELERYD_SOFT_TASK_TIME_LIMIT

      Soft time limit. The celery.exceptions.SoftTimeLimitExceeded exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes.

    New command line arguments to celeryd added: --time-limit and --soft-time-limit.

    What’s left?

    This won’t work on platforms not supporting signals (and specifically the SIGUSR1 signal) yet. So an alternative the ability to disable the feature alltogether on nonconforming platforms must be implemented.

    Also when the hard time limit is exceeded, the task result should be a TimeLimitExceeded exception.

  • Test suite is now passing without a running broker, using the carrot in-memory backend.

  • Log output is now available in colors.

    Log level Color
    DEBUG Blue
    WARNING Yellow
    CRITICAL Magenta
    ERROR Red

    This is only enabled when the log output is a tty. You can explicitly enable/disable this feature using the CELERYD_LOG_COLOR setting.

  • Added support for task router classes (like the django multidb routers)

    • New setting: CELERY_ROUTES

    This is a single, or a list of routers to traverse when sending tasks. Dicts in this list converts to a celery.routes.MapRoute instance.

    Examples:

    >>> CELERY_ROUTES = {"celery.ping": "default",
                         "mytasks.add": "cpu-bound",
                         "video.encode": {
                             "queue": "video",
                             "exchange": "media"
                             "routing_key": "media.video.encode"}}
    
    >>> CELERY_ROUTES = ("myapp.tasks.Router",
                         {"celery.ping": "default})
    

    Where myapp.tasks.Router could be:

    class Router(object):
    
        def route_for_task(self, task, args=None, kwargs=None):
            if task == "celery.ping":
                return "default"
    

    route_for_task may return a string or a dict. A string then means it’s a queue name in CELERY_QUEUES, a dict means it’s a custom route.

    When sending tasks, the routers are consulted in order. The first router that doesn’t return None is the route to use. The message options is then merged with the found route settings, where the routers settings have priority.

    Example if apply_async() has these arguments:

    >>> Task.apply_async(immediate=False, exchange="video",
    ...                  routing_key="video.compress")
    

    and a router returns:

    {"immediate": True,
     "exchange": "urgent"}
    

    the final message options will be:

    immediate=True, exchange="urgent", routing_key="video.compress"
    

    (and any default message options defined in the Task class)

  • New Task handler called after the task returns: after_return().

  • ExceptionInfo now passed to

    on_retry()/ on_failure() as einfo keyword argument.

  • celeryd: Added CELERYD_MAX_TASKS_PER_CHILD / --maxtasksperchild

    Defines the maximum number of tasks a pool worker can process before the process is terminated and replaced by a new one.

  • Revoked tasks now marked with state REVOKED, and result.get() will now raise TaskRevokedError.

  • celery.task.control.ping() now works as expected.

  • apply(throw=True) / CELERY_EAGER_PROPAGATES_EXCEPTIONS: Makes eager execution re-raise task errors.

  • New signal: worker_process_init: Sent inside the pool worker process at init.

  • celeryd -Q option: Ability to specifiy list of queues to use, disabling other configured queues.

    For example, if CELERY_QUEUES defines four queues: image, video, data and default, the following command would make celeryd only consume from the image and video queues:

    $ celeryd -Q image,video
  • celeryd: New return value for the revoke control command:

    Now returns:

    {"ok": "task $id revoked"}
    

    instead of True.

  • celeryd: Can now enable/disable events using remote control

    Example usage:

    >>> from celery.task.control import broadcast
    >>> broadcast("enable_events")
    >>> broadcast("disable_events")
    
  • Removed top-level tests directory. Test config now in celery.tests.config

    This means running the unittests doesn’t require any special setup. celery/tests/__init__ now configures the CELERY_CONFIG_MODULE and CELERY_LOADER, so when nosetests imports that, the unit test environment is all set up.

    Before you run the tests you need to install the test requirements:

    $ pip install -r contrib/requirements/test.txt

    Running all tests:

    $ nosetests

    Specifying the tests to run:

    $ nosetests celery.tests.test_task

    Producing HTML coverage:

    $ nosetests --with-coverage3

    The coverage output is then located in celery/tests/cover/index.html.

  • celeryd: New option --version: Dump version info and exit.

  • celeryd-multi: Tool for shell scripts to start multiple workers.

Some examples:

# Advanced example with 10 workers:
#   * Three of the workers processes the images and video queue
#   * Two of the workers processes the data queue with loglevel DEBUG
#   * the rest processes the default' queue.
$ celeryd-multi start 10 -l INFO -Q:1-3 images,video -Q:4,5:data
    -Q default -L:4,5 DEBUG

# get commands to start 10 workers, with 3 processes each
$ celeryd-multi start 3 -c 3
celeryd -n celeryd1.myhost -c 3
celeryd -n celeryd2.myhost -c 3
celeryd- n celeryd3.myhost -c 3

# start 3 named workers
$ celeryd-multi start image video data -c 3
celeryd -n image.myhost -c 3
celeryd -n video.myhost -c 3
celeryd -n data.myhost -c 3

# specify custom hostname
$ celeryd-multi start 2 -n worker.example.com -c 3
celeryd -n celeryd1.worker.example.com -c 3
celeryd -n celeryd2.worker.example.com -c 3

# Additionl options are added to each celeryd',
# but you can also modify the options for ranges of or single workers

# 3 workers: Two with 3 processes, and one with 10 processes.
$ celeryd-multi start 3 -c 3 -c:1 10
celeryd -n celeryd1.myhost -c 10
celeryd -n celeryd2.myhost -c 3
celeryd -n celeryd3.myhost -c 3

# can also specify options for named workers
$ celeryd-multi start image video data -c 3 -c:image 10
celeryd -n image.myhost -c 10
celeryd -n video.myhost -c 3
celeryd -n data.myhost -c 3

# ranges and lists of workers in options is also allowed:
# (-c:1-3 can also be written as -c:1,2,3)
$ celeryd-multi start 5 -c 3  -c:1-3 10
celeryd-multi -n celeryd1.myhost -c 10
celeryd-multi -n celeryd2.myhost -c 10
celeryd-multi -n celeryd3.myhost -c 10
celeryd-multi -n celeryd4.myhost -c 3
celeryd-multi -n celeryd5.myhost -c 3

# lists also works with named workers
$ celeryd-multi start foo bar baz xuzzy -c 3 -c:foo,bar,baz 10
celeryd-multi -n foo.myhost -c 10
celeryd-multi -n bar.myhost -c 10
celeryd-multi -n baz.myhost -c 10
celeryd-multi -n xuzzy.myhost -c 3
  • The worker now calls the result backends process_cleanup method after task execution instead of before.
  • AMQP result backend now supports Pika.

1.0.6

release-date:2010-06-30 09:57 A.M CEST
  • RabbitMQ 1.8.0 has extended their exchange equivalence tests to include auto_delete and durable. This broke the AMQP backend.

    If you’ve already used the AMQP backend this means you have to delete the previous definitions:

    $ camqadm exchange.delete celeryresults

    or:

    $ python manage.py camqadm exchange.delete celeryresults

1.0.5

release-date:2010-06-01 02:36 P.M CEST

Critical

  • SIGINT/Ctrl+C killed the pool, abrubtly terminating the currently executing tasks.

    Fixed by making the pool worker processes ignore SIGINT.

  • Should not close the consumers before the pool is terminated, just cancel the consumers.

  • Now depends on billiard >= 0.3.1

  • celeryd: Previously exceptions raised by worker components could stall startup, now it correctly logs the exceptions and shuts down.

  • celeryd: Prefetch counts was set too late. QoS is now set as early as possible, so celeryd can’t slurp in all the messages at start-up.

Changes

  • celery.contrib.abortable: Abortable tasks.

    Tasks that defines steps of execution, the task can then be aborted after each step has completed.

  • EventDispatcher: No longer creates AMQP channel if events are disabled

  • Added required RPM package names under [bdist_rpm] section, to support building RPMs from the sources using setup.py

  • Running unittests: NOSE_VERBOSE environment var now enables verbose output from Nose.

  • celery.execute.apply(): Pass logfile/loglevel arguments as task kwargs.

  • celery.execute.apply: Should return exception, not ExceptionInfo on error.

  • Added new entries to the FAQs:

    • Should I use retry or acks_late?
    • Can I execute a task by name?

1.0.4

release-date:2010-05-31 09:54 A.M CEST
  • Changlog merged with 1.0.5 as the release was never announced.

1.0.3

release-date:2010-05-15 03:00 P.M CEST

Important notes

  • Messages are now acked just before the task function is executed.

    This is the behavior we’ve wanted all along, but couldn’t have because of limitations in the multiprocessing module. The previous behavior was not good, and the situation worsened with the release of 1.0.1, so this change will definitely improve reliability, performance and operations in general.

    For more information please see http://bit.ly/9hom6T

  • Database result backend: result now explicitly sets null=True as django-picklefield version 0.1.5 changed the default behavior right under our noses :(

    See: http://bit.ly/d5OwMr

    This means those who created their celery tables (via syncdb or celeryinit) with picklefield versions >= 0.1.5 has to alter their tables to allow the result field to be NULL manually.

    MySQL:

    ALTER TABLE celery_taskmeta MODIFY result TEXT NULL

    PostgreSQL:

    ALTER TABLE celery_taskmeta ALTER COLUMN result DROP NOT NULL
  • Removed Task.rate_limit_queue_type, as it was not really useful and made it harder to refactor some parts.

  • Now depends on carrot >= 0.10.4

  • Now depends on billiard >= 0.3.0

News

  • AMQP backend: Added timeout support for result.get() / result.wait().

  • New task option: Task.acks_late (default: CELERY_ACKS_LATE)

    Late ack means the task messages will be acknowledged after the task has been executed, not just before, which is the default behavior.

    Note that this means the tasks may be executed twice if the worker crashes in the middle of their execution. Not acceptable for most applications, but desirable for others.

  • Added crontab-like scheduling to periodic tasks.

    Like a cron job, you can specify units of time of when you would like the task to execute. While not a full implementation of cron’s features, it should provide a fair degree of common scheduling needs.

    You can specify a minute (0-59), an hour (0-23), and/or a day of the week (0-6 where 0 is Sunday, or by names: sun, mon, tue, wed, thu, fri, sat).

    Examples:

    from celery.task.schedules import crontab
    from celery.decorators import periodic_task
    
    @periodic_task(run_every=crontab(hour=7, minute=30))
    def every_morning():
        print("Runs every morning at 7:30a.m")
    
    @periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon"))
    def every_monday_morning():
        print("Run every monday morning at 7:30a.m")
    
    @periodic_task(run_every=crontab(minutes=30))
    def every_hour():
        print("Runs every hour on the clock. e.g. 1:30, 2:30, 3:30 etc.")
    

    Note that this a late addition. While we have unittests, due to the nature of this feature we haven’t been able to completely test this in practice, so consider this experimental.

  • TaskPool.apply_async: Now supports the accept_callback argument.

  • apply_async: Now raises ValueError if task args is not a list, or kwargs is not a tuple (http://github.com/ask/celery/issues/issue/95).

  • Task.max_retries can now be None, which means it will retry forever.

  • Celerybeat: Now reuses the same connection when publishing large sets of tasks.

  • Modified the task locking example in the documentation to use cache.add for atomic locking.

  • Added experimental support for a started status on tasks.

    If Task.track_started is enabled the task will report its status as “started” when the task is executed by a worker.

    The default value is False as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a “started” status can be useful for when there are long running tasks and there is a need to report which task is currently running.

    The global default can be overridden by the CELERY_TRACK_STARTED setting.

  • User Guide: New section Tips and Best Practices.

    Contributions welcome!

Remote control commands

  • Remote control commands can now send replies back to the caller.

    Existing commands has been improved to send replies, and the client interface in celery.task.control has new keyword arguments: reply, timeout and limit. Where reply means it will wait for replies, timeout is the time in seconds to stop waiting for replies, and limit is the maximum number of replies to get.

    By default, it will wait for as many replies as possible for one second.

    • rate_limit(task_name, destination=all, reply=False, timeout=1, limit=0)

      Worker returns {"ok": message} on success, or {"failure": message} on failure.

      >>> from celery.task.control import rate_limit
      >>> rate_limit("tasks.add", "10/s", reply=True)
      [{'worker1': {'ok': 'new rate limit set successfully'}},
       {'worker2': {'ok': 'new rate limit set successfully'}}]
      
    • ping(destination=all, reply=False, timeout=1, limit=0)

      Worker returns the simple message "pong".

      >>> from celery.task.control import ping
      >>> ping(reply=True)
      [{'worker1': 'pong'},
       {'worker2': 'pong'},
      
    • revoke(destination=all, reply=False, timeout=1, limit=0)

      Worker simply returns True.

      >>> from celery.task.control import revoke
      >>> revoke("419e46eb-cf6a-4271-86a8-442b7124132c", reply=True)
      [{'worker1': True},
       {'worker2'; True}]
      
  • You can now add your own remote control commands!

    Remote control commands are functions registered in the command registry. Registering a command is done using celery.worker.control.Panel.register():

    from celery.task.control import Panel
    
    @Panel.register
    def reset_broker_connection(panel, **kwargs):
        panel.listener.reset_connection()
        return {"ok": "connection re-established"}
    

    With this module imported in the worker, you can launch the command using celery.task.control.broadcast:

    >>> from celery.task.control import broadcast
    >>> broadcast("reset_broker_connection", reply=True)
    [{'worker1': {'ok': 'connection re-established'},
     {'worker2': {'ok': 'connection re-established'}}]
    

    TIP You can choose the worker(s) to receive the command by using the destination argument:

    >>> broadcast("reset_broker_connection", destination=["worker1"])
    [{'worker1': {'ok': 'connection re-established'}]
    
  • New remote control command: dump_reserved

    Dumps tasks reserved by the worker, waiting to be executed:

    >>> from celery.task.control import broadcast
    >>> broadcast("dump_reserved", reply=True)
    [{'myworker1': [<TaskRequest ....>]}]
    
  • New remote control command: dump_schedule

    Dumps the workers currently registered ETA schedule. These are tasks with an eta (or countdown) argument waiting to be executed by the worker.

    >>> from celery.task.control import broadcast
    >>> broadcast("dump_schedule", reply=True)
    [{'w1': []},
     {'w3': []},
     {'w2': ['0. 2010-05-12 11:06:00 pri0 <TaskRequest
                {name:"opalfeeds.tasks.refresh_feed_slice",
                 id:"95b45760-4e73-4ce8-8eac-f100aa80273a",
                 args:"(<Feeds freq_max:3600 freq_min:60
                               start:2184.0 stop:3276.0>,)",
                 kwargs:"{'page': 2}"}>']},
     {'w4': ['0. 2010-05-12 11:00:00 pri0 <TaskRequest
                {name:"opalfeeds.tasks.refresh_feed_slice",
                 id:"c053480b-58fb-422f-ae68-8d30a464edfe",
                 args:"(<Feeds freq_max:3600 freq_min:60
                               start:1092.0 stop:2184.0>,)",
                 kwargs:"{\'page\': 1}"}>',
            '1. 2010-05-12 11:12:00 pri0 <TaskRequest
                {name:"opalfeeds.tasks.refresh_feed_slice",
                 id:"ab8bc59e-6cf8-44b8-88d0-f1af57789758",
                 args:"(<Feeds freq_max:3600 freq_min:60
                               start:3276.0 stop:4365>,)",
                 kwargs:"{\'page\': 3}"}>']}]
    

Fixes

  • Mediator thread no longer blocks for more than 1 second.

    With rate limits enabled and when there was a lot of remaining time, the mediator thread could block shutdown (and potentially block other jobs from coming in).

  • Remote rate limits was not properly applied (http://github.com/ask/celery/issues/issue/98)

  • Now handles exceptions with unicode messages correctly in TaskRequest.on_failure.

  • Database backend: TaskMeta.result: default value should be None not empty string.

1.0.2

release-date:2010-03-31 12:50 P.M CET
  • Deprecated: CELERY_BACKEND, please use CELERY_RESULT_BACKEND instead.

  • We now use a custom logger in tasks. This logger supports task magic keyword arguments in formats.

    The default format for tasks (CELERYD_TASK_LOG_FORMAT) now includes the id and the name of tasks so the origin of task log messages can easily be traced.

    Example output::
    [2010-03-25 13:11:20,317: INFO/PoolWorker-1]

    [tasks.add(a6e1c5ad-60d9-42a0-8b24-9e39363125a4)] Hello from add

    To revert to the previous behavior you can set:

    CELERYD_TASK_LOG_FORMAT = """
        [%(asctime)s: %(levelname)s/%(processName)s] %(message)s
    """.strip()
    
  • Unittests: Don’t disable the django test database teardown, instead fixed the underlying issue which was caused by modifications to the DATABASE_NAME setting (http://github.com/ask/celery/issues/82).

  • Django Loader: New config CELERY_DB_REUSE_MAX (max number of tasks to reuse the same database connection)

    The default is to use a new connection for every task. We would very much like to reuse the connection, but a safe number of reuses is not known, and we don’t have any way to handle the errors that might happen, which may even be database dependent.

    See: http://bit.ly/94fwdd

  • celeryd: The worker components are now configurable: CELERYD_POOL, CELERYD_LISTENER, CELERYD_MEDIATOR, and CELERYD_ETA_SCHEDULER.

    The default configuration is as follows:

    CELERYD_POOL = "celery.concurrency.processes.TaskPool"
    CELERYD_MEDIATOR = "celery.worker.controllers.Mediator"
    CELERYD_ETA_SCHEDULER = "celery.worker.controllers.ScheduleController"
    CELERYD_LISTENER = "celery.worker.listener.CarrotListener"
    

    The CELERYD_POOL setting makes it easy to swap out the multiprocessing pool with a threaded pool, or how about a twisted/eventlet pool?

    Consider the competition for the first pool plug-in started!

  • Debian init scripts: Use -a not && (http://github.com/ask/celery/issues/82).

  • Debian init scripts: Now always preserves $CELERYD_OPTS from the /etc/default/celeryd and /etc/default/celerybeat.

  • celery.beat.Scheduler: Fixed a bug where the schedule was not properly flushed to disk if the schedule had not been properly initialized.

  • celerybeat: Now syncs the schedule to disk when receiving the SIGTERM and SIGINT signals.

  • Control commands: Make sure keywords arguments are not in unicode.

  • ETA scheduler: Was missing a logger object, so the scheduler crashed when trying to log that a task had been revoked.

  • management.commands.camqadm: Fixed typo camqpadm -> camqadm (http://github.com/ask/celery/issues/83).

  • PeriodicTask.delta_resolution: Was not working for days and hours, now fixed by rounding to the nearest day/hour.

  • Fixed a potential infinite loop in BaseAsyncResult.__eq__, although there is no evidence that it has ever been triggered.

  • celeryd: Now handles messages with encoding problems by acking them and emitting an error message.

1.0.1

release-date:2010-02-24 07:05 P.M CET
  • Tasks are now acknowledged early instead of late.

    This is done because messages can only be acked within the same connection channel, so if the connection is lost we would have to refetch the message again to acknowledge it.

    This might or might not affect you, but mostly those running tasks with a really long execution time are affected, as all tasks that has made it all the way into the pool needs to be executed before the worker can safely terminate (this is at most the number of pool workers, multiplied by the CELERYD_PREFETCH_MULTIPLIER setting.)

    We multiply the prefetch count by default to increase the performance at times with bursts of tasks with a short execution time. If this doesn’t apply to your use case, you should be able to set the prefetch multiplier to zero, without sacrificing performance.

    Please note that a patch to multiprocessing is currently being worked on, this patch would enable us to use a better solution, and is scheduled for inclusion in the 2.0.0 release.

  • celeryd now shutdowns cleanly when receving the TERM signal.

  • celeryd now does a cold shutdown if the INT signal is received (Ctrl+C), this means it tries to terminate as soon as possible.

  • Caching of results now moved to the base backend classes, so no need to implement this functionality in the base classes.

  • Caches are now also limited in size, so their memory usage doesn’t grow out of control.

    You can set the maximum number of results the cache can hold using the CELERY_MAX_CACHED_RESULTS setting (the default is five thousand results). In addition, you can refetch already retrieved results using backend.reload_task_result + backend.reload_taskset_result (that’s for those who want to send results incrementally).

  • celeryd now works on Windows again.

    Note that if running with Django, you can’t use project.settings as the settings module name, but the following should work:

    $ python manage.py celeryd --settings=settings
  • Execution: .messaging.TaskPublisher.send_task now incorporates all the functionality apply_async previously did.

    Like converting countdowns to eta, so celery.execute.apply_async() is now simply a convenient front-end to celery.messaging.TaskPublisher.send_task(), using the task classes default options.

    Also celery.execute.send_task() has been introduced, which can apply tasks using just the task name (useful if the client does not have the destination task in its task registry).

    Example:

    >>> from celery.execute import send_task
    >>> result = send_task("celery.ping", args=[], kwargs={})
    >>> result.get()
    'pong'
    
  • camqadm: This is a new utility for command line access to the AMQP API.

    Excellent for deleting queues/bindings/exchanges, experimentation and testing:

    $ camqadm
    1> help

    Gives an interactive shell, type help for a list of commands.

    When using Django, use the management command instead:

    $ python manage.py camqadm
    1> help
  • Redis result backend: To conform to recent Redis API changes, the following settings has been deprecated:

    • REDIS_TIMEOUT
    • REDIS_CONNECT_RETRY

    These will emit a DeprecationWarning if used.

    A REDIS_PASSWORD setting has been added, so you can use the new simple authentication mechanism in Redis.

  • The redis result backend no longer calls SAVE when disconnecting, as this is apparently better handled by Redis itself.

  • If settings.DEBUG is on, celeryd now warns about the possible memory leak it can result in.

  • The ETA scheduler now sleeps at most two seconds between iterations.

  • The ETA scheduler now deletes any revoked tasks it might encounter.

    As revokes are not yet persistent, this is done to make sure the task is revoked even though it’s currently being hold because its eta is e.g. a week into the future.

  • The task_id argument is now respected even if the task is executed eagerly (either using apply, or CELERY_ALWAYS_EAGER).

  • The internal queues are now cleared if the connection is reset.

  • New magic keyword argument: delivery_info.

    Used by retry() to resend the task to its original destination using the same exchange/routing_key.

  • Events: Fields was not passed by .send() (fixes the uuid keyerrors in celerymon)

  • Added --schedule/-s option to celeryd, so it is possible to specify a custom schedule filename when using an embedded celerybeat server (the -B/--beat) option.

  • Better Python 2.4 compatibility. The test suite now passes.

  • task decorators: Now preserve docstring as cls.__doc__, (was previously copied to cls.run.__doc__)

  • The testproj directory has been renamed to tests and we’re now using nose + django-nose for test discovery, and unittest2 for test cases.

  • New pip requirements files available in contrib/requirements.

  • TaskPublisher: Declarations are now done once (per process).

  • Added Task.delivery_mode and the CELERY_DEFAULT_DELIVERY_MODE setting.

    These can be used to mark messages non-persistent (i.e. so they are lost if the broker is restarted).

  • Now have our own ImproperlyConfigured exception, instead of using the Django one.

  • Improvements to the debian init scripts: Shows an error if the program is not executeable. Does not modify CELERYD when using django with virtualenv.

1.0.0

release-date:2010-02-10 04:00 P.M CET

Backward incompatible changes

  • Celery does not support detaching anymore, so you have to use the tools available on your platform, or something like supervisord to make celeryd/celerybeat/celerymon into background processes.

    We’ve had too many problems with celeryd daemonizing itself, so it was decided it has to be removed. Example startup scripts has been added to contrib/:

    • Debian, Ubuntu, (start-stop-daemon)

      contrib/debian/init.d/celeryd contrib/debian/init.d/celerybeat

    • Mac OS X launchd

      contrib/mac/org.celeryq.celeryd.plist contrib/mac/org.celeryq.celerybeat.plist contrib/mac/org.celeryq.celerymon.plist

    • Supervisord (http://supervisord.org)

      contrib/supervisord/supervisord.conf

    In addition to --detach, the following program arguments has been removed: --uid, --gid, --workdir, --chroot, --pidfile, --umask. All good daemonization tools should support equivalent functionality, so don’t worry.

    Also the following configuration keys has been removed: CELERYD_PID_FILE, CELERYBEAT_PID_FILE, CELERYMON_PID_FILE.

  • Default celeryd loglevel is now WARN, to enable the previous log level start celeryd with --loglevel=INFO.

  • Tasks are automatically registered.

    This means you no longer have to register your tasks manually. You don’t have to change your old code right away, as it doesn’t matter if a task is registered twice.

    If you don’t want your task to be automatically registered you can set the abstract attribute

    class MyTask(Task):
        abstract = True
    

    By using abstract only tasks subclassing this task will be automatically registered (this works like the Django ORM).

    If you don’t want subclasses to be registered either, you can set the autoregister attribute to False.

    Incidentally, this change also fixes the problems with automatic name assignment and relative imports. So you also don’t have to specify a task name anymore if you use relative imports.

  • You can no longer use regular functions as tasks.

    This change was added because it makes the internals a lot more clean and simple. However, you can now turn functions into tasks by using the @task decorator:

    from celery.decorators import task
    
    @task
    def add(x, y):
        return x + y
    

    See the User Guide: Tasks for more information.

  • The periodic task system has been rewritten to a centralized solution.

    This means celeryd no longer schedules periodic tasks by default, but a new daemon has been introduced: celerybeat.

    To launch the periodic task scheduler you have to run celerybeat:

    $ celerybeat

    Make sure this is running on one server only, if you run it twice, all periodic tasks will also be executed twice.

    If you only have one worker server you can embed it into celeryd like this:

    $ celeryd --beat # Embed celerybeat in celeryd.
  • The supervisor has been removed.

    This means the -S and --supervised options to celeryd is no longer supported. Please use something like http://supervisord.org instead.

  • TaskSet.join has been removed, use TaskSetResult.join instead.

  • The task status "DONE" has been renamed to “SUCCESS”.

  • AsyncResult.is_done has been removed, use AsyncResult.successful instead.

  • The worker no longer stores errors if Task.ignore_result is set, to revert to the previous behaviour set CELERY_STORE_ERRORS_EVEN_IF_IGNORED to True.

  • The staticstics functionality has been removed in favor of events, so the -S and --statistics switches has been removed.

  • The module celery.task.strategy has been removed.

  • celery.discovery has been removed, and it’s autodiscover function is now in celery.loaders.djangoapp. Reason: Internal API.

  • CELERY_LOADER now needs loader class name in addition to module name,

    E.g. where you previously had: "celery.loaders.default", you now need "celery.loaders.default.Loader", using the previous syntax will result in a DeprecationWarning.

  • Detecting the loader is now lazy, and so is not done when importing celery.loaders.

    To make this happen celery.loaders.settings has been renamed to load_settings and is now a function returning the settings object. celery.loaders.current_loader is now also a function, returning the current loader.

    So:

    loader = current_loader
    

    needs to be changed to:

    loader = current_loader()
    

Deprecations

  • The following configuration variables has been renamed and will be deprecated in v2.0:

    • CELERYD_DAEMON_LOG_FORMAT -> CELERYD_LOG_FORMAT
    • CELERYD_DAEMON_LOG_LEVEL -> CELERYD_LOG_LEVEL
    • CELERY_AMQP_CONNECTION_TIMEOUT -> CELERY_BROKER_CONNECTION_TIMEOUT
    • CELERY_AMQP_CONNECTION_RETRY -> CELERY_BROKER_CONNECTION_RETRY
    • CELERY_AMQP_CONNECTION_MAX_RETRIES -> CELERY_BROKER_CONNECTION_MAX_RETRIES
    • SEND_CELERY_TASK_ERROR_EMAILS -> CELERY_SEND_TASK_ERROR_EMAILS
  • The public api names in celery.conf has also changed to a consistent naming scheme.

  • We now support consuming from an arbitrary number of queues.

    To do this we had to rename the configuration syntax. If you use any of the custom AMQP routing options (queue/exchange/routing_key, etc), you should read the new FAQ entry: http://bit.ly/aiWoH.

    The previous syntax is deprecated and scheduled for removal in v2.0.

  • TaskSet.run has been renamed to TaskSet.apply_async.

    TaskSet.run has now been deprecated, and is scheduled for removal in v2.0.

News

  • Rate limiting support (per task type, or globally).

  • New periodic task system.

  • Automatic registration.

  • New cool task decorator syntax.

  • celeryd now sends events if enabled with the -E argument.

    Excellent for monitoring tools, one is already in the making (http://github.com/ask/celerymon).

    Current events include: worker-heartbeat, task-[received/succeeded/failed/retried], worker-online, worker-offline.

  • You can now delete (revoke) tasks that has already been applied.

  • You can now set the hostname celeryd identifies as using the --hostname argument.

  • Cache backend now respects CELERY_TASK_RESULT_EXPIRES.

  • Message format has been standardized and now uses ISO-8601 format for dates instead of datetime.

  • celeryd now responds to the HUP signal by restarting itself.

  • Periodic tasks are now scheduled on the clock.

    I.e. timedelta(hours=1) means every hour at :00 minutes, not every hour from the server starts. To revert to the previous behaviour you can set PeriodicTask.relative = True.

  • Now supports passing execute options to a TaskSets list of args, e.g.:

    >>> ts = TaskSet(add, [([2, 2], {}, {"countdown": 1}),
    ...                   ([4, 4], {}, {"countdown": 2}),
    ...                   ([8, 8], {}, {"countdown": 3})])
    >>> ts.run()
    
  • Got a 3x performance gain by setting the prefetch count to four times the concurrency, (from an average task round-trip of 0.1s to 0.03s!).

    A new setting has been added: CELERYD_PREFETCH_MULTIPLIER, which is set to 4 by default.

  • Improved support for webhook tasks.

    celery.task.rest is now deprecated, replaced with the new and shiny celery.task.http. With more reflective names, sensible interface, and it’s possible to override the methods used to perform HTTP requests.

  • The results of tasksets are now cached by storing it in the result backend.

Changes

  • Now depends on carrot >= 0.8.1

  • New dependencies: billiard, python-dateutil, django-picklefield

  • No longer depends on python-daemon

  • The uuid distribution is added as a dependency when running Python 2.4.

  • Now remembers the previously detected loader by keeping it in the CELERY_LOADER environment variable.

    This may help on windows where fork emulation is used.

  • ETA no longer sends datetime objects, but uses ISO 8601 date format in a string for better compatibility with other platforms.

  • No longer sends error mails for retried tasks.

  • Task can now override the backend used to store results.

  • Refactored the ExecuteWrapper, apply and CELERY_ALWAYS_EAGER now also executes the task callbacks and signals.

  • Now using a proper scheduler for the tasks with an ETA.

    This means waiting eta tasks are sorted by time, so we don’t have to poll the whole list all the time.

  • Now also imports modules listed in CELERY_IMPORTS when running with django (as documented).

  • Loglevel for stdout/stderr changed from INFO to ERROR

  • ImportErrors are now properly propogated when autodiscovering tasks.

  • You can now use celery.messaging.establish_connection to establish a connection to the broker.

  • When running as a separate service the periodic task scheduler does some smart moves to not poll too regularly.

    If you need faster poll times you can lower the value of CELERYBEAT_MAX_LOOP_INTERVAL.

  • You can now change periodic task intervals at runtime, by making run_every a property, or subclassing PeriodicTask.is_due.

  • The worker now supports control commands enabled through the use of a broadcast queue, you can remotely revoke tasks or set the rate limit for a task type. See celery.task.control.

  • The services now sets informative process names (as shown in ps listings) if the setproctitle module is installed.

  • celery.exceptions.NotRegistered now inherits from KeyError, and TaskRegistry.__getitem__``+``pop raises NotRegistered instead

  • You can set the loader via the CELERY_LOADER environment variable.

  • You can now set CELERY_IGNORE_RESULT to ignore task results by default (if enabled, tasks doesn’t save results or errors to the backend used).

  • celeryd now correctly handles malformed messages by throwing away and acknowledging the message, instead of crashing.

Bugs

  • Fixed a race condition that could happen while storing task results in the database.

Documentation

  • Reference now split into two sections; API reference and internal module reference.

0.8.4

release-date:2010-02-05 01:52 P.M CEST
  • Now emits a warning if the –detach argument is used. –detach should not be used anymore, as it has several not easily fixed bugs related to it. Instead, use something like start-stop-daemon, supervisord or launchd (os x).
  • Make sure logger class is process aware, even if running Python >= 2.6.
  • Error e-mails are not sent anymore when the task is retried.

0.8.3

release-date:2009-12-22 09:43 A.M CEST
  • Fixed a possible race condition that could happen when storing/querying task results using the the database backend.
  • Now has console script entry points in the setup.py file, so tools like buildout will correctly install the programs celerybin and celeryinit.

0.8.2

release-date:2009-11-20 03:40 P.M CEST
  • QOS Prefetch count was not applied properly, as it was set for every message received (which apparently behaves like, “receive one more”), instead of only set when our wanted value cahnged.

0.8.1

release-date:2009-11-16 05:21 P.M CEST

Very important note

This release (with carrot 0.8.0) enables AMQP QoS (quality of service), which means the workers will only receive as many messages as it can handle at a time. As with any release, you should test this version upgrade on your development servers before rolling it out to production!

Important changes

  • If you’re using Python < 2.6 and you use the multiprocessing backport, then multiprocessing version 2.6.2.1 is required.

  • All AMQP_* settings has been renamed to BROKER_*, and in addition AMQP_SERVER has been renamed to BROKER_HOST, so before where you had:

    AMQP_SERVER = "localhost"
    AMQP_PORT = 5678
    AMQP_USER = "myuser"
    AMQP_PASSWORD = "mypassword"
    AMQP_VHOST = "celery"
    

    You need to change that to:

    BROKER_HOST = "localhost"
    BROKER_PORT = 5678
    BROKER_USER = "myuser"
    BROKER_PASSWORD = "mypassword"
    BROKER_VHOST = "celery"
    
  • Custom carrot backends now need to include the backend class name, so before where you had:

    CARROT_BACKEND = "mycustom.backend.module"
    

    you need to change it to:

    CARROT_BACKEND = "mycustom.backend.module.Backend"
    

    where Backend is the class name. This is probably "Backend", as that was the previously implied name.

  • New version requirement for carrot: 0.8.0

Changes

  • Incorporated the multiprocessing backport patch that fixes the processName error.
  • Ignore the result of PeriodicTask’s by default.
  • Added a Redis result store backend
  • Allow /etc/default/celeryd to define additional options for the celeryd init script.
  • MongoDB periodic tasks issue when using different time than UTC fixed.
  • Windows specific: Negate test for available os.fork (thanks miracle2k)
  • Now tried to handle broken PID files.
  • Added a Django test runner to contrib that sets CELERY_ALWAYS_EAGER = True for testing with the database backend
  • Added a CELERY_CACHE_BACKEND setting for using something other than the django-global cache backend.
  • Use custom implementation of functools.partial (curry) for Python 2.4 support (Probably still problems with running on 2.4, but it will eventually be supported)
  • Prepare exception to pickle when saving RETRY status for all backends.
  • SQLite no concurrency limit should only be effective if the db backend is used.

0.8.0

release-date:2009-09-22 03:06 P.M CEST

Backward incompatible changes

  • Add traceback to result value on failure.

    NOTE If you use the database backend you have to re-create the database table celery_taskmeta.

    Contact the mailinglist or IRC channel listed in README for help doing this.

  • Database tables are now only created if the database backend is used,

    so if you change back to the database backend at some point, be sure to initialize tables (django: syncdb, python: celeryinit). (Note: This is only the case when using Django 1.1 or higher)

  • Now depends on carrot version 0.6.0.

  • Now depends on python-daemon 1.4.8

Important changes

  • Celery can now be used in pure Python (outside of a Django project).

    This means celery is no longer Django specific.

    For more information see the FAQ entry Can I use celery without Django?.

  • We now have an AMQP result store backend.

    It uses messages to publish task return value and status. And it’s incredibly fast!

    See http://github.com/ask/celery/issues/closed#issue/6 for more info!

  • AMQP QoS (prefetch count) implemented:

    This to not receive more messages than we can handle.

  • Now redirects stdout/stderr to the celeryd logfile when detached

  • Now uses inspect.getargspec to only pass default arguments

    the task supports.

  • Add Task.on_success, .on_retry, .on_failure handlers
    See celery.task.base.Task.on_success(),
    celery.task.base.Task.on_retry(),

    celery.task.base.Task.on_failure(),

  • celery.utils.gen_unique_id: Workaround for

    http://bugs.python.org/issue4607

  • You can now customize what happens at worker start, at process init, etc

    by creating your own loaders. (see celery.loaders.default, celery.loaders.djangoapp, celery.loaders.)

  • Support for multiple AMQP exchanges and queues.

    This feature misses documentation and tests, so anyone interested is encouraged to improve this situation.

  • celeryd now survives a restart of the AMQP server!

    Automatically re-establish AMQP broker connection if it’s lost.

    New settings:

    • AMQP_CONNECTION_RETRY

      Set to True to enable connection retries.

    • AMQP_CONNECTION_MAX_RETRIES.

      Maximum number of restarts before we give up. Default: 100.

News

  • Fix an incompatibility between python-daemon and multiprocessing,

    which resulted in the [Errno 10] No child processes problem when detaching.

  • Fixed a possible DjangoUnicodeDecodeError being raised when saving pickled

    data to Django’s memcached cache backend.

  • Better Windows compatibility.

  • New version of the pickled field (taken from

    http://www.djangosnippets.org/snippets/513/)

  • New signals introduced: task_sent, task_prerun and

    task_postrun, see celery.signals for more information.

  • TaskSetResult.join caused TypeError when timeout=None.

    Thanks Jerzy Kozera. Closes #31

  • views.apply should return HttpResponse instance.

    Thanks to Jerzy Kozera. Closes #32

  • PeriodicTask: Save conversion of run_every from int

    to timedelta to the class attribute instead of on the instance.

  • Exceptions has been moved to celery.exceptions, but are still

    available in the previous module.

  • Try to rollback transaction and retry saving result if an error happens

    while setting task status with the database backend.

  • jail() refactored into celery.execute.ExecuteWrapper.

  • views.apply now correctly sets mimetype to “application/json”

  • views.task_status now returns exception if status is RETRY

  • views.task_status now returns traceback if status is “FAILURE”

    or “RETRY”

  • Documented default task arguments.

  • Add a sensible __repr__ to ExceptionInfo for easier debugging

  • Fix documentation typo .. import map -> .. import dmap.

    Thanks mikedizon

0.6.0

release-date:2009-08-07 06:54 A.M CET

Important changes

  • Fixed a bug where tasks raising unpickleable exceptions crashed pool

    workers. So if you’ve had pool workers mysteriously dissapearing, or problems with celeryd stopping working, this has been fixed in this version.

  • Fixed a race condition with periodic tasks.

  • The task pool is now supervised, so if a pool worker crashes,

    goes away or stops responding, it is automatically replaced with a new one.

  • Task.name is now automatically generated out of class module+name, e.g.

    "djangotwitter.tasks.UpdateStatusesTask". Very convenient. No idea why we didn’t do this before. Some documentation is updated to not manually specify a task name.

News

  • Tested with Django 1.1

  • New Tutorial: Creating a click counter using carrot and celery

  • Database entries for periodic tasks are now created at celeryd

    startup instead of for each check (which has been a forgotten TODO/XXX in the code for a long time)

  • New settings variable: CELERY_TASK_RESULT_EXPIRES

    Time (in seconds, or a datetime.timedelta object) for when after stored task results are deleted. For the moment this only works for the database backend.

  • celeryd now emits a debug log message for which periodic tasks

    has been launched.

  • The periodic task table is now locked for reading while getting

    periodic task status. (MySQL only so far, seeking patches for other engines)

  • A lot more debugging information is now available by turning on the

    DEBUG loglevel (--loglevel=DEBUG).

  • Functions/methods with a timeout argument now works correctly.

  • New: celery.strategy.even_time_distribution:

    With an iterator yielding task args, kwargs tuples, evenly distribute the processing of its tasks throughout the time window available.

  • Log message Unknown task ignored... now has loglevel ERROR

  • Log message "Got task from broker" is now emitted for all tasks, even if

    the task has an ETA (estimated time of arrival). Also the message now includes the ETA for the task (if any).

  • Acknowledgement now happens in the pool callback. Can’t do ack in the job

    target, as it’s not pickleable (can’t share AMQP connection, etc)).

  • Added note about .delay hanging in README

  • Tests now passing in Django 1.1

  • Fixed discovery to make sure app is in INSTALLED_APPS

  • Previously overrided pool behaviour (process reap, wait until pool worker

    available, etc.) is now handled by multiprocessing.Pool itself.

  • Convert statistics data to unicode for use as kwargs. Thanks Lucy!

0.4.1

release-date:2009-07-02 01:42 P.M CET
  • Fixed a bug with parsing the message options (mandatory, routing_key, priority, immediate)

0.4.0

release-date:2009-07-01 07:29 P.M CET
  • Adds eager execution. celery.execute.apply``|``Task.apply executes the function blocking until the task is done, for API compatiblity it returns an celery.result.EagerResult instance. You can configure celery to always run tasks locally by setting the CELERY_ALWAYS_EAGER setting to True.
  • Now depends on anyjson.
  • 99% coverage using python coverage 3.0.

0.3.20

release-date:2009-06-25 08:42 P.M CET
  • New arguments to apply_async (the advanced version of delay_task), countdown and eta;

    >>> # Run 10 seconds into the future.
    >>> res = apply_async(MyTask, countdown=10);
    
    >>> # Run 1 day from now
    >>> res = apply_async(MyTask, eta=datetime.now() +
    ...                                                                     timedelta(days=1)
    
  • Now unlinks the pidfile if it’s stale.

  • Lots of more tests.

  • Now compatible with carrot >= 0.5.0.

  • IMPORTANT The subtask_ids attribute on the TaskSetResult instance has been removed. To get this information instead use:

    >>> subtask_ids = [subtask.task_id for subtask in ts_res.subtasks]
    
  • Taskset.run() now respects extra message options from the task class.

  • Task: Add attribute ignore_result: Don’t store the status and return value. This means you can’t use the celery.result.AsyncResult to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual.

  • Task: Add attribute disable_error_emails to disable sending error emails for that task.

  • Should now work on Windows (although running in the background won’t work, so using the --detach argument results in an exception being raised.)

  • Added support for statistics for profiling and monitoring. To start sending statistics start celeryd with the --statistics option. Then after a while you can dump the results by running python manage.py celerystats. See celery.monitoring for more information.

  • The celery daemon can now be supervised (i.e it is automatically restarted if it crashes). To use this start celeryd with the --supervised option (or alternatively -S).

  • views.apply: View applying a task. Example:

    http://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&kwarg2=b

    NOTE Use with caution, preferably not make this publicly accessible without ensuring your code is safe!

  • Refactored celery.task. It’s now split into three modules:

    • celery.task

      Contains apply_async, delay_task, discard_all, and task shortcuts, plus imports objects from celery.task.base and celery.task.builtins

    • celery.task.base

      Contains task base classes: Task, PeriodicTask, TaskSet, AsynchronousMapTask, ExecuteRemoteTask.

    • celery.task.builtins

      Built-in tasks: PingTask, DeleteExpiredTaskMetaTask.

0.3.7

release-date:2008-06-16 11:41 P.M CET
  • IMPORTANT Now uses AMQP’s basic.consume instead of basic.get. This means we’re no longer polling the broker for new messages.

  • IMPORTANT Default concurrency limit is now set to the number of CPUs available on the system.

  • IMPORTANT tasks.register: Renamed task_name argument to name, so

    >>> tasks.register(func, task_name="mytask")
    

    has to be replaced with:

    >>> tasks.register(func, name="mytask")
    
  • The daemon now correctly runs if the pidlock is stale.

  • Now compatible with carrot 0.4.5

  • Default AMQP connnection timeout is now 4 seconds.

  • AsyncResult.read() was always returning True.

  • Only use README as long_description if the file exists so easy_install doesn’t break.

  • celery.view: JSON responses now properly set its mime-type.

  • apply_async now has a connection keyword argument so you can re-use the same AMQP connection if you want to execute more than one task.

  • Handle failures in task_status view such that it won’t throw 500s.

  • Fixed typo AMQP_SERVER in documentation to AMQP_HOST.

  • Worker exception e-mails sent to admins now works properly.

  • No longer depends on django, so installing celery won’t affect the preferred Django version installed.

  • Now works with PostgreSQL (psycopg2) again by registering the PickledObject field.

  • celeryd: Added --detach option as an alias to --daemon, and it’s the term used in the documentation from now on.

  • Make sure the pool and periodic task worker thread is terminated properly at exit. (So Ctrl-C works again).

  • Now depends on python-daemon.

  • Removed dependency to simplejson

  • Cache Backend: Re-establishes connection for every task process if the Django cache backend is memcached/libmemcached.

  • Tyrant Backend: Now re-establishes the connection for every task executed.

0.3.3

release-date:2009-06-08 01:07 P.M CET
  • The PeriodicWorkController now sleeps for 1 second between checking for periodic tasks to execute.

0.3.2

release-date:2009-06-08 01:07 P.M CET
  • celeryd: Added option --discard: Discard (delete!) all waiting messages in the queue.
  • celeryd: The --wakeup-after option was not handled as a float.

0.3.1

release-date:2009-06-08 01:07 P.M CET
  • The PeriodicTask` worker is now running in its own thread instead of blocking the TaskController loop.
  • Default QUEUE_WAKEUP_AFTER has been lowered to 0.1 (was 0.3)

0.3.0

release-date:2009-06-08 12:41 P.M CET

NOTE This is a development version, for the stable release, please see versions 0.2.x.

VERY IMPORTANT: Pickle is now the encoder used for serializing task arguments, so be sure to flush your task queue before you upgrade.

  • IMPORTANT TaskSet.run() now returns a celery.result.TaskSetResult instance, which lets you inspect the status and return values of a taskset as it was a single entity.

  • IMPORTANT Celery now depends on carrot >= 0.4.1.

  • The celery daemon now sends task errors to the registered admin e-mails. To turn off this feature, set SEND_CELERY_TASK_ERROR_EMAILS to False in your settings.py. Thanks to Grégoire Cachet.

  • You can now run the celery daemon by using manage.py:

    $ python manage.py celeryd

    Thanks to Grégoire Cachet.

  • Added support for message priorities, topic exchanges, custom routing keys for tasks. This means we have introduced celery.task.apply_async, a new way of executing tasks.

    You can use celery.task.delay and celery.Task.delay like usual, but if you want greater control over the message sent, you want celery.task.apply_async and celery.Task.apply_async.

    This also means the AMQP configuration has changed. Some settings has been renamed, while others are new:

    CELERY_AMQP_EXCHANGE
    CELERY_AMQP_PUBLISHER_ROUTING_KEY
    CELERY_AMQP_CONSUMER_ROUTING_KEY
    CELERY_AMQP_CONSUMER_QUEUE
    CELERY_AMQP_EXCHANGE_TYPE
    

    See the entry Can I send some tasks to only some servers? in the FAQ for more information.

  • Task errors are now logged using loglevel ERROR instead of INFO, and backtraces are dumped. Thanks to Grégoire Cachet.
  • Make every new worker process re-establish it’s Django DB connection, this solving the “MySQL connection died?” exceptions. Thanks to Vitaly Babiy and Jirka Vejrazka.
  • IMOPORTANT Now using pickle to encode task arguments. This means you now can pass complex python objects to tasks as arguments.
  • Removed dependency to yadayada.
  • Added a FAQ, see docs/faq.rst.
  • Now converts any unicode keys in task kwargs to regular strings. Thanks Vitaly Babiy.
  • Renamed the TaskDaemon to WorkController.
  • celery.datastructures.TaskProcessQueue is now renamed to celery.pool.TaskPool.
  • The pool algorithm has been refactored for greater performance and stability.

0.2.0

release-date:2009-05-20 05:14 P.M CET
  • Final release of 0.2.0
  • Compatible with carrot version 0.4.0.
  • Fixes some syntax errors related to fetching results from the database backend.

0.2.0-pre3

release-date:2009-05-20 05:14 P.M CET
  • Internal release. Improved handling of unpickled exceptions, get_result now tries to recreate something looking like the original exception.

0.2.0-pre2

release-date:2009-05-20 01:56 P.M CET
  • Now handles unpickleable exceptions (like the dynimically generated subclasses of django.core.exception.MultipleObjectsReturned).

0.2.0-pre1

release-date:2009-05-20 12:33 P.M CET
  • It’s getting quite stable, with a lot of new features, so bump version to 0.2. This is a pre-release.
  • celery.task.mark_as_read() and celery.task.mark_as_failure() has been removed. Use celery.backends.default_backend.mark_as_read(), and celery.backends.default_backend.mark_as_failure() instead.

0.1.15

release-date:2009-05-19 04:13 P.M CET
  • The celery daemon was leaking AMQP connections, this should be fixed, if you have any problems with too many files open (like emfile errors in rabbit.log, please contact us!

0.1.14

release-date:2009-05-19 01:08 P.M CET
  • Fixed a syntax error in the TaskSet class. (No such variable TimeOutError).

0.1.13

release-date:2009-05-19 12:36 P.M CET
  • Forgot to add yadayada to install requirements.

  • Now deletes all expired task results, not just those marked as done.

  • Able to load the Tokyo Tyrant backend class without django configuration, can specify tyrant settings directly in the class constructor.

  • Improved API documentation

  • Now using the Sphinx documentation system, you can build the html documentation by doing

    $ cd docs
    $ make html

    and the result will be in docs/.build/html.

0.1.12

release-date:2009-05-18 04:38 P.M CET
  • delay_task() etc. now returns celery.task.AsyncResult object, which lets you check the result and any failure that might have happened. It kind of works like the multiprocessing.AsyncResult class returned by multiprocessing.Pool.map_async.

  • Added dmap() and dmap_async(). This works like the multiprocessing.Pool versions except they are tasks distributed to the celery server. Example:

    >>> from celery.task import dmap
    >>> import operator
    >>> dmap(operator.add, [[2, 2], [4, 4], [8, 8]])
    >>> [4, 8, 16]
    
    >>> from celery.task import dmap_async
    >>> import operator
    >>> result = dmap_async(operator.add, [[2, 2], [4, 4], [8, 8]])
    >>> result.ready()
    False
    >>> time.sleep(1)
    >>> result.ready()
    True
    >>> result.result
    [4, 8, 16]
    
  • Refactored the task metadata cache and database backends, and added a new backend for Tokyo Tyrant. You can set the backend in your django settings file. e.g:

    CELERY_RESULT_BACKEND = "database"; # Uses the database
    CELERY_RESULT_BACKEND = "cache"; # Uses the django cache framework
    CELERY_RESULT_BACKEND = "tyrant"; # Uses Tokyo Tyrant
    TT_HOST = "localhost"; # Hostname for the Tokyo Tyrant server.
    TT_PORT = 6657; # Port of the Tokyo Tyrant server.
    

0.1.11

release-date:2009-05-12 02:08 P.M CET
  • The logging system was leaking file descriptors, resulting in servers stopping with the EMFILES (too many open files) error. (fixed)

0.1.10

release-date:2009-05-11 12:46 P.M CET
  • Tasks now supports both positional arguments and keyword arguments.
  • Requires carrot 0.3.8.
  • The daemon now tries to reconnect if the connection is lost.

0.1.8

release-date:2009-05-07 12:27 P.M CET
  • Better test coverage
  • More documentation
  • celeryd doesn’t emit Queue is empty message if settings.CELERYD_EMPTY_MSG_EMIT_EVERY is 0.

0.1.7

release-date:2009-04-30 1:50 P.M CET
  • Added some unittests
  • Can now use the database for task metadata (like if the task has been executed or not). Set settings.CELERY_TASK_META
  • Can now run python setup.py test to run the unittests from within the tests project.
  • Can set the AMQP exchange/routing key/queue using settings.CELERY_AMQP_EXCHANGE, settings.CELERY_AMQP_ROUTING_KEY, and settings.CELERY_AMQP_CONSUMER_QUEUE.

0.1.6

release-date:2009-04-28 2:13 P.M CET
  • Introducing TaskSet. A set of subtasks is executed and you can find out how many, or if all them, are done (excellent for progress bars and such)

  • Now catches all exceptions when running Task.__call__, so the daemon doesn’t die. This does’t happen for pure functions yet, only Task classes.

  • autodiscover() now works with zipped eggs.

  • celeryd: Now adds curernt working directory to sys.path for convenience.

  • The run_every attribute of PeriodicTask classes can now be a datetime.timedelta() object.

  • celeryd: You can now set the DJANGO_PROJECT_DIR variable for celeryd and it will add that to sys.path for easy launching.

  • Can now check if a task has been executed or not via HTTP.

  • You can do this by including the celery urls.py into your project,

    >>> url(r'^celery/$', include("celery.urls"))
    

    then visiting the following url,:

    http://mysite/celery/$task_id/done/

    this will return a JSON dictionary like e.g:

    >>> {"task": {"id": $task_id, "executed": true}}
  • delay_task now returns string id, not uuid.UUID instance.

  • Now has PeriodicTasks, to have cron like functionality.

  • Project changed name from crunchy to celery. The details of the name change request is in docs/name_change_request.txt.

0.1.0

release-date:2009-04-24 11:28 A.M CET
  • Initial release
PKHDD١VV!celery-2.0-archived/genindex.html Index — Celery 2.0.3 (stable) documentation

Index

_ | A | B | C | D | E | F | G | H | I | K | L | M | N | O | P | Q | R | S | T | U | V | W

_

_all_instances (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)

A

abbreviations() (in module celery.bin.celeryd_multi)
ACKS_LATE (in module celery.conf)
add() (celery.datastructures.LimitedSet method)
add_option() (celery.bin.celeryd_multi.NamespacedOptionParser method)
add_queue() (celery.routes.Router method)
ADMINS (in module celery.conf)
ALL_STATES (in module celery.states)
AlreadyRegistered
ALWAYS_EAGER (in module celery.conf)
as_dict() (celery.datastructures.LimitedSet method)
AttributeDict (class in celery.datastructures)

B

BaseLoader (class in celery.loaders.base)
BoundMethodWeakref (class in celery.utils.dispatch.saferef)
BoundNonDescriptorMethodWeakref (class in celery.utils.dispatch.saferef)
BROADCAST_EXCHANGE (in module celery.conf)
BROADCAST_EXCHANGE_TYPE (in module celery.conf)
BROADCAST_QUEUE (in module celery.conf)
BROKER_CONNECTION_MAX_RETRIES (in module celery.conf)
BROKER_CONNECTION_RETRY (in module celery.conf)
BROKER_CONNECTION_TIMEOUT (in module celery.conf)

C

calculate_key() (celery.utils.dispatch.saferef.BoundMethodWeakref class method)
celery.bin.celeryd_multi (module)
celery.datastructures (module)
celery.exceptions (module)
celery.loaders (module)
celery.loaders.base (module)
celery.loaders.default (module)
celery.platform (module)
celery.registry (module)
celery.routes (module)
celery.serialization (module)
celery.states (module)
celery.task.base (module), [1]
celery.task.http (module)
celery.utils (module)
celery.utils.compat (module)
celery.utils.dispatch (module)
celery.utils.dispatch.saferef (module)
celery.utils.dispatch.signal (module)
celery.utils.functional (module)
celery.utils.mail (module)
celery.utils.patch (module)
celery.utils.timeutils (module)
CELERY_CACHE_BACKEND (in module celery.conf)
CELERY_LOADER
CELERY_SEND_TASK_ERROR_EMAILS (in module celery.conf)
CELERYBEAT_LOG_FILE (in module celery.conf)
CELERYBEAT_LOG_LEVEL (in module celery.conf)
CELERYBEAT_MAX_LOOP_INTERVAL (in module celery.conf)
CELERYBEAT_SCHEDULE_FILENAME (in module celery.conf)
CELERYD_CONCURRENCY (in module celery.conf)
CELERYD_ETA_SCHEDULER (in module celery.conf)
CELERYD_LISTENER (in module celery.conf)
CELERYD_LOG_FILE (in module celery.conf)
CELERYD_LOG_FORMAT (in module celery.conf)
CELERYD_LOG_LEVEL (in module celery.conf)
CELERYD_MEDIATOR (in module celery.conf)
CELERYD_POOL (in module celery.conf)
CELERYD_PREFETCH_MULTIPLIER (in module celery.conf)
CELERYD_TASK_LOG_FORMAT (in module celery.conf)
CELERYMON_LOG_FILE (in module celery.conf)
CELERYMON_LOG_LEVEL (in module celery.conf)
chain_from_iterable() (in module celery.utils.compat)
chronologically (celery.datastructures.LimitedSet attribute)
chunks() (in module celery.utils)
clear() (celery.utils.compat.OrderedDict method)
conf (celery.loaders.base.BaseLoader attribute)
configured (celery.loaders.base.BaseLoader attribute)
connect() (celery.utils.dispatch.signal.Signal method)
consume_queue() (in module celery.datastructures)
copy() (celery.utils.compat.OrderedDict method)
create_exception_cls() (in module celery.serialization)
current_loader() (in module celery.loaders)

D

decrement() (celery.datastructures.SharedCounter method)
DEFAULT_DELIVERY_MODE (in module celery.conf)
DEFAULT_EXCHANGE (in module celery.conf)
DEFAULT_EXCHANGE_TYPE (in module celery.conf)
DEFAULT_QUEUE (in module celery.conf)
DEFAULT_RATE_LIMIT (in module celery.conf)
DEFAULT_ROUTING_KEY (in module celery.conf)
deletion_methods (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)
delta_resolution() (in module celery.utils.timeutils)
DISABLE_RATE_LIMITS (in module celery.conf)
disconnect() (celery.utils.dispatch.signal.Signal method)

E

EAGER_PROPAGATES_EXCEPTIONS (in module celery.conf)
ensure_process_aware_logger() (in module celery.utils.patch)
environment variable
CELERY_LOADER
NOSE_VERBOSE
evaluate() (celery.utils.mpromise method)
(celery.utils.promise method)
evaluated (celery.utils.mpromise attribute), [1]
EVENT_EXCHANGE (in module celery.conf)
EVENT_EXCHANGE_TYPE (in module celery.conf)
EVENT_QUEUE (in module celery.conf)
EVENT_ROUTING_KEY (in module celery.conf)
EVENT_SERIALIZER (in module celery.conf)
exc_args (celery.serialization.UnpickleableExceptionWrapper attribute)
exc_cls_name (celery.serialization.UnpickleableExceptionWrapper attribute)
exc_module (celery.serialization.UnpickleableExceptionWrapper attribute)
exception (celery.datastructures.ExceptionInfo attribute)
EXCEPTION_STATES (in module celery.states)
ExceptionInfo (class in celery.datastructures)
expand() (celery.bin.celeryd_multi.MultiTool method)
expand_destination() (celery.routes.Router method)

F

FAILURE (in module celery.states)
filled (celery.datastructures.PositionQueue attribute)
filter_types() (celery.registry.TaskRegistry method)
find_nearest_pickleable_exception() (in module celery.serialization)
first (celery.datastructures.LimitedSet attribute)
first() (in module celery.utils)
firstmethod() (in module celery.utils)
format_opt() (in module celery.bin.celeryd_multi)
from_exception() (celery.serialization.UnpickleableExceptionWrapper class method)
fromkeys() (celery.utils.compat.OrderedDict class method)
full() (celery.datastructures.PositionQueue method)
fun_takes_kwargs() (in module celery.utils)

G

gen_unique_id() (in module celery.utils)
get() (celery.bin.celeryd_multi.MultiTool method)
get_bound_method_weakref() (in module celery.utils.dispatch.saferef)
get_cls_by_name() (in module celery.utils)
get_full_cls_name() (in module celery.utils)
get_loader_cls() (in module celery.loaders)
get_pickleable_exception() (in module celery.serialization)
get_pickled_exception() (in module celery.serialization)

H

help() (celery.bin.celeryd_multi.MultiTool method)

I

IGNORE_RESULT (in module celery.conf)
ignore_signal() (in module celery.platform)
import_default_modules() (celery.loaders.base.BaseLoader method)
import_from_cwd() (celery.loaders.default.Loader method)
import_task_module() (celery.loaders.base.BaseLoader method)
ImproperlyConfigured
increment() (celery.datastructures.SharedCounter method)
init_worker() (celery.loaders.base.BaseLoader method)
install_signal_handler() (in module celery.platform)
instantiate() (in module celery.utils)
is_iterable() (in module celery.utils)
items() (celery.utils.compat.OrderedDict method)
iteritems() (celery.utils.compat.OrderedDict method)
iterkeys() (celery.utils.compat.OrderedDict method)
itervalues() (celery.utils.compat.OrderedDict method)

K

key (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)
keys() (celery.utils.compat.OrderedDict method)
kwdict() (in module celery.utils)

L

length (celery.datastructures.PositionQueue attribute)
LimitedSet (class in celery.datastructures)
load_settings() (in module celery.loaders)
Loader (class in celery.loaders.default)
LocalCache (class in celery.datastructures)
LOG_LEVELS (in module celery.conf)
lookup_route() (celery.routes.Router method)

M

mail_admins() (in module celery.utils.mail)
MAIL_HOST (in module celery.conf)
MAIL_HOST_PASSWORD (in module celery.conf)
MAIL_HOST_USER (in module celery.conf)
MAIL_PORT (in module celery.conf)
Mailer (class in celery.utils.mail)
main() (in module celery.bin.celeryd_multi)
MapRoute (class in celery.routes)
mattrgetter() (in module celery.utils)
MAX_CACHED_RESULTS (in module celery.conf)
MaxRetriesExceededError
maybe_promise() (in module celery.utils)
Message (class in celery.utils.mail)
mitemgetter() (in module celery.utils)
mpromise (class in celery.utils)
multi_args() (in module celery.bin.celeryd_multi)
MultiTool (class in celery.bin.celeryd_multi)

N

names() (celery.bin.celeryd_multi.MultiTool method)
NamespacedOptionParser (class in celery.bin.celeryd_multi)
noop() (in module celery.utils)
NOSE_VERBOSE
NotConfigured
NotRegistered

O

on_process_cleanup() (celery.loaders.base.BaseLoader method)
on_task_init() (celery.loaders.base.BaseLoader method)
on_worker_init() (celery.loaders.base.BaseLoader method)
(celery.loaders.default.Loader method)
optmerge() (celery.bin.celeryd_multi.NamespacedOptionParser method)
OrderedDict (class in celery.utils.compat)
override_backends (celery.loaders.base.BaseLoader attribute)

P

padlist() (in module celery.utils)
parse() (celery.bin.celeryd_multi.NamespacedOptionParser method)
parse_ns_range() (in module celery.bin.celeryd_multi)
PENDING (in module celery.states)
periodic() (celery.registry.TaskRegistry method)
pop() (celery.registry.TaskRegistry method)
(celery.utils.compat.OrderedDict method)
pop_value() (celery.datastructures.LimitedSet method)
popitem() (celery.utils.compat.OrderedDict method)
PositionQueue (class in celery.datastructures)
PositionQueue.UnfilledPosition (class in celery.datastructures)
prepare() (in module celery.routes)
process_long_opt() (celery.bin.celeryd_multi.NamespacedOptionParser method)
process_short_opt() (celery.bin.celeryd_multi.NamespacedOptionParser method)
promise (class in celery.utils)
PROPAGATE_STATES (in module celery.states)

Q

QueueNotFound
QUEUES (in module celery.conf)
quote() (in module celery.bin.celeryd_multi)

R

rate() (in module celery.utils.timeutils)
read_configuration() (celery.loaders.default.Loader method)
READY_STATES (in module celery.states)
receivers (celery.utils.dispatch.signal.Signal attribute)
register() (celery.registry.TaskRegistry method)
regular() (celery.registry.TaskRegistry method)
remaining() (in module celery.utils.timeutils)
repeatlast() (in module celery.utils)
reset_signal() (in module celery.platform)
restore() (celery.serialization.UnpickleableExceptionWrapper method)
RESULT_BACKEND (in module celery.conf)
RESULT_EXCHANGE (in module celery.conf)
RETRY (in module celery.states)
retry_over_time() (in module celery.utils)
RetryTaskError
REVOKED (in module celery.states)
route() (celery.routes.Router method)
route_for_task() (celery.routes.MapRoute method)
Router (class in celery.routes)

S

safe_ref() (in module celery.utils.dispatch.saferef)
say() (in module celery.bin.celeryd_multi)
send() (celery.utils.dispatch.signal.Signal method)
(celery.utils.mail.Mailer method)
SEND_EVENTS (in module celery.conf)
send_robust() (celery.utils.dispatch.signal.Signal method)
SendmailWarning
SERVER_EMAIL (in module celery.conf)
set_mp_process_title() (in module celery.platform)
set_process_title() (in module celery.platform)
setdefault() (celery.utils.compat.OrderedDict method)
Settings (class in celery.loaders.default)
setup_loader() (in module celery.loaders)
setup_settings() (celery.loaders.default.Loader method)
SharedCounter (class in celery.datastructures)
Signal (class in celery.utils.dispatch.signal)
SoftTimeLimitExceeded
start() (celery.bin.celeryd_multi.MultiTool method)
STARTED (in module celery.states)
STORE_ERRORS_EVEN_IF_IGNORED (in module celery.conf)
subclass_exception() (in module celery.serialization)
SUCCESS (in module celery.states)

T

task_postrun (in module celery.signals)
task_prerun (in module celery.signals)
TASK_RESULT_EXPIRES (in module celery.conf)
task_sent (in module celery.signals)
TASK_SERIALIZER (in module celery.conf)
TaskRegistry (class in celery.registry)
TaskRegistry.NotRegistered
TaskRevokedError
timedelta_seconds() (in module celery.utils.timeutils)
TimeLimitExceeded
TimeoutError
traceback (celery.datastructures.ExceptionInfo attribute)
TRACK_STARTED (in module celery.conf)

U

UnpickleableExceptionWrapper
UNREADY_STATES (in module celery.states)
unregister() (celery.registry.TaskRegistry method)
update() (celery.datastructures.LimitedSet method)
(celery.utils.compat.OrderedDict method)
usage() (celery.bin.celeryd_multi.MultiTool method)

V

values() (celery.utils.compat.OrderedDict method)

W

wanted_module_item() (in module celery.loaders.default)
weak_func (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)
weak_self (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)
weekday() (in module celery.utils.timeutils)
worker_init (in module celery.signals)
worker_initialized (celery.loaders.base.BaseLoader attribute)
worker_process_init (in module celery.signals)
worker_ready (in module celery.signals)
worker_shutdown (in module celery.signals)
WorkerLostError
PKHDDN/celery-2.0-archived/faq.html Frequently Asked Questions — Celery 2.0.3 (stable) documentation

Frequently Asked Questions

General

What kinds of things should I use celery for?

Answer: Queue everything and delight everyone is a good article describing why you would use a queue in a web context.

These are some common use cases:

  • Running something in the background. For example, to finish the web request as soon as possible, then update the users page incrementally. This gives the user the impression of good performane and “snappiness”, even though the real work might actually take some time.
  • Running something after the web request has finished.
  • Making sure something is done, by executing it asynchronously and using retries.
  • Scheduling periodic work.

And to some degree:

  • Distributed computing.
  • Parallel execution.

Misconceptions

Is celery dependent on pickle?

Answer: No.

Celery can support any serialization scheme and has support for JSON/YAML and Pickle by default. You can even send one task using pickle, and another one with JSON seamlessly, this is because every task is associated with a content-type. The default serialization scheme is pickle because it’s the most used, and it has support for sending complex objects as task arguments.

You can set a global default serializer, the default serializer for a particular Task, or even what serializer to use when sending a single task instance.

Is celery for Django only?

Answer: No.

Celery does not depend on Django anymore. To use Celery with Django you have to use the django-celery package.

Do I have to use AMQP/RabbitMQ?

Answer: No.

You can also use Redis or an SQL database, see Using other queues.

Redis or a database won’t perform as well as an AMQP broker. If you have strict reliability requirements you are encouraged to use RabbitMQ or another AMQP broker. Redis/database also use polling, so they are likely to consume more resources. However, if you for some reason are not able to use AMQP, feel free to use these alternatives. They will probably work fine for most use cases, and note that the above points are not specific to celery; If using Redis/database as a queue worked fine for you before, it probably will now. You can always upgrade later if you need to.

Is celery multi-lingual?

Answer: Yes.

celeryd is an implementation of celery in python. If the language has an AMQP client, there shouldn’t be much work to create a worker in your language. A celery worker is just a program connecting to the broker to consume messages. There’s no other communication involved.

Also, there’s another way to be language indepedent, and that is to use REST tasks, instead of your tasks being functions, they’re URLs. With this information you can even create simple web servers that enable preloading of code. See: User Guide: Remote Tasks.

Troubleshooting

MySQL is throwing deadlock errors, what can I do?

Answer: MySQL has default isolation level set to REPEATABLE-READ, if you don’t really need that, set it to READ-COMMITTED. You can do that by adding the following to your my.cnf:

[mysqld]
transaction-isolation = READ-COMMITTED

For more information about InnoDBs transaction model see MySQL - The InnoDB Transaction Model and Locking in the MySQL user manual.

(Thanks to Honza Kral and Anton Tsigularov for this solution)

Why is Task.delay/apply*/celeryd just hanging?

Answer: There is a bug in some AMQP clients that will make it hang if it’s not able to authenticate the current user, the password doesn’t match or the user does not have access to the virtual host specified. Be sure to check your broker logs (for RabbitMQ that is /var/log/rabbitmq/rabbit.log on most systems), it usually contains a message describing the reason.

Why won’t celeryd run on FreeBSD?

Answer: multiprocessing.Pool requires a working POSIX semaphore implementation which isn’t enabled in FreeBSD by default. You have to enable POSIX semaphores in the kernel and manually recompile multiprocessing.

Luckily, Viktor Petersson has written a tutorial to get you started with Celery on FreeBSD here: http://www.playingwithwire.com/2009/10/how-to-get-celeryd-to-work-on-freebsd/

Why aren’t my tasks processed?

Answer: With RabbitMQ you can see how many consumers are currently receiving tasks by running the following command:

$ rabbitmqctl list_queues -p <myvhost> name messages consumers
Listing queues ...
celery     2891    2

This shows that there’s 2891 messages waiting to be processed in the task queue, and there are two consumers processing them.

One reason that the queue is never emptied could be that you have a stale celery process taking the messages hostage. This could happen if celeryd wasn’t properly shut down.

When a message is recieved by a worker the broker waits for it to be acknowledged before marking the message as processed. The broker will not re-send that message to another consumer until the consumer is shut down properly.

If you hit this problem you have to kill all workers manually and restart them:

ps auxww | grep celeryd | awk '{print $2}' | xargs kill

You might have to wait a while until all workers have finished the work they’re doing. If it’s still hanging after a long time you can kill them by force with:

ps auxww | grep celeryd | awk '{print $2}' | xargs kill -9

Why won’t my Task run?

Answer: There might be syntax errors preventing the tasks module being imported.

You can find out if celery is able to run the task by executing the task manually:

>>> from myapp.tasks import MyPeriodicTask
>>> MyPeriodicTask.delay()

Watch celeryds logfile to see if it’s able to find the task, or if some other error is happening.

How do I discard all waiting tasks?

Answer: Use celery.task.discard_all(), like this:

>>> from celery.task import discard_all
>>> discard_all()
1753

The number 1753 is the number of messages deleted.

You can also start celeryd with the --discard argument which will accomplish the same thing.

I’ve discarded messages, but there are still messages left in the queue?

Answer: Tasks are acknowledged (removed from the queue) as soon as they are actually executed. After the worker has received a task, it will take some time until it is actually executed, especially if there are a lot of tasks already waiting for execution. Messages that are not acknowledged are hold on to by the worker until it closes the connection to the broker (AMQP server). When that connection is closed (e.g because the worker was stopped) the tasks will be re-sent by the broker to the next available worker (or the same worker when it has been restarted), so to properly purge the queue of waiting tasks you have to stop all the workers, and then discard the tasks using discard_all.

Results

How do I get the result of a task if I have the ID that points there?

Answer: Use Task.AsyncResult:

>>> result = MyTask.AsyncResult(task_id)
>>> result.get()

This will give you a celery.result.BaseAsyncResult instance using the tasks current result backend.

If you need to specify a custom result backend you should use celery.result.BaseAsyncResult directly:

>>> from celery.result import BaseAsyncResult
>>> result = BaseAsyncResult(task_id, backend=...)
>>> result.get()

Brokers

Why is RabbitMQ crashing?

RabbitMQ will crash if it runs out of memory. This will be fixed in a future release of RabbitMQ. please refer to the RabbitMQ FAQ: http://www.rabbitmq.com/faq.html#node-runs-out-of-memory

Some common Celery misconfigurations can crash RabbitMQ:

  • Events.

Running celeryd with the -E/--events option will send messages for events happening inside of the worker. If these event messages are not consumed, you will eventually run out of memory.

Events should only be enabled if you have an active monitor consuming them.

  • AMQP backend results.

When running with the AMQP result backend, every task result will be sent as a message. If you don’t collect these results, they will build up and RabbitMQ will eventually run out of memory.

If you don’t use the results for a task, make sure you set the ignore_result option:

Results can also be disabled globally using the CELERY_IGNORE_RESULT setting.

Can I use celery with ActiveMQ/STOMP?

Answer: Yes, but this is somewhat experimental for now. It is working ok in a test configuration, but it has not been tested in production. If you have any problems using STOMP with celery, please report an issue here:

http://github.com/ask/celery/issues/

The STOMP carrot backend requires the stompy library:

$ pip install stompy
$ cd python-stomp
$ sudo python setup.py install
$ cd ..

In this example we will use a queue called celery which we created in the ActiveMQ web admin interface.

Note: When using ActiveMQ the queue name needs to have "/queue/" prepended to it. i.e. the queue celery becomes /queue/celery.

Since STOMP doesn’t have exchanges and the routing capabilities of AMQP, you need to set exchange name to the same as the queue name. This is a minor inconvenience since carrot needs to maintain the same interface for both AMQP and STOMP.

Use the following settings in your celeryconfig.py/django settings.py:

# Use the stomp carrot backend.
CARROT_BACKEND = "stomp"

# STOMP hostname and port settings.
BROKER_HOST = "localhost"
BROKER_PORT = 61613

# The queue name to use (the exchange *must* be set to the
# same as the queue name when using STOMP)
CELERY_DEFAULT_QUEUE = "/queue/celery"
CELERY_DEFAULT_EXCHANGE = "/queue/celery"

CELERY_QUEUES = {
    "/queue/celery": {"exchange": "/queue/celery"}
}

What features are not supported when using ghettoq/STOMP?

This is a (possible incomplete) list of features not available when using the STOMP backend:

  • routing keys
  • exchange types (direct, topic, headers, etc)
  • immediate
  • mandatory

Tasks

Can I execute a task by name?

Answer: Yes. Use celery.execute.send_task(). You can also execute a task by name from any language that has an AMQP client.

>>> from celery.execute import send_task
>>> send_task("tasks.add", args=[2, 2], kwargs={})
<AsyncResult: 373550e8-b9a0-4666-bc61-ace01fa4f91d>

How can I get the task id of the current task?

Answer: Celery does set some default keyword arguments if the task accepts them (you can accept them by either using **kwargs, or list them specifically):

@task
def mytask(task_id=None):
    cache.set(task_id, "Running")

The default keyword arguments are documented here: http://celeryq.org/docs/userguide/tasks.html#default-keyword-arguments

Can I specify a custom task_id?

Answer: Yes. Use the task_id argument to apply_async():

>>> task.apply_async(args, kwargs, task_id="...")

Can I use natural task ids?

Answer: Yes, but make sure it is unique, as the behavior for two tasks existing with the same id is undefined.

The world will probably not explode, but at the worst they can overwrite each others results.

How can I run a task once another task has finished?

Answer: You can safely launch a task inside a task. Also, a common pattern is to use callback tasks:

@task()
def add(x, y, callback=None):
    result = x + y
    if callback:
        subtask(callback).delay(result)
    return result


@task(ignore_result=True)
def log_result(result, **kwargs):
    logger = log_result.get_logger(**kwargs)
    logger.info("log_result got: %s" % (result, ))

Invocation:

>>> add.delay(2, 2, callback=log_result.subtask())

See Sets of tasks, Subtasks and Callbacks for more information.

Can I cancel the execution of a task?

Answer: Yes. Use result.revoke:

>>> result = add.apply_async(args=[2, 2], countdown=120)
>>> result.revoke()

or if you only have the task id:

>>> from celery.task.control import revoke
>>> revoke(task_id)

Why aren’t my remote control commands received by all workers?

Answer: To receive broadcast remote control commands, every celeryd uses its hostname to create a unique queue name to listen to, so if you have more than one worker with the same hostname, the control commands will be recieved in round-robin between them.

To work around this you can explicitly set the hostname for every worker using the --hostname argument to celeryd:

$ celeryd --hostname=$(hostname).1
$ celeryd --hostname=$(hostname).2

etc, etc.

Can I send some tasks to only some servers?

Answer: Yes. You can route tasks to an arbitrary server using AMQP, and a worker can bind to as many queues as it wants.

See Routing Tasks for more information.

Can I change the interval of a periodic task at runtime?

Answer: Yes. You can override PeriodicTask.is_due or turn PeriodicTask.run_every into a property:

class MyPeriodic(PeriodicTask):

    def run(self):
        # ...

    @property
    def run_every(self):
        return get_interval_from_database(...)

Does celery support task priorities?

Answer: No. In theory, yes, as AMQP supports priorities. However RabbitMQ doesn’t implement them yet.

The usual way to prioritize work in celery, is to route high priority tasks to different servers. In the real world this may actually work better than per message priorities. You can use this in combination with rate limiting to achieve a highly performant system.

Should I use retry or acks_late?

Answer: Depends. It’s not necessarily one or the other, you may want to use both.

Task.retry is used to retry tasks, notably for expected errors that is catchable with the try: block. The AMQP transaction is not used for these errors: if the task raises an exception it is still acked!.

The acks_late setting would be used when you need the task to be executed again if the worker (for some reason) crashes mid-execution. It’s important to note that the worker is not known to crash, and if it does it is usually an unrecoverable error that requires human intervention (bug in the worker, or task code).

In an ideal world you could safely retry any task that has failed, but this is rarely the case. Imagine the following task:

@task()
def process_upload(filename, tmpfile):
    # Increment a file count stored in a database
    increment_file_counter()
    add_file_metadata_to_db(filename, tmpfile)
    copy_file_to_destination(filename, tmpfile)

If this crashed in the middle of copying the file to its destination the world would contain incomplete state. This is not a critical scenario of course, but you can probably imagine something far more sinister. So for ease of programming we have less reliability; It’s a good default, users who require it and know what they are doing can still enable acks_late (and in the future hopefully use manual acknowledgement)

In addition Task.retry has features not available in AMQP transactions: delay between retries, max retries, etc.

So use retry for Python errors, and if your task is reentrant combine that with acks_late if that level of reliability is required.

Can I schedule tasks to execute at a specific time?

Answer: Yes. You can use the eta argument of Task.apply_async().

Or to schedule a periodic task at a specific time, use the celery.task.schedules.crontab schedule behavior:

from celery.task.schedules import crontab
from celery.decorators import periodic_task

@periodic_task(run_every=crontab(hours=7, minute=30, day_of_week="mon"))
def every_monday_morning():
    print("This is run every monday morning at 7:30")

How do I shut down celeryd safely?

Answer: Use the TERM signal, and celery will finish all currently executing jobs and shut down as soon as possible. No tasks should be lost.

You should never stop celeryd with the KILL signal (-9), unless you’ve tried TERM a few times and waited a few minutes to let it get a chance to shut down. As if you do tasks may be terminated mid-execution, and they will not be re-run unless you have the acks_late option set. (Task.acks_late / CELERY_ACKS_LATE).

Windows

celeryd keeps spawning processes at startup

Answer: This is a known issue on Windows. You have to start celeryd with the command:

$ python -m celeryd.bin.celeryd

Any additional arguments can be appended to this command.

See http://bit.ly/bo9RSw

The -B / --beat option to celeryd doesn’t work?

Answer: That’s right. Run celerybeat and celeryd as separate services instead.

django-celery can’t find settings?

Answer: You need to specify the --settings argument to manage.py:

$ python manage.py celeryd start --settings=settings

See http://bit.ly/bo9RSw

Table Of Contents

Previous topic

Tutorial: Creating a click counter using carrot and celery

Next topic

API Reference

This Page

PKHDDY  < < celery-2.0-archived/objects.inv# Sphinx inventory version 2 # Project: Celery # Version: 2.0 # The remainder of this file is compressed using zlib. xڽ\K:Wtm;7;ڦ;GӳQ *c 9B`m0zln,y|!$qH<,'k=<~yVWG;v0?XP%a,)=ENmACL㭸WMZ5',|c~1EDIE0O+}H3z ٠Exk}, HDFF㟃xh ( HϷoSzx?IM6+rq]4L#%;in8ScIz]iH3n{qsLQCϚ#eE fE.ڥf)FwтK[E #|X?+i\1sl]H60Za(q3GkPҭWf$; %Y` GuQYx$;I] jr0'Q9NI`R7ӿ 9|rkHޑ' c) %ES0EzJ \JrS51,{3ێ=ٖ rés (7]Rl[nh%oN1vX1N #`I<%SIҜ:`X"x,osEÓJE=~ߛ?v ʦ&ᴃ[ >+0&{wyqP4ne ??`G¥}r]iI\ZaՕ]+:$eFi(v+1c]sq2|{rM Z폿Kg{us\T1DVjo^3S`gdx6lơa]3zJүw f:Hm3D$ ޓlO2d#hlEA,gxSIN9)DQdwl(*+w%̚:3f74!vLIhq*Ni^G ^3Kd2}:4gʋ }K(t'8a55:!&A.KX;^ +M_[U U 8 y] ~y uJʣ'w dg?]̑?ً/-HU}#6 =a;!E}q$K Isf8uh@8u,,8&\>od|CqCByY)^ JWGvI+0tv0̍P.0i+X*]s]4Y ܮؕ3%VL=ߞ+ X* =8݌7m/W9(X%1*b f60)pU寅ׅPpv*)GR5s\{*FR0Nޓo6.fT!70;Ĩ24L/;|~^GvXymr땤8Go*)2=EtCԬlUnDRUP ZkvhvW"2(d+ZBlX }IeR,<(G1D_m 2~Dy2C BO)K] C=@Z3DԱVe1R8$#'Ry[3a/5Rk X>!U}ex3>M2nİks%|%vƭWF3/8,v8#x)-)KuC +t; Ҟ APWэ@Ɋʚ(yuiZ .HuQӜ 򾉚YZUi2_v?xrdly>*Tu#Pv Fz_T<3U,N} T:'63rB[j h,qI1vH=3dCt>ʍ2eIDɖ㣣ir(Hç2HpxGpYd:r)2uB-цN%GU0pʑuKPthVX{2%:$: νhP{>$ٝfDr2Wv(-q3ecX3WtJ? ^J-I\^эrV mh*N #qȿ56um1$/W#ʹX(u8SӚi ?'"ױ.V|3Z r3︝-&ɓLDiQ3#wGZnh`e* 8\ؕu!]gqٌ޾+s8Ū(|\ *;*ȩpw[x~PzʱN5ujgL4k*BoONPrOȾ(8u BuCg$҆ ^XZp':XJ='lIh:L6V>8}={>)7['vuT;#:mw)x\ vk4/9s}\jG.u -N4x W%D~):M-7;Ըq|f@1PD~ ;Ts H'$)#2fVv8G#MHe^'{)46Fy_>$g߬m9wf/E_&I gXܷ]ˑ룑Vj%e ZV KLNg\d I|+@SKæ}IX_tEcM^ .қIw6>#Qjv#*>6ȗg_+ fzF:$ z _ƺ໽T Celery - Distributed Task Queue — Celery 2.0.3 (stable) documentation

Celery - Distributed Task Queue

Contents:

Indices and tables

Celery

Celery is a Distributed Task Queue for Python.

This Page

PKHDDjg&&.celery-2.0-archived/internals/deprecation.html Celery Deprecation Timeline — Celery 2.0.3 (stable) documentation

Celery Deprecation Timeline

Removals for version 2.0

  • The following settings will be removed:

    Setting name Replace with
    CELERY_AMQP_CONSUMER_QUEUES CELERY_QUEUES
    CELERY_AMQP_CONSUMER_QUEUES CELERY_QUEUES
    CELERY_AMQP_EXCHANGE CELERY_DEFAULT_EXCHANGE
    CELERY_AMQP_EXCHANGE_TYPE CELERY_DEFAULT_AMQP_EXCHANGE_TYPE
    CELERY_AMQP_CONSUMER_ROUTING_KEY CELERY_QUEUES
    CELERY_AMQP_PUBLISHER_ROUTING_KEY CELERY_DEFAULT_ROUTING_KEY
  • CELERY_LOADER definitions without class name.

    E.g. celery.loaders.default, needs to include the class name: celery.loaders.default.Loader.

  • TaskSet.run(). Use celery.task.base.TaskSet.apply_async()

    instead.

  • The module celery.task.rest; use celery.task.http instead.

Table Of Contents

Previous topic

Internals

Next topic

Internals: The worker

This Page

PKHDD $$)celery-2.0-archived/internals/events.html List of Worker Events — Celery 2.0.3 (stable) documentation

List of Worker Events

This is the list of events sent by the worker. The monitor uses these to visualize the state of the cluster.

Task Events

  • task-received(uuid, name, args, kwargs, retries, eta, hostname, timestamp)

    Sent when the worker receives a task.

  • task-started(uuid, hostname, timestamp)

    Sent just before the worker executes the task.

  • task-succeeded(uuid, result, runtime, hostname, timestamp)

    Sent if the task executed successfully. Runtime is the time it took to execute the task using the pool. (Time starting from the task is sent to the pool, and ending when the pool result handlers callback is called).

  • task-failed(uuid, exception, traceback, hostname, timestamp)

    Sent if the execution of the task failed.

  • task-revoked(uuid)

    Sent if the task has been revoked (Note that this is likely to be sent by more than one worker)

  • task-retried(uuid, exception, traceback, hostname, delay, timestamp)

    Sent if the task failed, but will be retried in the future. (NOT IMPLEMENTED)

Worker Events

  • worker-online(hostname, timestamp)

    The worker has connected to the broker and is online.

  • worker-heartbeat(hostname, timestamp)

    Sent every minute, if the worker has not sent a heartbeat in 2 minutes, it’s considered to be offline.

  • worker-offline(hostname, timestamp)

    The worker has disconnected from the broker.

Table Of Contents

Previous topic

Task Message Protocol

Next topic

Module Index

This Page

PKHDDfq+++celery-2.0-archived/internals/protocol.html Task Message Protocol — Celery 2.0.3 (stable) documentation

Task Message Protocol

Message format

  • task

    string

    Name of the task. required

  • id

    string

    Unique id of the task (UUID). required

  • args

    list

    List of arguments. Will be an empty list if not provided.

  • kwargs

    dictionary

    Dictionary of keyword arguments. Will be an empty dictionary if not provided.

  • retries

    int

    Current number of times this task has been retried. Defaults to 0 if not specified.

  • eta

    string (ISO 8601)

    Estimated time of arrival. This is the date and time in ISO 8601 format. If not provided the message is not scheduled, but will be executed asap.

Example message

This is an example invocation of the celery.task.PingTask task in JSON format:

{"task": "celery.task.PingTask",
 "args": [],
 "kwargs": {},
 "retries": 0,
 "eta": "2009-11-17T12:30:56.527191"}

Serialization

The protocol supports several serialization formats using the content_type message header.

The MIME-types supported by default are shown in the following table.

Scheme MIME Type
json application/json
yaml application/x-yaml
pickle application/x-python-serialize
msgpack application/x-msgpack

Table Of Contents

Previous topic

Internals: The worker

Next topic

List of Worker Events

This Page

PKHDD~xll.celery-2.0-archived/internals/moduleindex.html Module Index — Celery 2.0.3 (stable) documentation

Module Index

Worker

celery.worker

  • WorkController

This is the worker’s main process. It starts and stops all the components required by the worker: Pool, Mediator, Scheduler, ClockService, and Listener.

  • process_initializer()

This is the function used to initialize pool processes. It sets up loggers and imports required task modules, etc.

celery.worker.job

  • TaskRequest

A request to execute a task. Contains the task name, id, args and kwargs. Handles acknowledgement, execution, writing results to backends and error handling (including error e-mails)

celery.worker.control

  • celery.worker.registry
  • celery.worker.builtins
PKHDD|<>>(celery-2.0-archived/internals/index.html Internals — Celery 2.0.3 (stable) documentation

Internals

Release:2.0
Date:February 04, 2014

Previous topic

Celeryd Multi Tool - celery.bin.celeryd_multi

Next topic

Celery Deprecation Timeline

This Page

PKHDDu|.ؗ//)celery-2.0-archived/internals/worker.html Internals: The worker — Celery 2.0.3 (stable) documentation

Internals: The worker

Introduction

The worker consists of 4 main components: the broker listener, the scheduler, the mediator and the task pool. All these components runs in parallel working with two data structures: the ready queue and the ETA schedule.

http://cloud.github.com/downloads/ask/celery/Celery1.0-inside-worker.jpg

Data structures

ready_queue

The ready queue is either an instance of Queue.Queue, or celery.buckets.TaskBucket. The latter if rate limiting is enabled.

eta_schedule

The ETA schedule is a heap queue sorted by time.

Components

CarrotListener

Receives messages from the broker using carrot.

When a message is received it’s converted into a celery.worker.job.TaskRequest object.

Tasks with an ETA are entered into the eta_schedule, messages that can be immediately processed are moved directly to the ready_queue.

ScheduleController

The schedule controller is running the eta_schedule. If the scheduled tasks eta has passed it is moved to the ready_queue, otherwise the thread sleeps until the eta is met (remember that the schedule is sorted by time).

Mediator

The mediator simply moves tasks in the ready_queue over to the task pool for execution using celery.worker.job.TaskRequest.execute_using_pool().

TaskPool

This is a slightly modified multiprocessing.Pool. It mostly works the same way, except it makes sure all of the workers are running at all times. If a worker is missing, it replaces it with a new one.

Table Of Contents

Previous topic

Celery Deprecation Timeline

Next topic

Task Message Protocol

This Page

PKHDD܌HQQ<celery-2.0-archived/internals/reference/celery.backends.html Backends - celery.backends — Celery 2.0.3 (stable) documentation

Backends - celery.backends

Previous topic

Clock Service - celery.beat

Next topic

Backend: Base - celery.backends.base

This Page

PKHDD )YY=celery-2.0-archived/internals/reference/celery.db.models.html SQLAlchemy Models - celery.db.models — Celery 2.0.3 (stable) documentation

SQLAlchemy Models - celery.db.models

Previous topic

Logging - celery.log

Next topic

SQLAlchemy Session - celery.db.session

This Page

PKHDD|8celery-2.0-archived/internals/reference/celery.beat.html Clock Service - celery.beat — Celery 2.0.3 (stable) documentation

Clock Service - celery.beat

Previous topic

Thread Pool Support EXPERIMENTAL - celery.concurrency.threads

Next topic

Backends - celery.backends

This Page

PKHDDKGcelery-2.0-archived/internals/reference/celery.concurrency.threads.html Thread Pool Support EXPERIMENTAL - celery.concurrency.threads — Celery 2.0.3 (stable) documentation

Thread Pool Support EXPERIMENTAL - celery.concurrency.threads

Previous topic

extended multiprocessing.pool - celery.concurrency.processes.pool

Next topic

Clock Service - celery.beat

This Page

PKHDDUU>celery-2.0-archived/internals/reference/celery.worker.job.html Executable Jobs - celery.worker.job — Celery 2.0.3 (stable) documentation

Executable Jobs - celery.worker.job

Previous topic

Worker Message Listener - celery.worker.listener

Next topic

Worker Controller Threads - celery.worker.controllers

This Page

PKHDDWGGBcelery-2.0-archived/internals/reference/celery.backends.cache.html Backend: Memcache - celery.backends.cache — Celery 2.0.3 (stable) documentation

Backend: Memcache - celery.backends.cache

Previous topic

Backend: SQLAlchemy Database - celery.backends.database

Next topic

Backend: AMQP - celery.backends.amqp

This Page

PKHDD]aaFcelery-2.0-archived/internals/reference/celery.worker.controllers.html Worker Controller Threads - celery.worker.controllers — Celery 2.0.3 (stable) documentation

Worker Controller Threads - celery.worker.controllers

Previous topic

Executable Jobs - celery.worker.job

Next topic

Token Bucket (rate limiting) - celery.worker.buckets

This Page

PKHDDaH+Ccelery-2.0-archived/internals/reference/celery.worker.listener.html Worker Message Listener - celery.worker.listener — Celery 2.0.3 (stable) documentation

Worker Message Listener - celery.worker.listener

Previous topic

Multiprocessing Worker - celery.worker

Next topic

Executable Jobs - celery.worker.job

This Page

PKHDDÑ:celery-2.0-archived/internals/reference/celery.worker.html Multiprocessing Worker - celery.worker — Celery 2.0.3 (stable) documentation

Multiprocessing Worker - celery.worker

Previous topic

Internal Module Reference

Next topic

Worker Message Listener - celery.worker.listener

This Page

PKHDD`aY?celery-2.0-archived/internals/reference/celery.utils.patch.html Compatibility Patches - celery.utils.patch — Celery 2.0.3 (stable) documentation

Compatibility Patches - celery.utils.patch

celery.utils.patch.ensure_process_aware_logger()

Previous topic

Sending E-mail - celery.utils.mail

Next topic

functools compat - celery.utils.functional

This Page

PKHDDz돑Bcelery-2.0-archived/internals/reference/celery.worker.buckets.html Token Bucket (rate limiting) - celery.worker.buckets — Celery 2.0.3 (stable) documentation

Token Bucket (rate limiting) - celery.worker.buckets

Previous topic

Worker Controller Threads - celery.worker.controllers

Next topic

Worker Scheduler - celery.worker.scheduler

This Page

PKHDD3W;Kcelery-2.0-archived/internals/reference/celery.worker.control.builtins.html Built-in Remote Control Commands - celery.worker.control.builtins — Celery 2.0.3 (stable) documentation

Built-in Remote Control Commands - celery.worker.control.builtins

Previous topic

Worker Control - celery.worker.control

Next topic

Remote Control Command Registry - celery.worker.control.registry

This Page

PKHDDWOOCcelery-2.0-archived/internals/reference/celery.backends.tyrant.html Backend: Tokyo Tyrant - celery.backends.tyrant — Celery 2.0.3 (stable) documentation

Backend: Tokyo Tyrant - celery.backends.tyrant

Previous topic

Backend: Cassandra - celery.backends.cassandra

Next topic

Tracing Execution - celery.execute.trace

This Page

PKHDD  >celery-2.0-archived/internals/reference/celery.utils.info.html Debugging Info - celery.utils.info — Celery 2.0.3 (stable) documentation

Debugging Info - celery.utils.info

Previous topic

Time and Date Utilities - celery.utils.timeutils

Next topic

Python Compatibility - celery.utils.compat

This Page

PKHDDKzAcelery-2.0-archived/internals/reference/celery.backends.base.html Backend: Base - celery.backends.base — Celery 2.0.3 (stable) documentation

Backend: Base - celery.backends.base

Previous topic

Backends - celery.backends

Next topic

Backend: SQLAlchemy Database - celery.backends.database

This Page

PKHDD~2Kcelery-2.0-archived/internals/reference/celery.worker.control.registry.html Remote Control Command Registry - celery.worker.control.registry — Celery 2.0.3 (stable) documentation

Remote Control Command Registry - celery.worker.control.registry

Previous topic

Built-in Remote Control Commands - celery.worker.control.builtins

Next topic

Worker State - celery.worker.state

This Page

PKHDD,v = =Acelery-2.0-archived/internals/reference/celery.serialization.html Serialization Tools - celery.serialization — Celery 2.0.3 (stable) documentation

Serialization Tools - celery.serialization

exception celery.serialization.UnpickleableExceptionWrapper(exc_module, exc_cls_name, exc_args)

Wraps unpickleable exceptions.

Parameters:
exc_module

The module of the original exception.

exc_cls_name

The name of the original exception class.

exc_args

The arguments for the original exception.

Example

>>> try:
...     something_raising_unpickleable_exc()
>>> except Exception, e:
...     exc = UnpickleableException(e.__class__.__module__,
...                                 e.__class__.__name__,
...                                 e.args)
...     pickle.dumps(exc) # Works fine.
classmethod from_exception(exc)
restore()
celery.serialization.create_exception_cls(name, module, parent=None)

Dynamically create an exception class.

celery.serialization.find_nearest_pickleable_exception(exc)

With an exception instance, iterate over its super classes (by mro) and find the first super exception that is pickleable. It does not go below Exception (i.e. it skips Exception, BaseException and object). If that happens you should use UnpickleableException instead.

Parameters:exc – An exception instance.
Returns:the nearest exception if it’s not Exception or below, if it is it returns None.

:rtype Exception:

celery.serialization.get_pickleable_exception(exc)

Make sure exception is pickleable.

celery.serialization.get_pickled_exception(exc)

Get original exception from exception pickled using get_pickleable_exception().

celery.serialization.subclass_exception(name, parent, module)

Previous topic

Tracing Execution - celery.execute.trace

Next topic

Datastructures - celery.datastructures

This Page

PKHDDᝌQ--Acelery-2.0-archived/internals/reference/celery.execute.trace.html Tracing Execution - celery.execute.trace — Celery 2.0.3 (stable) documentation

Tracing Execution - celery.execute.trace

Previous topic

Backend: Tokyo Tyrant - celery.backends.tyrant

Next topic

Serialization Tools - celery.serialization

This Page

PKHDDtDcelery-2.0-archived/internals/reference/celery.backends.mongodb.html Backend: MongoDB - celery.backends.mongodb — Celery 2.0.3 (stable) documentation

Backend: MongoDB - celery.backends.mongodb

Previous topic

Backend: AMQP - celery.backends.amqp

Next topic

Backend: Redis - celery.backends.pyredis

This Page

PKHDDsff9celery-2.0-archived/internals/reference/celery.utils.html Utilities - celery.utils — Celery 2.0.3 (stable) documentation

Utilities - celery.utils

celery.utils.chunks(it, n)

Split an iterator into chunks with n elements each.

Examples

# n == 2 >>> x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 2) >>> list(x) [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10]]

# n == 3 >>> x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 3) >>> list(x) [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]]

celery.utils.first(predicate, iterable)

Returns the first element in iterable that predicate returns a True value for.

celery.utils.firstmethod(method)

Returns a functions that with a list of instances, finds the first instance that returns a value for the given method.

The list can also contain promises (promise.)

celery.utils.fun_takes_kwargs(fun, kwlist=[])

With a function, and a list of keyword arguments, returns arguments in the list which the function takes.

If the object has an argspec attribute that is used instead of using the inspect.getargspec`() introspection.

Parameters:
  • fun – The function to inspect arguments of.
  • kwlist – The list of keyword arguments.

Examples

>>> def foo(self, x, y, logfile=None, loglevel=None):
...     return x * y
>>> fun_takes_kwargs(foo, ["logfile", "loglevel", "task_id"])
["logfile", "loglevel"]
>>> def foo(self, x, y, **kwargs):
>>> fun_takes_kwargs(foo, ["logfile", "loglevel", "task_id"])
["logfile", "loglevel", "task_id"]
celery.utils.gen_unique_id()

Generate a unique id, having - hopefully - a very small chance of collission.

For now this is provided by uuid.uuid4().

celery.utils.get_cls_by_name(name, aliases={})

Get class by name.

The name should be the full dot-separated path to the class:

modulename.ClassName

Example:

celery.concurrency.processes.TaskPool
                            ^- class name

If aliases is provided, a dict containing short name/long name mappings, the name is looked up in the aliases first.

Examples:

>>> get_cls_by_name("celery.concurrency.processes.TaskPool")
<class 'celery.concurrency.processes.TaskPool'>
>>> get_cls_by_name("default", {
...     "default": "celery.concurrency.processes.TaskPool"})
<class 'celery.concurrency.processes.TaskPool'>

# Does not try to look up non-string names. >>> from celery.concurrency.processes import TaskPool >>> get_cls_by_name(TaskPool) is TaskPool True

celery.utils.get_full_cls_name(cls)

With a class, get its full module and class name.

celery.utils.instantiate(name, *args, **kwargs)

Instantiate class by name.

See get_cls_by_name().

celery.utils.is_iterable(obj)
celery.utils.kwdict(kwargs)

Make sure keyword arguments are not in unicode.

This should be fixed in newer Python versions,
see: http://bugs.python.org/issue4978.
celery.utils.mattrgetter(*attrs)

Like operator.itemgetter() but returns None on missing attributes instead of raising AttributeError.

celery.utils.maybe_promise(value)

Evaluates if the value is a promise.

celery.utils.mitemgetter(*items)

Like operator.itemgetter() but returns None on missing items instead of raising KeyError.

class celery.utils.mpromise(fun, *args, **kwargs)

Memoized promise.

The function is only evaluated once, every subsequent access will return the same value.

evaluated

Set to to True after the promise has been evaluated.

evaluate()
evaluated = False
celery.utils.noop(*args, **kwargs)

No operation.

Takes any arguments/keyword arguments and does nothing.

celery.utils.padlist(container, size, default=None)

Pad list with default elements.

Examples:

>>> first, last, city = padlist(["George", "Costanza", "NYC"], 3)
("George", "Costanza", "NYC")
>>> first, last, city = padlist(["George", "Costanza"], 3)
("George", "Costanza", None)
>>> first, last, city, planet = padlist(["George", "Costanza",
                                         "NYC"], 4, default="Earth")
("George", "Costanza", "NYC", "Earth")
class celery.utils.promise(fun, *args, **kwargs)

A promise.

Evaluated when called or if the evaluate() method is called. The function is evaluated on every access, so the value is not memoized (see mpromise).

Overloaded operations that will evaluate the promise:
__str__(), __repr__(), __cmp__().
evaluate()
celery.utils.repeatlast(it)

Iterate over all elements in the iterator, and when its exhausted yield the last value infinitely.

celery.utils.retry_over_time(fun, catch, args=[], kwargs={}, errback=<function noop at 0x4293a28>, max_retries=None, interval_start=2, interval_step=2, interval_max=30)

Retry the function over and over until max retries is exceeded.

For each retry we sleep a for a while before we try again, this interval is increased for every retry until the max seconds is reached.

Parameters:
  • fun – The function to try
  • catch – Exceptions to catch, can be either tuple or a single exception class.
  • args – Positional arguments passed on to the function.
  • kwargs – Keyword arguments passed on to the function.
  • errback – Callback for when an exception in catch is raised. The callback must take two arguments: exc and interval, where exc is the exception instance, and interval is the time in seconds to sleep next..
  • max_retries – Maximum number of retries before we give up. If this is not set, we will retry forever.
  • interval_start – How long (in seconds) we start sleeping between retries.
  • interval_step – By how much the interval is increased for each retry.
  • interval_max – Maximum number of seconds to sleep between retries.

Previous topic

SQLAlchemy Session - celery.db.session

Next topic

Time and Date Utilities - celery.utils.timeutils

This Page

PKHDD[ Bcelery-2.0-archived/internals/reference/celery.utils.dispatch.html Signal Dispatch - celery.utils.dispatch — Celery 2.0.3 (stable) documentation

Signal Dispatch - celery.utils.dispatch

Previous topic

functools compat - celery.utils.functional

Next topic

Signals: Dispatcher - celery.utils.dispatch.signal

This Page

PKHDDlֿ6..@celery-2.0-archived/internals/reference/celery.utils.compat.html Python Compatibility - celery.utils.compat — Celery 2.0.3 (stable) documentation

Python Compatibility - celery.utils.compat

class celery.utils.compat.OrderedDict(*args, **kwds)

Dictionary that remembers insertion order

clear() → None. Remove all items from od.
copy() → a shallow copy of od
classmethod fromkeys(S[, v]) → New ordered dictionary with keys from S

and values equal to v (which defaults to None).

items()
iteritems()
iterkeys()
itervalues()
keys()
pop(key, default=<object object at 0x3800870>)
popitem() -> (k, v)

Return and remove a (key, value) pair. Pairs are returned in LIFO order if last is true or FIFO order if false.

setdefault(key, default=None)
update(other=(), **kwds)
values()
celery.utils.compat.chain_from_iterable()

chain.from_iterable(iterable) –> chain object

Alternate chain() contructor taking a single iterable argument that evaluates lazily.

Previous topic

Debugging Info - celery.utils.info

Next topic

Sending E-mail - celery.utils.mail

This Page

PKHDD߼IDcelery-2.0-archived/internals/reference/celery.utils.functional.html functools compat - celery.utils.functional — Celery 2.0.3 (stable) documentation

functools compat - celery.utils.functional

Functional utilities for Python 2.4 compatibility.

Previous topic

Compatibility Patches - celery.utils.patch

Next topic

Signal Dispatch - celery.utils.dispatch

This Page

PKHDDPG@celery-2.0-archived/internals/reference/celery.worker.state.html Worker State - celery.worker.state — Celery 2.0.3 (stable) documentation

Worker State - celery.worker.state

Previous topic

Remote Control Command Registry - celery.worker.control.registry

Next topic

Multiprocessing Pool Support - celery.concurrency.processes

This Page

PKHDDIKIcelery-2.0-archived/internals/reference/celery.concurrency.processes.html Multiprocessing Pool Support - celery.concurrency.processes — Celery 2.0.3 (stable) documentation

Multiprocessing Pool Support - celery.concurrency.processes

Previous topic

Worker State - celery.worker.state

Next topic

extended multiprocessing.pool - celery.concurrency.processes.pool

This Page

PKHDD(Acelery-2.0-archived/internals/reference/celery.backends.amqp.html Backend: AMQP - celery.backends.amqp — Celery 2.0.3 (stable) documentation

Backend: AMQP - celery.backends.amqp

Previous topic

Backend: Memcache - celery.backends.cache

Next topic

Backend: MongoDB - celery.backends.mongodb

This Page

PKHDDQ-Q-Ccelery-2.0-archived/internals/reference/celery.utils.timeutils.html Time and Date Utilities - celery.utils.timeutils — Celery 2.0.3 (stable) documentation

Time and Date Utilities - celery.utils.timeutils

celery.utils.timeutils.delta_resolution(dt, delta)

Round a datetime to the resolution of a timedelta.

If the timedelta is in days, the datetime will be rounded to the nearest days, if the timedelta is in hours the datetime will be rounded to the nearest hour, and so on until seconds which will just return the original datetime.

celery.utils.timeutils.rate(rate)

Parses rate strings, such as "100/m" or "2/h" and converts them to seconds.

celery.utils.timeutils.remaining(start, ends_in, now=None, relative=True)

Calculate the remaining time for a start date and a timedelta.

E.g. “how many seconds left for 30 seconds after start?”

Parameters:
  • start – Start datetime.datetime.
  • ends_in – The end delta as a datetime.timedelta.
  • relative

    If set to False, the end time will be calculated using delta_resolution() (i.e. rounded to the resolution

    of ends_in).
  • now – The current time, defaults to datetime.now().
celery.utils.timeutils.timedelta_seconds(delta)

Convert datetime.timedelta to seconds.

Doesn’t account for negative values.

celery.utils.timeutils.weekday(name)

Return the position of a weekday (0 - 7, where 0 is Sunday).

Example:

>>> weekday("sunday"), weekday("sun"), weekday("mon")
(0, 0, 1)

Previous topic

Utilities - celery.utils

Next topic

Debugging Info - celery.utils.info

This Page

PKHDDBb%%<celery-2.0-archived/internals/reference/celery.platform.html Platform Specific - celery.platform — Celery 2.0.3 (stable) documentation

Platform Specific - celery.platform

celery.platform.ignore_signal(signal_name)

Ignore signal using SIG_IGN.

Does nothing if the platform doesn’t support signals, or the specified signal in particular.

celery.platform.install_signal_handler(signal_name, handler)

Install a handler.

Does nothing if the current platform doesn’t support signals, or the specified signal in particular.

celery.platform.reset_signal(signal_name)

Reset signal to the default signal handler.

Does nothing if the platform doesn’t support signals, or the specified signal in particular.

celery.platform.set_mp_process_title(progname, info=None)

Set the ps name using the multiprocessing process name.

Only works if setproctitle is installed.

celery.platform.set_process_title(progname, info=None)

Set the ps name for the currently running process.

Only works if :mod`setproctitle` is installed.

Previous topic

Signals: Safe References - celery.utils.dispatch.saferef

Next topic

Change history

This Page

PKHDDbeeDcelery-2.0-archived/internals/reference/celery.worker.scheduler.html Worker Scheduler - celery.worker.scheduler — Celery 2.0.3 (stable) documentation

Worker Scheduler - celery.worker.scheduler

Previous topic

Token Bucket (rate limiting) - celery.worker.buckets

Next topic

Worker Heartbeats - celery.worker.heartbeat

This Page

PKHDDRxP????Jcelery-2.0-archived/internals/reference/celery.utils.dispatch.saferef.html Signals: Safe References - celery.utils.dispatch.saferef — Celery 2.0.3 (stable) documentation

Signals: Safe References - celery.utils.dispatch.saferef

“Safe weakrefs”, originally from pyDispatcher.

Provides a way to safely weakref any function, including bound methods (which aren’t handled by the core weakref module).

class celery.utils.dispatch.saferef.BoundMethodWeakref(target, on_delete=None)

‘Safe’ and reusable weak references to instance methods.

BoundMethodWeakref objects provide a mechanism for referencing a bound method without requiring that the method object itself (which is normally a transient object) is kept alive. Instead, the BoundMethodWeakref object keeps weak references to both the object and the function which together define the instance method.

key

the identity key for the reference, calculated by the class’s calculate_key() method applied to the target instance method

deletion_methods

sequence of callable objects taking single argument, a reference to this object which will be called when either the target object or target function is garbage collected (i.e. when this object becomes invalid). These are specified as the on_delete parameters of safe_ref() calls.

weak_self

weak reference to the target object

weak_func

weak reference to the target function

_all_instances

class attribute pointing to all live BoundMethodWeakref objects indexed by the class’s calculate_key(target) method applied to the target objects. This weak value dictionary is used to short-circuit creation so that multiple references to the same (object, function) pair produce the same BoundMethodWeakref instance.

classmethod calculate_key(target)

Calculate the reference key for this reference

Currently this is a two-tuple of the id()‘s of the target object and the target function respectively.

class celery.utils.dispatch.saferef.BoundNonDescriptorMethodWeakref(target, on_delete=None)

A specialized BoundMethodWeakref, for platforms where instance methods are not descriptors.

It assumes that the function name and the target attribute name are the same, instead of assuming that the function is a descriptor. This approach is equally fast, but not 100% reliable because functions can be stored on an attribute named differenty than the function’s name such as in:

>>> class A(object):
...     pass

>>> def foo(self):
...     return "foo"
>>> A.bar = foo

But this shouldn’t be a common use case. So, on platforms where methods aren’t descriptors (such as Jython) this implementation has the advantage of working in the most cases.

celery.utils.dispatch.saferef.get_bound_method_weakref(target, on_delete)

Instantiates the appropiate BoundMethodWeakRef, depending on the details of the underlying class method implementation.

celery.utils.dispatch.saferef.safe_ref(target, on_delete=None)

Return a safe weak reference to a callable target

Parameters:
  • target – the object to be weakly referenced, if it’s a bound method reference, will create a BoundMethodWeakref, otherwise creates a simple weakref.ref.
  • on_delete – if provided, will have a hard reference stored to the callable to be called after the safe reference goes out of scope with the reference object, (either a weakref.ref or a BoundMethodWeakref) as argument.

Previous topic

Signals: Dispatcher - celery.utils.dispatch.signal

Next topic

Platform Specific - celery.platform

This Page

PKHDD|Ncelery-2.0-archived/internals/reference/celery.concurrency.processes.pool.html extended multiprocessing.pool - celery.concurrency.processes.pool — Celery 2.0.3 (stable) documentation

extended multiprocessing.pool - celery.concurrency.processes.pool

Previous topic

Multiprocessing Pool Support - celery.concurrency.processes

Next topic

Thread Pool Support EXPERIMENTAL - celery.concurrency.threads

This Page

PKHDDIqq>celery-2.0-archived/internals/reference/celery.db.session.html SQLAlchemy Session - celery.db.session — Celery 2.0.3 (stable) documentation

SQLAlchemy Session - celery.db.session

Previous topic

SQLAlchemy Models - celery.db.models

Next topic

Utilities - celery.utils

This Page

PKHDDF<--7celery-2.0-archived/internals/reference/celery.log.html Logging - celery.log — Celery 2.0.3 (stable) documentation

Logging - celery.log

Previous topic

Message Routers - celery.routes

Next topic

SQLAlchemy Models - celery.db.models

This Page

PKHDDⱧ%%:celery-2.0-archived/internals/reference/celery.routes.html Message Routers - celery.routes — Celery 2.0.3 (stable) documentation

Message Routers - celery.routes

class celery.routes.MapRoute(map)

Makes a router out of a dict.

route_for_task(task, *args, **kwargs)
class celery.routes.Router(routes=None, queues=None, create_missing=False)
add_queue(queue)
expand_destination(route)
lookup_route(task, args=None, kwargs=None)
route(options, task, args=(), kwargs={})
celery.routes.prepare(routes)

Expand ROUTES setting.

Previous topic

Datastructures - celery.datastructures

Next topic

Logging - celery.log

This Page

PKHDD[[Fcelery-2.0-archived/internals/reference/celery.backends.cassandra.html Backend: Cassandra - celery.backends.cassandra — Celery 2.0.3 (stable) documentation

Backend: Cassandra - celery.backends.cassandra

Previous topic

Backend: Redis - celery.backends.pyredis

Next topic

Backend: Tokyo Tyrant - celery.backends.tyrant

This Page

PKHDDl#l#>celery-2.0-archived/internals/reference/celery.utils.mail.html Sending E-mail - celery.utils.mail — Celery 2.0.3 (stable) documentation

Sending E-mail - celery.utils.mail

class celery.utils.mail.Mailer(host='localhost', port=0, user=None, password=None)
send(message)
class celery.utils.mail.Message(to=None, sender=None, subject=None, body=None, charset='us-ascii')
exception celery.utils.mail.SendmailWarning

Problem happened while sending the e-mail message.

celery.utils.mail.mail_admins(subject, message, fail_silently=False)

Send a message to the admins in conf.ADMINS.

Previous topic

Python Compatibility - celery.utils.compat

Next topic

Compatibility Patches - celery.utils.patch

This Page

PKHDD=+[--Dcelery-2.0-archived/internals/reference/celery.worker.heartbeat.html Worker Heartbeats - celery.worker.heartbeat — Celery 2.0.3 (stable) documentation

Worker Heartbeats - celery.worker.heartbeat

Previous topic

Worker Scheduler - celery.worker.scheduler

Next topic

Worker Control - celery.worker.control

This Page

PKHDD&BJJBcelery-2.0-archived/internals/reference/celery.datastructures.html Datastructures - celery.datastructures — Celery 2.0.3 (stable) documentation

Datastructures - celery.datastructures

class celery.datastructures.AttributeDict

Dict subclass with attribute access.

class celery.datastructures.ExceptionInfo(exc_info)

Exception wrapping an exception and its traceback.

Parameters:exc_info – The exception tuple info as returned by traceback.format_exception().
exception

The original exception.

traceback

A traceback from the point when exception was raised.

class celery.datastructures.LimitedSet(maxlen=None, expires=None)

Kind-of Set with limitations.

Good for when you need to test for membership (a in set), but the list might become to big, so you want to limit it so it doesn’t consume too much resources.

Parameters:
  • maxlen – Maximum number of members before we start deleting expired members.
  • expires – Time in seconds, before a membership expires.
add(value)

Add a new member.

as_dict()
chronologically
first

Get the oldest member.

pop_value(value)

Remove membership by finding value.

update(other)
class celery.datastructures.LocalCache(limit=None)

Dictionary with a finite number of keys.

Older items expires first.

class celery.datastructures.PositionQueue(length)

A positional queue of a specific length, with slots that are either filled or unfilled. When all of the positions are filled, the queue is considered full().

Parameters:length – see length.
length

The number of items required for the queue to be considered full.

class UnfilledPosition(position)

Describes an unfilled slot.

PositionQueue.filled

Returns the filled slots as a list.

PositionQueue.full()

Returns True if all of the slots has been filled.

class celery.datastructures.SharedCounter(initial_value)

Thread-safe counter.

Please note that the final value is not synchronized, this means that you should not update the value by using a previous value, the only reliable operations are increment and decrement.

Example

>>> max_clients = SharedCounter(initial_value=10)

# Thread one >>> max_clients += 1 # OK (safe)

# Thread two >>> max_clients -= 3 # OK (safe)

# Main thread >>> if client >= int(max_clients): # Max clients now at 8 ... wait()

>>> max_client = max_clients + 10 # NOT OK (unsafe)
decrement(n=1)

Decrement value.

increment(n=1)

Increment value.

celery.datastructures.consume_queue(queue)

Iterator yielding all immediately available items in a Queue.Queue.

The iterator stops as soon as the queue raises Queue.Empty.

Example

>>> q = Queue()
>>> map(q.put, range(4))
>>> list(consume_queue(q))
[0, 1, 2, 3]
>>> list(consume_queue(q))
[]

Previous topic

Serialization Tools - celery.serialization

Next topic

Message Routers - celery.routes

This Page

PKHDD6GGEcelery-2.0-archived/internals/reference/celery.backends.database.html Backend: SQLAlchemy Database - celery.backends.database — Celery 2.0.3 (stable) documentation

Backend: SQLAlchemy Database - celery.backends.database

Previous topic

Backend: Base - celery.backends.base

Next topic

Backend: Memcache - celery.backends.cache

This Page

PKHDD Bcelery-2.0-archived/internals/reference/celery.worker.control.html Worker Control - celery.worker.control — Celery 2.0.3 (stable) documentation

Worker Control - celery.worker.control

Previous topic

Worker Heartbeats - celery.worker.heartbeat

Next topic

Built-in Remote Control Commands - celery.worker.control.builtins

This Page

PKHDD23::Icelery-2.0-archived/internals/reference/celery.utils.dispatch.signal.html Signals: Dispatcher - celery.utils.dispatch.signal — Celery 2.0.3 (stable) documentation

Signals: Dispatcher - celery.utils.dispatch.signal

Signal class.

class celery.utils.dispatch.signal.Signal(providing_args=None)

Base class for all signals

receivers
Internal attribute, holds a dictionary of
``{receriverkey (id): weakref(receiver)}`` mappings.
connect(receiver, sender=None, weak=True, dispatch_uid=None)

Connect receiver to sender for signal.

Parameters:
  • receiver

    A function or an instance method which is to receive signals. Receivers must be hashable objects.

    if weak is True, then receiver must be weak-referencable (more precisely saferef.safe_ref() must be able to create a reference to the receiver).

    Receivers must be able to accept keyword arguments.

    If receivers have a dispatch_uid attribute, the receiver will not be added if another receiver already exists with that dispatch_uid.

  • sender – The sender to which the receiver should respond. Must either be of type Signal, or None to receive events from any sender.
  • weak – Whether to use weak references to the receiver. By default, the module will attempt to use weak references to the receiver objects. If this parameter is false, then strong references will be used.
  • dispatch_uid – An identifier used to uniquely identify a particular instance of a receiver. This will usually be a string, though it may be anything hashable.
disconnect(receiver=None, sender=None, weak=True, dispatch_uid=None)

Disconnect receiver from sender for signal.

If weak references are used, disconnect need not be called. The receiver will be removed from dispatch automatically.

Parameters:
  • receiver – The registered receiver to disconnect. May be none if dispatch_uid is specified.
  • sender – The registered sender to disconnect.
  • weak – The weakref state to disconnect.
  • dispatch_uid – the unique identifier of the receiver to disconnect
send(sender, **named)

Send signal from sender to all connected receivers.

If any receiver raises an error, the error propagates back through send, terminating the dispatch loop, so it is quite possible to not have all receivers called if a raises an error.

Parameters:
  • sender – The sender of the signal. Either a specific object or None.
  • **named – Named arguments which will be passed to receivers.
Returns:

a list of tuple pairs: [(receiver, response), ... ].

send_robust(sender, **named)

Send signal from sender to all connected receivers catching errors.

Parameters:
  • sender – The sender of the signal. Can be any python object (normally one registered with a connect if you actually want something to occur).
  • **named – Named arguments which will be passed to receivers. These arguments must be a subset of the argument names defined in providing_args.
Returns:

a list of tuple pairs: [(receiver, response), ... ].

Raises DispatcherKeyError:
 

if any receiver raises an error (specifically any subclass of Exception), the error instance is returned as the result for that receiver.

Previous topic

Signal Dispatch - celery.utils.dispatch

Next topic

Signals: Safe References - celery.utils.dispatch.saferef

This Page

PKHDDP3222celery-2.0-archived/internals/reference/index.html Internal Module Reference — Celery 2.0.3 (stable) documentation

Internal Module Reference

Release:2.0
Date:February 04, 2014

Previous topic

Module Index

Next topic

Multiprocessing Worker - celery.worker

This Page

PKHDDBOODcelery-2.0-archived/internals/reference/celery.backends.pyredis.html Backend: Redis - celery.backends.pyredis — Celery 2.0.3 (stable) documentation

Backend: Redis - celery.backends.pyredis

Previous topic

Backend: MongoDB - celery.backends.mongodb

Next topic

Backend: Cassandra - celery.backends.cassandra

This Page

PKHDD foceMeM+celery-2.0-archived/userguide/tasksets.html Sets of tasks, Subtasks and Callbacks — Celery 2.0.3 (stable) documentation

Sets of tasks, Subtasks and Callbacks

Subtasks

The subtask class is used to wrap the arguments and execution options for a single task invocation:

subtask(task_name_or_cls, args, kwargs, options)

For convenience every task also has a shortcut to create subtask instances:

task.subtask(args, kwargs, options)

subtask is actually a subclass of dict, which means it can be serialized with JSON or other encodings that doesn’t support complex Python objects.

Also it can be regarded as a type, as the following usage works:

>>> s = subtask("tasks.add", args=(2, 2), kwargs={})

>>> subtask(dict(s))  # coerce dict into subtask

This makes it excellent as a means to pass callbacks around to tasks.

Callbacks

Let’s improve our add task so it can accept a callback that takes the result as an argument:

from celery.decorators import task
from celery.task.sets import subtask

@task
def add(x, y, callback=None):
    result = x + y
    if callback is not None:
        subtask(callback).delay(result)
    return result

See? subtask also knows how it should be applied, asynchronously by delay(), and eagerly by apply().

The best thing is that any arguments you add to subtask.delay, will be prepended to the arguments specified by the subtask itself!

So if you have the subtask:

>>> add.subtask(args=(10, ))

subtask.delay(result) becomes:

>>> add.apply_async(args=(result, 10))

Now let’s execute our new add task with a callback:

>>> add.delay(2, 2, callback=add.subtask((8, )))

As expected this will first launch one task calculating 2 + 2, then another task calculating 4 + 8.

Task Sets

The TaskSet enables easy invocation of several tasks at once, and is then able to join the results in the same order as the tasks were invoked.

A task set takes a list of subtask‘s:

>>> from celery.task.sets import TaskSet
>>> from tasks import add

>>> job = TaskSet(tasks=[
...             add.subtask((4, 4)),
...             add.subtask((8, 8)),
...             add.subtask((16, 16)),
...             add.subtask((32, 32)),
... ])

>>> result = job.apply_async()

>>> result.ready()  # has all subtasks completed?
True
>>> result.successful() # was all subtasks successful?

>>> result.join()
[4, 8, 16, 32, 64]

Results

When a TaskSet is applied it returns a TaskSetResult object.

TaskSetResult takes a list of AsyncResult instances and operates on them as if it was a single task.

It supports the following operations:

  • successful()

    Returns True if all of the subtasks finished successfully (e.g. did not raise an exception).

  • failed()

    Returns True if any of the subtasks failed.

  • waiting()

    Returns True if any of the subtasks is not ready yet.

  • ready()

    Return True if all of the subtasks are ready.

  • completed_count()

    Returns the number of completed subtasks.

  • revoke()

    Revokes all of the subtasks.

  • iterate()

    Iterates over the return values of the subtasks as they finish, one by one.

  • join()

    Gather the results for all of the subtasks and return a list with them ordered by the order of which they were called.

Table Of Contents

Previous topic

Workers Guide

Next topic

HTTP Callback Tasks (Webhooks)

This Page

PKHDD *celery-2.0-archived/userguide/routing.html Routing Tasks — Celery 2.0.3 (stable) documentation

Routing Tasks

NOTE This document refers to functionality only available in brokers using AMQP. Other brokers may implement some functionality, see their respective documenation for more information, or contact the mailinglist.

Basics

Automatic routing

The simplest way to do routing is to use the CELERY_CREATE_MISSING_QUEUES setting (on by default).

With this setting on, a named queue that is not already defined in CELERY_QUEUES will be created automatically. This makes it easy to perform simple routing tasks.

Say you have two servers, x, and y that handles regular tasks, and one server z, that only handles feed related tasks. You can use this configuration:

CELERY_ROUTES = {"feed.tasks.import_feed": {"queue": "feeds"}}

With this route enabled import feed tasks will be routed to the "feeds" queue, while all other tasks will be routed to the default queue (named "celery" for historic reasons).

Now you can start server z to only process the feeds queue like this:

(z)$ celeryd -Q feeds

You can specify as many queues as you want, so you can make this server process the default queue as well:

(z)$ celeryd -Q feeds,celery

Changing the name of the default queue

You can change the name of the default queue by using the following configuration:

CELERY_QUEUES = {"default": {"exchange": "default",
                             "binding_key": "default"}}
CELERY_DEFAULT_QUEUE = "default"

How the queues are defined

The point with this feature is to hide the complex AMQP protocol for users with only basic needs. However — you may still be interested in how these queues are defined.

A queue named "video" will be created with the following settings:

{"exchange": "video",
 "exchange_type": "direct",
 "routing_key": "video"}

The non-AMQP backends like ghettoq does not support exchanges, so they require the exchange to have the same name as the queue. Using this design ensures it will work for them as well.

Manual routing

Say you have two servers, x, and y that handles regular tasks, and one server z, that only handles feed related tasks, you can use this configuration:

CELERY_DEFAULT_QUEUE = "default"
CELERY_QUEUES = {
    "default": {
        "binding_key": "task.#",
    },
    "feed_tasks": {
        "binding_key": "feed.#",
    },
}
CELERY_DEFAULT_EXCHANGE = "tasks"
CELERY_DEFAULT_EXCHANGE_TYPE = "topic"
CELERY_DEFAULT_ROUTING_KEY = "task.default"

CELERY_QUEUES is a map of queue names and their exchange/type/binding_key, if you don’t set exchange or exchange type, they will be taken from the CELERY_DEFAULT_EXCHANGE/CELERY_DEFAULT_EXCHANGE_TYPE settings.

To route a task to the feed_tasks queue, you can add an entry in the CELERY_ROUTES setting:

CELERY_ROUTES = {
        "feeds.tasks.import_feed": {
            "queue": "feed_tasks",
            "routing_key": "feed.import",
        },
}

You can also override this using the routing_key argument to apply_async(), or send_task():

>>> from feeds.tasks import import_feed
>>> import_feed.apply_async(args=["http://cnn.com/rss"],
...                         queue="feed_tasks",
...                         routing_key="feed.import")

To make server z consume from the feed queue exclusively you can start it with the -Q option:

(z)$ celeryd -Q feed_tasks --hostname=z.example.com

Servers x and y must be configured to consume from the default queue:

(x)$ celeryd -Q default --hostname=x.example.com
(y)$ celeryd -Q default --hostname=y.example.com

If you want, you can even have your feed processing worker handle regular tasks as well, maybe in times when there’s a lot of work to do:

(z)$ celeryd -Q feed_tasks,default --hostname=z.example.com

If you have another queue but on another exchange you want to add, just specify a custom exchange and exchange type:

CELERY_QUEUES = {
        "feed_tasks": {
            "binding_key": "feed.#",
        },
        "regular_tasks": {
            "binding_key": "task.#",
        },
        "image_tasks": {
            "binding_key": "image.compress",
            "exchange": "mediatasks",
            "exchange_type": "direct",
        },
    }

If you’re confused about these terms, you should read up on AMQP concepts.

In addition to the AMQP Primer below, there’s Rabbits and Warrens, an excellent blog post describing queues and exchanges. There’s also AMQP in 10 minutes*: Flexible Routing Model, and Standard Exchange Types. For users of RabbitMQ the RabbitMQ FAQ could be useful as a source of information.

AMQP Primer

Messages

A message consists of headers and a body. Celery uses headers to store the content type of the message and its content encoding. In Celery the content type is usually the serialization format used to serialize the message, and the body contains the name of the task to execute, the task id (UUID), the arguments to execute it with and some additional metadata - like the number of retries and its ETA (if any).

This is an example task message represented as a Python dictionary:

{"task": "myapp.tasks.add",
 "id": "54086c5e-6193-4575-8308-dbab76798756",
 "args": [4, 4],
 "kwargs": {}}

Producers, consumers and brokers

The client sending messages is typically called a publisher, or a producer, while the entity receiving messages is called a consumer.

The broker is the message server, routing messages from producers to consumers.

You are likely to see these terms used a lot in AMQP related material.

Exchanges, queues and routing keys.

  1. Messages are sent to exchanges.
  2. An exchange routes messages to one or more queues. Several exchange types exists, providing different ways to do routing.
  3. The message waits in the queue until someone consumes from it.
  4. The message is deleted from the queue when it has been acknowledged.

The steps required to send and receive messages are:

  1. Create an exchange
  2. Create a queue
  3. Bind the queue to the exchange.

Celery automatically creates the entities necessary for the queues in CELERY_QUEUES to work (except if the queue’s auto_declare setting is set to False).

Here’s an example queue configuration with three queues; One for video, one for images and finally, one default queue for everything else:

CELERY_QUEUES = {
    "default": {
        "exchange": "default",
        "binding_key": "default"},
    "videos": {
        "exchange": "media",
        "binding_key": "media.video",
    },
    "images": {
        "exchange": "media",
        "binding_key": "media.image",
    }
}
CELERY_DEFAULT_QUEUE = "default"
CELERY_DEFAULT_EXCHANGE_TYPE = "direct"
CELERY_DEFAULT_ROUTING_KEY = "default"

NOTE: In Celery the routing_key is the key used to send the message, while binding_key is the key the queue is bound with. In the AMQP API they are both referred to as the routing key.

Exchange types

The exchange type defines how the messages are routed through the exchange. The exchange types defined in the standard are direct, topic, fanout and headers. Also non-standard exchange types are available as plugins to RabbitMQ, like the last-value-cache plug-in by Michael Bridgen.

Direct exchanges

Direct exchanges match by exact routing keys, so a queue bound with the routing key video only receives messages with the same routing key.

Topic exchanges

Topic exchanges matches routing keys using dot-separated words, and can include wildcard characters: * matches a single word, # matches zero or more words.

With routing keys like usa.news, usa.weather, norway.news and norway.weather, bindings could be *.news (all news), usa.# (all items in the USA) or usa.weather (all USA weather items).

Hands-on with the API

Celery comes with a tool called camqadm (short for celery AMQP admin). It’s used for simple admnistration tasks like creating/deleting queues and exchanges, purging queues and sending messages. In short it’s for simple command-line access to the AMQP API.

You can write commands directly in the arguments to camqadm, or just start with no arguments to start it in shell-mode:

$ camqadm
-> connecting to amqp://guest@localhost:5672/.
-> connected.
1>

Here 1> is the prompt. The number is counting the number of commands you have executed. Type help for a list of commands. It also has autocompletion, so you can start typing a command and then hit the tab key to show a list of possible matches.

Now let’s create a queue we can send messages to:

1> exchange.declare testexchange direct
ok.
2> queue.declare testqueue
ok. queue:testqueue messages:0 consumers:0.
3> queue.bind testqueue testexchange testkey
ok.

This created the direct exchange testexchange, and a queue named testqueue. The queue is bound to the exchange using the routing key testkey.

From now on all messages sent to the exchange testexchange with routing key testkey will be moved to this queue. We can send a message by using the basic.publish command:

4> basic.publish "This is a message!" testexchange testkey
ok.

Now that the message is sent we can retrieve it again. We use the basic.get command here, which pops a single message off the queue, this command is not recommended for production as it implies polling, any real application would declare consumers instead.

Pop a message off the queue:

5> basic.get testqueue
{'body': 'This is a message!',
 'delivery_info': {'delivery_tag': 1,
                   'exchange': u'testexchange',
                   'message_count': 0,
                   'redelivered': False,
                   'routing_key': u'testkey'},
 'properties': {}}

AMQP uses acknowledgment to signify that a message has been received and processed successfully. The message is sent to the next receiver if it has not been acknowledged before the client connection is closed.

Note the delivery tag listed in the structure above; Within a connection channel, every received message has a unique delivery tag, This tag is used to acknowledge the message. Note that delivery tags are not unique across connections, so in another client the delivery tag 1 might point to a different message than in this channel.

You can acknowledge the message we received using basic.ack:

6> basic.ack 1
ok.

To clean up after our test session we should delete the entities we created:

7> queue.delete testqueue
ok. 0 messages deleted.
8> exchange.delete testexchange
ok.

Routing Tasks

Defining queues

In Celery the queues are defined by the CELERY_QUEUES setting.

Here’s an example queue configuration with three queues; One for video, one for images and finally, one default queue for everything else:

CELERY_QUEUES = {
    "default": {
        "exchange": "default",
        "binding_key": "default"},
    "videos": {
        "exchange": "media",
        "exchange_type": "topic",
        "binding_key": "media.video",
    },
    "images": {
        "exchange": "media",
        "exchange_type": "topic",
        "binding_key": "media.image",
    }
}
CELERY_DEFAULT_QUEUE = "default"
CELERY_DEFAULT_EXCHANGE = "default"
CELERY_DEFAULT_EXCHANGE_TYPE = "direct"
CELERY_DEFAULT_ROUTING_KEY = "default"

Here, the CELERY_DEFAULT_QUEUE will be used to route tasks that doesn’t have an explicit route.

The default exchange, exchange type and routing key will be used as the default routing values for tasks, and as the default values for entries in CELERY_QUEUES.

Specifying task destination

The destination for a task is decided by the following (in order):

  1. The Routers defined in CELERY_ROUTES.
  2. The routing arguments to apply_async().
  3. Routing related attributes defined on the Task itself.

It is considered best practice to not hard-code these settings, but rather leave that as configuration options by using Routers; This is the most flexible approach, but sensible defaults can still be set as task attributes.

Routers

A router is a class that decides the routing options for a task.

All you need to define a new router is to create a class with a route_for_task method:

class MyRouter(object):

    def route_for_task(self, task, args=None, kwargs=None):
        if task == "myapp.tasks.compress_video":
            return {"exchange": "video",
                    "exchange_type": "topic",
                    "routing_key": "video.compress"}
        return None

If you return the queue key, it will expand with the defined settings of that queue in CELERY_QUEUES:

{"queue": "video", "routing_key": "video.compress"}

becomes -->

    {"queue": "video",
     "exchange": "video",
     "exchange_type": "topic",
     "routing_key": "video.compress"}

You install router classes by adding it to the CELERY_ROUTES setting:

CELERY_ROUTES = (MyRouter, )

Router classes can also be added by name:

CELERY_ROUTES = ("myapp.routers.MyRouter", )

For simple task name -> route mappings like the router example above, you can simply drop a dict into CELERY_ROUTES to get the same result:

CELERY_ROUTES = ({"myapp.tasks.compress_video": {
                    "queue": "video",
                    "routing_key": "video.compress"}}, )

The routers will then be traversed in order, it will stop at the first router returning a value and use that as the final route for the task.

PKHDDMK<</celery-2.0-archived/userguide/remote-tasks.html HTTP Callback Tasks (Webhooks) — Celery 2.0.3 (stable) documentation

HTTP Callback Tasks (Webhooks)

Basics

If you need to call into another language, framework or similar, you can do so by using HTTP callback tasks.

The HTTP callback tasks use GET/POST arguments and a simple JSON response to return results. The scheme to call a task is:

GET http://example.com/mytask/?arg1=a&arg2=b&arg3=c

or using POST:

POST http://example.com/mytask

Note: POST data has to be form encoded. Whether to use GET or POST is up to you and your requirements.

The web page should then return a response in the following format if the execution was successful:

{"status": "success", "retval": ....}

or if there was an error:

{"status": "failure": "reason": "Invalid moon alignment."}

Django webhook example

With this information you could define a simple task in Django:

from django.http import HttpResponse
from anyjson import serialize


def multiply(request):
    x = int(request.GET["x"])
    y = int(request.GET["y"])
    result = x * y
    response = {"status": "success", "retval": result}
    return HttpResponse(serialize(response), mimetype="application/json")

Ruby on Rails webhook example

or in Ruby on Rails:

def multiply
    @x = params[:x].to_i
    @y = params[:y].to_i

    @status = {:status => "success", :retval => @x * @y}

    render :json => @status
end

You can easily port this scheme to any language/framework; new examples and libraries are very welcome.

Executing webhook tasks

To execute the task you use the URL class:

>>> from celery.task.http import URL
>>> res = URL("http://example.com/multiply").get_async(x=10, y=10)

URL is a shortcut to the HttpDispatchTask. You can subclass this to extend the functionality.

>>> from celery.task.http import HttpDispatchTask
>>> res = HttpDispatchTask.delay(url="http://example.com/multiply", method="GET", x=10, y=10)
>>> res.get()
100

The output of celeryd (or the logfile if you’ve enabled it) should show the task being processed:

[INFO/MainProcess] Task celery.task.http.HttpDispatchTask
        [f2cc8efc-2a14-40cd-85ad-f1c77c94beeb] processed: 100

Since applying tasks can be done via HTTP using the celery.views.apply view, executing tasks from other languages is easy. For an example service exposing tasks via HTTP you should have a look at examples/celery_http_gateway.

Table Of Contents

Previous topic

Sets of tasks, Subtasks and Callbacks

Next topic

Routing Tasks

This Page

PKHDD  (celery-2.0-archived/userguide/tasks.html Tasks — Celery 2.0.3 (stable) documentation

Tasks

Basics

A task is a class that encapsulates a function and its execution options. Given a function create_user, that takes two arguments: username and password, you can create a task like this:

from celery.task import Task

class CreateUserTask(Task):
    def run(self, username, password):
        create_user(username, password)

For convenience there is a shortcut decorator that turns any function into a task, celery.decorators.task():

from celery.decorators import task
from django.contrib.auth import User

@task
def create_user(username, password):
    User.objects.create(username=username, password=password)

The task decorator takes the same execution options as the Task class does:

@task(serializer="json")
def create_user(username, password):
    User.objects.create(username=username, password=password)

Default keyword arguments

Celery supports a set of default arguments that can be forwarded to any task. Tasks can choose not to take these, or list the ones they want. The worker will do the right thing.

The current default keyword arguments are:

  • logfile

    The log file, can be passed on to get_logger() to gain access to the workers log file. See Logging.

  • loglevel

    The loglevel used.

  • task_id

    The unique id of the executing task.

  • task_name

    Name of the executing task.

  • task_retries

    How many times the current task has been retried. An integer starting at 0.

  • task_is_eager

    Set to True if the task is executed locally in the client, and not by a worker.

  • delivery_info

    Additional message delivery information. This is a mapping containing the exchange and routing key used to deliver this task. It’s used by e.g. retry() to resend the task to the same destination queue.

    NOTE As some messaging backends doesn’t have advanced routing capabilities, you can’t trust the availability of keys in this mapping.

Logging

You can use the workers logger to add diagnostic output to the worker log:

class AddTask(Task):

    def run(self, x, y, **kwargs):
        logger = self.get_logger(**kwargs)
        logger.info("Adding %s + %s" % (x, y))
        return x + y

or using the decorator syntax:

@task()
def add(x, y, **kwargs):
    logger = add.get_logger(**kwargs)
    logger.info("Adding %s + %s" % (x, y))
    return x + y

There are several logging levels available, and the workers loglevel setting decides whether or not they will be written to the log file.

Of course, you can also simply use print as anything written to standard out/-err will be written to the logfile as well.

Retrying a task if something fails

Simply use retry() to re-send the task. It will do the right thing, and respect the max_retries attribute:

@task()
def send_twitter_status(oauth, tweet, **kwargs):
    try:
        twitter = Twitter(oauth)
        twitter.update_status(tweet)
    except (Twitter.FailWhaleError, Twitter.LoginError), exc:
        send_twitter_status.retry(args=[oauth, tweet], kwargs=kwargs, exc=exc)

Here we used the exc argument to pass the current exception to Task.retry(). At each step of the retry this exception is available as the tombstone (result) of the task. When Task.max_retries has been exceeded this is the exception raised. However, if an exc argument is not provided the RetryTaskError exception is raised instead.

Important note: The task has to take the magic keyword arguments in order for max retries to work properly, this is because it keeps track of the current number of retries using the task_retries keyword argument passed on to the task. In addition, it also uses the task_id keyword argument to use the same task id, and delivery_info to route the retried task to the same destination.

Using a custom retry delay

When a task is to be retried, it will wait for a given amount of time before doing so. The default delay is in the Task.default_retry_delay attribute on the task. By default this is set to 3 minutes. Note that the unit for setting the delay is in seconds (int or float).

You can also provide the countdown argument to retry() to override this default.

class MyTask(Task):
    default_retry_delay = 30 * 60 # retry in 30 minutes

    def run(self, x, y, **kwargs):
        try:
            ...
        except Exception, exc:
            self.retry([x, y], kwargs, exc=exc,
                       countdown=60) # override the default and
                                     # - retry in 1 minute

Task options

  • name

    The name the task is registered as. You can set this name manually, or just use the default which is automatically generated using the module and class name.

  • abstract

    Abstract classes are not registered, but are used as the superclass when making new task types by subclassing.

  • max_retries

    The maximum number of attempted retries before giving up. If this is exceeded the :exc`~celery.exceptions.MaxRetriesExceeded` exception will be raised. Note that you have to retry manually, it’s not something that happens automatically.

  • default_retry_delay

    Default time in seconds before a retry of the task should be executed. Can be either an int or a float. Default is a 1 minute delay (60 seconds).

  • rate_limit

    Set the rate limit for this task type, that is, how many times in a given period of time is the task allowed to run.

    If this is None no rate limit is in effect. If it is an integer, it is interpreted as “tasks per second”.

    The rate limits can be specified in seconds, minutes or hours by appending "/s", "/m" or “/h"” to the value. Example: "100/m" (hundred tasks a minute). Default is the ``CELERY_DEFAULT_RATE_LIMIT setting, which if not specified means rate limiting for tasks is turned off by default.

  • ignore_result

    Don’t store the status and return value. This means you can’t

    use the celery.result.AsyncResult to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual.

  • disable_error_emails

    Disable error e-mails for this task. Default is False. Note: You can also turn off error e-mails globally using the CELERY_SEND_TASK_ERROR_EMAILS setting.

  • serializer

    A string identifying the default serialization method to use. Defaults to the CELERY_TASK_SERIALIZER setting. Can be pickle json, yaml, or any custom serialization methods that have been registered with carrot.serialization.registry.

    Please see Executing Tasks for more information.

Message and routing options

  • queue

    Use the routing settings from a queue defined in CELERY_QUEUES. If defined the exchange and routing_key options will be ignored.

  • exchange

    Override the global default exchange for this task.

  • routing_key

    Override the global default routing_key for this task.

  • mandatory

    If set, the task message has mandatory routing. By default the task is silently dropped by the broker if it can’t be routed to a queue. However - If the task is mandatory, an exception will be raised instead.

  • immediate

    Request immediate delivery. If the task cannot be routed to a task worker immediately, an exception will be raised. This is instead of the default behavior, where the broker will accept and queue the task, but with no guarantee that the task will ever be executed.

  • priority

    The message priority. A number from 0 to 9, where 0 is the highest. Note: RabbitMQ does not support priorities yet.

See Executing Tasks for more information about the messaging options available, also Routing Tasks.

Example

Let’s take a real wold example; A blog where comments posted needs to be filtered for spam. When the comment is created, the spam filter runs in the background, so the user doesn’t have to wait for it to finish.

We have a Django blog application allowing comments on blog posts. We’ll describe parts of the models/views and tasks for this application.

blog/models.py

The comment model looks like this:

from django.db import models
from django.utils.translation import ugettext_lazy as _


class Comment(models.Model):
    name = models.CharField(_("name"), max_length=64)
    email_address = models.EmailField(_("e-mail address"))
    homepage = models.URLField(_("home page"),
                               blank=True, verify_exists=False)
    comment = models.TextField(_("comment"))
    pub_date = models.DateTimeField(_("Published date"),
                                    editable=False, auto_add_now=True)
    is_spam = models.BooleanField(_("spam?"),
                                  default=False, editable=False)

    class Meta:
        verbose_name = _("comment")
        verbose_name_plural = _("comments")

In the view where the comment is posted, we first write the comment to the database, then we launch the spam filter task in the background.

blog/views.py

from django import forms
frmo django.http import HttpResponseRedirect
from django.template.context import RequestContext
from django.shortcuts import get_object_or_404, render_to_response

from blog import tasks
from blog.models import Comment


class CommentForm(forms.ModelForm):

    class Meta:
        model = Comment


def add_comment(request, slug, template_name="comments/create.html"):
    post = get_object_or_404(Entry, slug=slug)
    remote_addr = request.META.get("REMOTE_ADDR")

    if request.method == "post":
        form = CommentForm(request.POST, request.FILES)
        if form.is_valid():
            comment = form.save()
            # Check spam asynchronously.
            tasks.spam_filter.delay(comment_id=comment.id,
                                    remote_addr=remote_addr)
            return HttpResponseRedirect(post.get_absolute_url())
    else:
        form = CommentForm()

    context = RequestContext(request, {"form": form})
    return render_to_response(template_name, context_instance=context)

To filter spam in comments we use Akismet, the service used to filter spam in comments posted to the free weblog platform Wordpress. Akismet is free for personal use, but for commercial use you need to pay. You have to sign up to their service to get an API key.

To make API calls to Akismet we use the akismet.py library written by Michael Foord.

blog/tasks.py

from akismet import Akismet
from celery.decorators import task

from django.core.exceptions import ImproperlyConfigured
from django.contrib.sites.models import Site

from blog.models import Comment


@task
def spam_filter(comment_id, remote_addr=None, **kwargs):
        logger = spam_filter.get_logger(**kwargs)
        logger.info("Running spam filter for comment %s" % comment_id)

        comment = Comment.objects.get(pk=comment_id)
        current_domain = Site.objects.get_current().domain
        akismet = Akismet(settings.AKISMET_KEY, "http://%s" % domain)
        if not akismet.verify_key():
            raise ImproperlyConfigured("Invalid AKISMET_KEY")


        is_spam = akismet.comment_check(user_ip=remote_addr,
                            comment_content=comment.comment,
                            comment_author=comment.name,
                            comment_author_email=comment.email_address)
        if is_spam:
            comment.is_spam = True
            comment.save()

        return is_spam

How it works

Here comes the technical details, this part isn’t something you need to know, but you may be interested.

All defined tasks are listed in a registry. The registry contains a list of task names and their task classes. You can investigate this registry yourself:

>>> from celery import registry
>>> from celery import task
>>> registry.tasks
{'celery.delete_expired_task_meta':
    <PeriodicTask: celery.delete_expired_task_meta (periodic)>,
 'celery.task.http.HttpDispatchTask':
    <Task: celery.task.http.HttpDispatchTask (regular)>,
 'celery.execute_remote':
    <Task: celery.execute_remote (regular)>,
 'celery.map_async':
    <Task: celery.map_async (regular)>,
 'celery.ping':
    <Task: celery.ping (regular)>}

This is the list of tasks built-in to celery. Note that we had to import celery.task first for these to show up. This is because the tasks will only be registered when the module they are defined in is imported.

The default loader imports any modules listed in the CELERY_IMPORTS setting.

The entity responsible for registering your task in the registry is a meta class, TaskType. This is the default meta class for Task. If you want to register your task manually you can set the abstract attribute:

class MyTask(Task):
    abstract = True

This way the task won’t be registered, but any task subclassing it will.

When tasks are sent, we don’t send the function code, just the name of the task. When the worker receives the message it can just look it up in the task registry to find the execution code.

This means that your workers should always be updated with the same software as the client. This is a drawback, but the alternative is a technical challenge that has yet to be solved.

Tips and Best Practices

Ignore results you don’t want

If you don’t care about the results of a task, be sure to set the ignore_result option, as storing results wastes time and resources.

@task(ignore_result=True)
def mytask(...)
    something()

Results can even be disabled globally using the CELERY_IGNORE_RESULT setting.

Disable rate limits if they’re not used

Disabling rate limits altogether is recommended if you don’t have any tasks using them. This is because the rate limit subsystem introduces quite a lot of complexity.

Set the CELERY_DISABLE_RATE_LIMITS setting to globally disable rate limits:

CELERY_DISABLE_RATE_LIMITS = True

Avoid launching synchronous subtasks

Having a task wait for the result of another task is really inefficient, and may even cause a deadlock if the worker pool is exhausted.

Make your design asynchronous instead, for example by using callbacks.

Bad:

@task()
def update_page_info(url):
    page = fetch_page.delay(url).get()
    info = parse_page.delay(url, page).get()
    store_page_info.delay(url, info)

@task()
def fetch_page(url):
    return myhttplib.get(url)

@task()
def parse_page(url, page):
    return myparser.parse_document(page)

@task()
def store_page_info(url, info):
    return PageInfo.objects.create(url, info)

Good:

@task(ignore_result=True)
def update_page_info(url):
    # fetch_page -> parse_page -> store_page
    fetch_page.delay(url, callback=subtask(parse_page,
                                callback=subtask(store_page_info)))

@task(ignore_result=True)
def fetch_page(url, callback=None):
    page = myhttplib.get(url)
    if callback:
        # The callback may have been serialized with JSON,
        # so best practice is to convert the subtask dict back
        # into a subtask object.
        subtask(callback).delay(url, page)

@task(ignore_result=True)
def parse_page(url, page, callback=None):
    info = myparser.parse_document(page)
    if callback:
        subtask(callback).delay(url, info)

@task(ignore_result=True)
def store_page_info(url, info):
    PageInfo.objects.create(url, info)

We use subtask here to safely pass around the callback task. subtask is a subclass of dict used to wrap the arguments and execution options for a single task invocation. See Sets of tasks, Subtasks and Callbacks for more information about subtasks.

Performance and Strategies

Granularity

The task’s granularity is the degree of parallelization your task have. It’s better to have many small tasks, than a few long running ones.

With smaller tasks, you can process more tasks in parallel and the tasks won’t run long enough to block the worker from processing other waiting tasks.

However, there’s a limit. Sending messages takes processing power and bandwidth. If your tasks are so short the overhead of passing them around is worse than just executing them in-line, you should reconsider your strategy. There is no universal answer here.

Data locality

The worker processing the task should be as close to the data as possible. The best would be to have a copy in memory, the worst being a full transfer from another continent.

If the data is far away, you could try to run another worker at location, or if that’s not possible, cache often used data, or preload data you know is going to be used.

The easiest way to share data between workers is to use a distributed caching system, like memcached.

For more information about data-locality, please read http://research.microsoft.com/pubs/70001/tr-2003-24.pdf

State

Since celery is a distributed system, you can’t know in which process, or even on what machine the task will run. Indeed you can’t even know if the task will run in a timely manner, so please be wary of the state you pass on to tasks.

One gotcha is Django model objects. They shouldn’t be passed on as arguments to task classes, it’s almost always better to re-fetch the object from the database instead, as there are possible race conditions involved.

Imagine the following scenario where you have an article and a task that automatically expands some abbreviations in it.

class Article(models.Model):
    title = models.CharField()
    body = models.TextField()

@task
def expand_abbreviations(article):
    article.body.replace("MyCorp", "My Corporation")
    article.save()

First, an author creates an article and saves it, then the author clicks on a button that initiates the abbreviation task.

>>> article = Article.objects.get(id=102)
>>> expand_abbreviations.delay(model_object)

Now, the queue is very busy, so the task won’t be run for another 2 minutes, in the meantime another author makes some changes to the article, when the task is finally run, the body of the article is reverted to the old version, because the task had the old body in its argument.

Fixing the race condition is easy, just use the article id instead, and re-fetch the article in the task body:

@task
def expand_abbreviations(article_id)
    article = Article.objects.get(id=article_id)
    article.body.replace("MyCorp", "My Corporation")
    article.save()

>>> expand_abbreviations(article_id)

There might even be performance benefits to this approach, as sending large messages may be expensive.

Database transactions

Let’s look at another example:

from django.db import transaction

@transaction.commit_on_success
def create_article(request):
    article = Article.objects.create(....)
    expand_abbreviations.delay(article.pk)

This is a Django view creating an article object in the database, then passing its primary key to a task. It uses the commit_on_success decorator, which will commit the transaction when the view returns, or roll back if the view raises an exception.

There is a race condition if the task starts executing before the transaction has been committed: the database object does not exist yet!

The solution is to always commit transactions before applying tasks that depends on state from the current transaction:

@transaction.commit_manually
def create_article(request):
    try:
        article = Article.objects.create(...)
    except:
        transaction.rollback()
        raise
    else:
        transaction.commit()
        expand_abbreviations.delay(article.pk)
PKHDD-#.ΐΐ*celery-2.0-archived/userguide/workers.html Workers Guide — Celery 2.0.3 (stable) documentation

Workers Guide

Starting the worker

You can start celeryd to run in the foreground by executing the command:

$ celeryd --loglevel=INFO

You probably want to use a daemonization tool to start celeryd in the background. See Running celeryd as a daemon for help starting celeryd with some of the most popular daemonization tools.

For a full list of available command line options see celeryd, or simply execute the command:

$ celeryd --help

You can also start multiple celeryd’s on the same machine. If you do so be sure to give a unique name to each individual worker by specifying a hostname with the --hostname|-n argument:

$ celeryd --loglevel=INFO --concurrency=10 -n worker1.example.com
$ celeryd --loglevel=INFO --concurrency=10 -n worker2.example.com
$ celeryd --loglevel=INFO --concurrency=10 -n worker3.example.com

Stopping the worker

Shutdown should be accomplished using the TERM signal.

When shutdown is initiated the worker will finish any tasks it’s currently executing before it terminates, so if these tasks are important you should wait for it to finish before doing anything drastic (like sending the KILL signal).

If the worker won’t shutdown after considerate time, for example because of tasks stuck in an infinite-loop, you can use the KILL signal to force terminate the worker, but be aware that currently executing tasks will be lost (unless the tasks have the acks_late option set).

Also, since the KILL signal can’t be catched by processes the worker will not be able to reap its children so make sure you do it manually. This command usually does the trick:

$ ps auxww | grep celeryd | awk '{print $2}' | xargs kill -9

Restarting the worker

Other than stopping then starting the worker to restart, you can also restart the worker using the HUP signal:

$ kill -HUP $pid

The worker will then replace itself with a new instance using the same arguments as it was started with.

Concurrency

Multiprocessing is used to perform concurrent execution of tasks. The number of worker processes can be changed using the --concurrency argument and defaults to the number of CPUs available.

More worker processes are usually better, but there’s a cut-off point where adding more processes affects performance in negative ways. There is even some evidence to support that having multiple celeryd’s running, may perform better than having a single worker. For example 3 celeryd’s with 10 worker processes each, but you need to experiment to find the values that works best for you as this varies based on application, work load, task run times and other factors.

Time limits

A single task can potentially run forever, if you have lots of tasks waiting for some event that will never happen you will block the worker from processing new tasks indefinitely. The best way to defend against this scenario happening is enabling time limits.

The time limit (--time-limit) is the maximum number of seconds a task may run before the process executing it is terminated and replaced by a new process. You can also enable a soft time limit (--soft-time-limit), this raises an exception the task can catch to clean up before the hard time limit kills it:

from celery.decorators import task
from celery.exceptions import SoftTimeLimitExceeded

@task()
def mytask():
    try:
        do_work()
    except SoftTimeLimitExceeded:
        clean_up_in_a_hurry()

Time limits can also be set using the CELERYD_TASK_TIME_LIMIT / CELERYD_SOFT_TASK_TIME_LIMIT settings.

NOTE Time limits does not currently work on Windows.

Max tasks per child setting

With this option you can configure the maximum number of tasks a worker can execute before it’s replaced by a new process.

This is useful if you have memory leaks you have no control over for example from closed source C extensions.

The option can be set using the --maxtasksperchild argument to celeryd or using the CELERYD_MAX_TASKS_PER_CHILD setting.

Remote control

Workers have the ability to be remote controlled using a high-priority broadcast message queue. The commands can be directed to all, or a specific list of workers.

Commands can also have replies. The client can then wait for and collect those replies, but since there’s no central authority to know how many workers are available in the cluster, there is also no way to estimate how many workers may send a reply. Therefore the client has a configurable timeout — the deadline in seconds for replies to arrive in. This timeout defaults to one second. If the worker doesn’t reply within the deadline it doesn’t necessarily mean the worker didn’t reply, or worse is dead, but may simply be caused by network latency or the worker being slow at processing commands, so adjust the timeout accordingly.

In addition to timeouts, the client can specify the maximum number of replies to wait for. If a destination is specified this limit is set to the number of destination hosts.

The broadcast() function.

This is the client function used to send commands to the workers. Some remote control commands also have higher-level interfaces using broadcast() in the background, like rate_limit() and ping().

Sending the rate_limit command and keyword arguments:

>>> from celery.task.control import broadcast
>>> broadcast("rate_limit", arguments={"task_name": "myapp.mytask",
...                                    "rate_limit": "200/m"})

This will send the command asynchronously, without waiting for a reply. To request a reply you have to use the reply argument:

>>> broadcast("rate_limit", {"task_name": "myapp.mytask",
...                          "rate_limit": "200/m"}, reply=True)
[{'worker1.example.com': 'New rate limit set successfully'},
 {'worker2.example.com': 'New rate limit set successfully'},
 {'worker3.example.com': 'New rate limit set successfully'}]

Using the destination argument you can specify a list of workers to receive the command:

>>> broadcast
>>> broadcast("rate_limit", {"task_name": "myapp.mytask",
...                          "rate_limit": "200/m"}, reply=True,
...           destination=["worker1.example.com"])
[{'worker1.example.com': 'New rate limit set successfully'}]

Of course, using the higher-level interface to set rate limits is much more convenient, but there are commands that can only be requested using broadcast().

Rate limits

Example changing the rate limit for the myapp.mytask task to accept 200 tasks a minute on all servers:

>>> from celery.task.control import rate_limit
>>> rate_limit("myapp.mytask", "200/m")

Example changing the rate limit on a single host by specifying the destination hostname:

>>> rate_limit("myapp.mytask", "200/m",
...            destination=["worker1.example.com"])

NOTE This won’t affect workers with the CELERY_DISABLE_RATE_LIMITS setting on. To re-enable rate limits then you have to restart the worker.

Remote shutdown

This command will gracefully shut down the worker remotely:

>>> broadcast("shutdown") # shutdown all workers
>>> broadcast("shutdown, destination="worker1.example.com")

Ping

This command requests a ping from alive workers. The workers reply with the string ‘pong’, and that’s just about it. It will use the default one second timeout for replies unless you specify a custom timeout:

>>> from celery.task.control import ping
>>> ping(timeout=0.5)
[{'worker1.example.com': 'pong'},
 {'worker2.example.com': 'pong'},
 {'worker3.example.com': 'pong'}]

ping() also supports the destination argument, so you can specify which workers to ping:

>>> ping(['worker2.example.com', 'worker3.example.com'])
[{'worker2.example.com': 'pong'},
 {'worker3.example.com': 'pong'}]

Enable/disable events

You can enable/disable events by using the enable_events, disable_events commands. This is useful to temporarily monitor a worker using celeryev/celerymon.

>>> broadcast("enable_events")
>>> broadcast("disable_events")

Writing your own remote control commands

Remote control commands are registered in the control panel and they take a single argument: the current ControlDispatch instance. From there you have access to the active celery.worker.listener.CarrotListener if needed.

Here’s an example control command that restarts the broker connection:

from celery.worker.control import Panel

@Panel.register
def reset_connection(panel):
    panel.logger.critical("Connection reset by remote control.")
    panel.listener.reset_connection()
    return {"ok": "connection reset"}

These can be added to task modules, or you can keep them in their own module then import them using the CELERY_IMPORTS setting:

CELERY_IMPORTS = ("myapp.worker.control", )

Inspecting workers

celery.task.control.inspect lets you inspect running workers. It uses remote control commands under the hood.

>>> from celery.task.control import inspect

# Inspect all nodes.
>>> i = inspect()

# Specify multiple nodes to inspect.
>>> i = inspect(["worker1.example.com", "worker2.example.com"])

# Specify a single node to inspect.
>>> i = inspect("worker1.example.com")

Dump of registered tasks

You can get a list of tasks registered in the worker using the registered_tasks():

>>> i.registered_tasks()
[{'worker1.example.com': ['celery.delete_expired_task_meta',
                          'celery.execute_remote',
                          'celery.map_async',
                          'celery.ping',
                          'celery.task.http.HttpDispatchTask',
                          'tasks.add',
                          'tasks.sleeptask']}]

Dump of currently executing tasks

You can get a list of active tasks using active():

>>> i.active()
[{'worker1.example.com':
    [{"name": "tasks.sleeptask",
      "id": "32666e9b-809c-41fa-8e93-5ae0c80afbbf",
      "args": "(8,)",
      "kwargs": "{}"}]}]

Dump of scheduled (ETA) tasks

You can get a list of tasks waiting to be scheduled by using scheduled():

>>> i.scheduled()
[{'worker1.example.com':
    [{"eta": "2010-06-07 09:07:52", "priority": 0,
      "request": {
        "name": "tasks.sleeptask",
        "id": "1a7980ea-8b19-413e-91d2-0b74f3844c4d",
        "args": "[1]",
        "kwargs": "{}"}},
     {"eta": "2010-06-07 09:07:53", "priority": 0,
      "request": {
        "name": "tasks.sleeptask",
        "id": "49661b9a-aa22-4120-94b7-9ee8031d219d",
        "args": "[2]",
        "kwargs": "{}"}}]}]

Note that these are tasks with an eta/countdown argument, not periodic tasks.

Dump of reserved tasks

Reserved tasks are tasks that has been received, but is still waiting to be executed.

You can get a list of these using reserved():

>>> i.reserved()
[{'worker1.example.com':
    [{"name": "tasks.sleeptask",
      "id": "32666e9b-809c-41fa-8e93-5ae0c80afbbf",
      "args": "(8,)",
      "kwargs": "{}"}]}]
PKHDD3C+C+(celery-2.0-archived/userguide/index.html User Guide — Celery 2.0.3 (stable) documentation PKHDD Executing Tasks — Celery 2.0.3 (stable) documentation

Executing Tasks

Basics

Executing tasks is done with apply_async(), and its shortcut: delay().

delay is simple and convenient, as it looks like calling a regular function:

Task.delay(arg1, arg2, kwarg1="x", kwarg2="y")

The same thing using apply_async is written like this:

Task.apply_async(args=[arg1, arg2], kwargs={"kwarg1": "x", "kwarg2": "y"})

You can also execute a task by name using send_task(), if you don’t have access to the task’s class:

>>> from celery.execute import send_task
>>> result = send_task("tasks.add", [2, 2])
>>> result.get()
4

While delay is convenient, it doesn’t give you as much control as using apply_async. With apply_async you can override the execution options available as attributes on the Task class: routing_key, exchange, immediate, mandatory, priority, and serializer. In addition you can set a countdown/eta, or provide a custom broker connection.

Let’s go over these in more detail. The following examples use this simple task, which adds together two numbers:

@task
def add(x, y):
    return x + y

ETA and countdown

The ETA (estimated time of arrival) lets you set a specific date and time that is the earliest time at which your task will execute. countdown is a shortcut to set this by seconds in the future.

>>> result = add.apply_async(args=[10, 10], countdown=3)
>>> result.get()    # this takes at least 3 seconds to return
20

Note that your task is guaranteed to be executed at some time after the specified date and time has passed, but not necessarily at that exact time.

While countdown is an integer, eta must be a datetime object, specifying an exact date and time in the future. This is good if you already have a datetime` object and need to modify it with a timedelta, or when using time in seconds is not very readable.

from datetime import datetime, timedelta

def quickban(username):
    """Ban user for 24 hours."""
    ban(username)
    tomorrow = datetime.now() + timedelta(days=1)
    UnbanTask.apply_async(args=[username], eta=tomorrow)

Serializers

Data passed between celery and workers has to be serialized to be transferred. The default serializer is pickle, but you can change this for each task. There is built-in support for using pickle, JSON and YAML, and you can add your own custom serializers by registering them into the carrot serializer registry.

The default serializer (pickle) supports Python objects, like datetime and any custom datatypes you define yourself. But since pickle has poor support outside of the Python language, you need to choose another serializer if you need to communicate with other languages. In that case, JSON is a very popular choice.

The serialization method is sent with the message, so the worker knows how to deserialize any task. Of course, if you use a custom serializer, this must also be registered in the worker.

When sending a task the serialization method is taken from the following places in order: The serializer argument to apply_async, the Task’s serializer attribute, and finally the global default CELERY_SERIALIZER configuration directive.

>>> add.apply_async(args=[10, 10], serializer="json")

Connections and connection timeouts.

Currently there is no support for broker connection pools in celery, so this is something you need to be aware of when sending more than one task at a time, as apply_async/delay establishes and closes a connection every time.

If you need to send more than one task at the same time, it’s a good idea to establish the connection yourself and pass it to apply_async:

numbers = [(2, 2), (4, 4), (8, 8), (16, 16)]

results = []
publisher = add.get_publisher()
try:
    for args in numbers:
        res = add.apply_async(args=args, publisher=publisher)
        results.append(res)
finally:
    publisher.close()
    publisher.connection.close()

print([res.get() for res in results])

The connection timeout is the number of seconds to wait before we give up establishing the connection. You can set this with the connect_timeout argument to apply_async:

add.apply_async([10, 10], connect_timeout=3)

Or if you handle the connection manually:

publisher = add.get_publisher(connect_timeout=3)

Routing options

Celery uses the AMQP routing mechanisms to route tasks to different workers. You can route tasks using the following entities: exchange, queue and routing key.

Messages (tasks) are sent to exchanges, a queue binds to an exchange with a routing key. Let’s look at an example:

Our application has a lot of tasks, some process video, others process images, and some gather collective intelligence about users. Some of these have higher priority than others so we want to make sure the high priority tasks get sent to powerful machines, while low priority tasks are sent to dedicated machines that can handle these at their own pace.

For the sake of example we have only one exchange called tasks. There are different types of exchanges that matches the routing key in different ways, the exchange types are:

  • direct

    Matches the routing key exactly.

  • topic

    In the topic exchange the routing key is made up of words separated by dots (.). Words can be matched by the wild cards * and #, where * matches one exact word, and # matches one or many.

    For example, *.stock.# matches the routing keys usd.stock and euro.stock.db but not stock.nasdaq.

(there are also other exchange types, but these are not used by celery)

So, we create three queues, video, image and lowpri that bind to our tasks exchange. For the queues we use the following binding keys:

video: video.#
image: image.#
lowpri: misc.#

Now we can send our tasks to different worker machines, by making the workers listen to different queues:

>>> CompressVideoTask.apply_async(args=[filename],
...                               routing_key="video.compress")

>>> ImageRotateTask.apply_async(args=[filename, 360],
...                             routing_key="image.rotate")

>>> ImageCropTask.apply_async(args=[filename, selection],
...                           routing_key="image.crop")
>>> UpdateReccomendationsTask.apply_async(routing_key="misc.recommend")

Later, if the crop task is consuming a lot of resources, we can bind some new workers to handle just the "image.crop" task, by creating a new queue that binds to "image.crop”.

AMQP options

NOTE The mandatory and immediate flags are not supported by amqplib at this point.

  • mandatory

This sets the delivery to be mandatory. An exception will be raised if there are no running workers able to take on the task.

  • immediate

Request immediate delivery. Will raise an exception if the task cannot be routed to a worker immediately.

  • priority

A number between 0 and 9, where 0 is the highest priority. Note that RabbitMQ does not implement AMQP priorities, and maybe your broker does not either, consult your broker’s documentation for more information.

Table Of Contents

Previous topic

Tasks

Next topic

Workers Guide

This Page

PKHDDԏ;0celery-2.0-archived/.doctrees/environment.pickle(csphinx.environment BuildEnvironment qoq}q(Udlfilesqcsphinx.util FilenameUniqDict q)qc__builtin__ set q]RqbUappq NU _warnfuncq NUtitlesq }q (Xuserguide/routingq cdocutils.nodes title q)q}q(U rawsourceqUU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq]Unamesq]uUchildrenq]qcdocutils.nodes Text qX Routing Tasksqq}q(hX Routing TasksqUparentq hubaUtagnameq!Utitleq"ubXreleases/1.0/announcementq#h)q$}q%(hUh}q&(h]h]h]h]h]uh]q'hXCelery 1.0 has been released!q(q)}q*(hXCelery 1.0 has been released!q+h h$ubah!h"ubXcookbook/indexq,h)q-}q.(hUh}q/(h]h]h]h]h]uh]q0hXCookbookq1q2}q3(hXCookbookq4h h-ubah!h"ubXuserguide/tasksq5h)q6}q7(hUh}q8(h]h]h]h]h]uh]q9hXTasksq:q;}q<(hXTasksq=h h6ubah!h"ubXinternals/indexq>h)q?}q@(hUh}qA(h]h]h]h]h]uh]qBhX InternalsqCqD}qE(hX InternalsqFh h?ubah!h"ubXinternals/protocolqGh)qH}qI(hUh}qJ(h]h]h]h]h]uh]qKhXTask Message ProtocolqLqM}qN(hXTask Message ProtocolqOh hHubah!h"ubXreference/celery.task.httpqPh)qQ}qR(hUh}qS(h]h]h]h]h]uh]qThX&HTTP Callback Tasks - celery.task.httpqUqV}qW(hX&HTTP Callback Tasks - celery.task.httpqXh hQubah!h"ubX+internals/reference/celery.worker.schedulerqYh)qZ}q[(hUh}q\(h]h]h]h]h]uh]q]hX*Worker Scheduler - celery.worker.schedulerq^q_}q`(hX*Worker Scheduler - celery.worker.schedulerqah hZubah!h"ubX+internals/reference/celery.utils.functionalqbh)qc}qd(hUh}qe(h]h]h]h]h]uh]qfhX*functools compat - celery.utils.functionalqgqh}qi(hX*functools compat - celery.utils.functionalqjh hcubah!h"ubXreference/celery.statesqkh)ql}qm(hUh}qn(h]h]h]h]h]uh]qohXTask States - celery.statesqpqq}qr(hXTask States - celery.statesqsh hlubah!h"ubX2internals/reference/celery.worker.control.builtinsqth)qu}qv(hUh}qw(h]h]h]h]h]uh]qxhXABuilt-in Remote Control Commands - celery.worker.control.builtinsqyqz}q{(hXABuilt-in Remote Control Commands - celery.worker.control.builtinsq|h huubah!h"ubXinternals/reference/celery.logq}h)q~}q(hUh}q(h]h]h]h]h]uh]qhXLogging - celery.logqq}q(hXLogging - celery.logqh h~ubah!h"ubX!internals/reference/celery.workerqh)q}q(hUh}q(h]h]h]h]h]uh]qhX&Multiprocessing Worker - celery.workerqq}q(hX&Multiprocessing Worker - celery.workerqh hubah!h"ubXreference/indexqh)q}q(hUh}q(h]h]h]h]h]uh]qhX API Referenceqq}q(hX API Referenceqh hubah!h"ubX*internals/reference/celery.worker.listenerqh)q}q(hUh}q(h]h]h]h]h]uh]qhX0Worker Message Listener - celery.worker.listenerqq}q(hX0Worker Message Listener - celery.worker.listenerqh hubah!h"ubXreference/celery.events.stateqh)q}q(hUh}q(h]h]h]h]h]uh]qhX?In-memory Representation of Cluster State - celery.events.stateqq}q(hX?In-memory Representation of Cluster State - celery.events.stateqh hubah!h"ubX%internals/reference/celery.utils.mailqh)q}q(hUh}q(h]h]h]h]h]uh]qhX"Sending E-mail - celery.utils.mailqq}q(hX"Sending E-mail - celery.utils.mailqh hubah!h"ubX(internals/reference/celery.execute.traceqh)q}q(hUh}q(h]h]h]h]h]uh]qhX(Tracing Execution - celery.execute.traceqq}q(hX(Tracing Execution - celery.execute.traceqh hubah!h"ubXfaqqh)q}q(hUh}q(h]h]h]h]h]uh]qhXFrequently Asked Questionsqq}q(hXFrequently Asked Questionsqh hubah!h"ubXuserguide/remote-tasksqh)q}q(hUh}q(h]h]h]h]h]uh]qhXHTTP Callback Tasks (Webhooks)qʅq}q(hXHTTP Callback Tasks (Webhooks)qh hubah!h"ubX%internals/reference/celery.worker.jobqh)q}q(hUh}q(h]h]h]h]h]uh]qhX#Executable Jobs - celery.worker.jobqӅq}q(hX#Executable Jobs - celery.worker.jobqh hubah!h"ubX#getting-started/broker-installationqh)q}q(hUh}q(h]h]h]h]h]uh]qhXBroker Installationq܅q}q(hXBroker Installationqh hubah!h"ubXreference/celery.signalsqh)q}q(hUh}q(h]h]h]h]h]uh]qhXSignals - celery.signalsq允q}q(hXSignals - celery.signalsqh hubah!h"ubXuserguide/workersqh)q}q(hUh}q(h]h]h]h]h]uh]qhX Workers Guideqq}q(hX Workers Guideqh hubah!h"ubXreference/celery.executeqh)q}q(hUh}q(h]h]h]h]h]uh]qhX Executing Tasks - celery.executeqq}q(hX Executing Tasks - celery.executeqh hubah!h"ubX changelogqh)q}q(hUh}q(h]h]h]h]h]uh]qhXChange historyrr}r(hXChange historyrh hubah!h"ubXreference/celery.resultrh)r}r(hUh}r(h]h]h]h]h]uh]rhXTask Result - celery.resultr r }r (hXTask Result - celery.resultr h jubah!h"ubXtutorials/clickcounterr h)r}r(hUh}r(h]h]h]h]h]uh]rhX:Tutorial: Creating a click counter using carrot and celeryrr}r(hX:Tutorial: Creating a click counter using carrot and celeryrh jubah!h"ubXreference/celery.confrh)r}r(hUh}r(h]h]h]h]h]uh]rhXConfiguration - celery.confrr}r(hXConfiguration - celery.confrh jubah!h"ubXreference/celery.task.controlrh)r }r!(hUh}r"(h]h]h]h]h]uh]r#hX2Remote Management of Workers - celery.task.controlr$r%}r&(hX2Remote Management of Workers - celery.task.controlr'h j ubah!h"ubX#internals/reference/celery.backendsr(h)r)}r*(hUh}r+(h]h]h]h]h]uh]r,hXBackends - celery.backendsr-r.}r/(hXBackends - celery.backendsr0h j)ubah!h"ubXreference/celery.task.baser1h)r2}r3(hUh}r4(h]h]h]h]h]uh]r5hX!Defining Tasks - celery.task.baser6r7}r8(hX!Defining Tasks - celery.task.baser9h j2ubah!h"ubX)internals/reference/celery.datastructuresr:h)r;}r<(hUh}r=(h]h]h]h]h]uh]r>hX&Datastructures - celery.datastructuresr?r@}rA(hX&Datastructures - celery.datastructuresrBh j;ubah!h"ubXindexrCh)rD}rE(hUh}rF(h]h]h]h]h]uh]rGhXCelery - Distributed Task QueuerHrI}rJ(hXCelery - Distributed Task QueuerKh jDubah!h"ubX'getting-started/first-steps-with-celeryrLh)rM}rN(hUh}rO(h]h]h]h]h]uh]rPhXFirst steps with CeleryrQrR}rS(hXFirst steps with CeleryrTh jMubah!h"ubXreference/celery.exceptionsrUh)rV}rW(hUh}rX(h]h]h]h]h]uh]rYhXExceptions - celery.exceptionsrZr[}r\(hXExceptions - celery.exceptionsr]h jVubah!h"ubXreference/celery.messagingr^h)r_}r`(hUh}ra(h]h]h]h]h]uh]rbhXMessaging - celery.messagingrcrd}re(hXMessaging - celery.messagingrfh j_ubah!h"ubXtutorials/indexrgh)rh}ri(hUh}rj(h]h]h]h]h]uh]rkhX Tutorialsrlrm}rn(hX Tutorialsroh jhubah!h"ubXinternals/moduleindexrph)rq}rr(hUh}rs(h]h]h]h]h]uh]rthX Module Indexrurv}rw(hX Module Indexrxh jqubah!h"ubX+internals/reference/celery.backends.pyredisryh)rz}r{(hUh}r|(h]h]h]h]h]uh]r}hX(Backend: Redis - celery.backends.pyredisr~r}r(hX(Backend: Redis - celery.backends.pyredisrh jzubah!h"ubX"reference/celery.contrib.abortablerh)r}r(hUh}r(h]h]h]h]h]uh]rhX3Contrib: Abortable tasks - celery.contrib.abortablerr}r(hX3Contrib: Abortable tasks - celery.contrib.abortablerh jubah!h"ubX(internals/reference/celery.serializationrh)r}r(hUh}r(h]h]h]h]h]uh]rhX*Serialization Tools - celery.serializationrr}r(hX*Serialization Tools - celery.serializationrh jubah!h"ubXreference/celery.bin.celerybeatrh)r}r(hUh}r(h]h]h]h]h]uh]rhX3Celery Periodic Task Server - celery.bin.celerybeatrr}r(hX3Celery Periodic Task Server - celery.bin.celerybeatrh jubah!h"ubX)internals/reference/celery.worker.bucketsrh)r}r(hUh}r(h]h]h]h]h]uh]rhX4Token Bucket (rate limiting) - celery.worker.bucketsrr}r(hX4Token Bucket (rate limiting) - celery.worker.bucketsrh jubah!h"ubX configurationrh)r}r(hUh}r(h]h]h]h]h]uh]rhXConfiguration and defaultsrr}r(hXConfiguration and defaultsrh jubah!h"ubX'internals/reference/celery.utils.compatrh)r}r(hUh}r(h]h]h]h]h]uh]rhX*Python Compatibility - celery.utils.compatrr}r(hX*Python Compatibility - celery.utils.compatrh jubah!h"ubX%internals/reference/celery.db.sessionrh)r}r(hUh}r(h]h]h]h]h]uh]rhX&SQLAlchemy Session - celery.db.sessionrr}r(hX&SQLAlchemy Session - celery.db.sessionrh jubah!h"ubXreference/celery.registryrh)r}r(hUh}r(h]h]h]h]h]uh]rhXTask Registry - celery.registryrr}r(hXTask Registry - celery.registryrh jubah!h"ubXcookbook/daemonizingrh)r}r(hUh}r(h]h]h]h]h]uh]rhXRunning celeryd as a daemonrr}r(hXRunning celeryd as a daemonrh jubah!h"ubX$internals/reference/celery.db.modelsrh)r}r(hUh}r(h]h]h]h]h]uh]rhX$SQLAlchemy Models - celery.db.modelsrr}r(hX$SQLAlchemy Models - celery.db.modelsrh jubah!h"ubXtutorials/externalrh)r}r(hUh}r(h]h]h]h]h]uh]rhX*Tutorials and resources from the communityrr}r(hX*Tutorials and resources from the communityrh jubah!h"ubXreference/celery.bin.celeryevrh)r}r(hUh}r(h]h]h]h]h]uh]rhX3celeryev: Curses Event Viewer - celery.bin.celeryevrr}r(hX3celeryev: Curses Event Viewer - celery.bin.celeryevrh jubah!h"ubXuserguide/tasksetsrh)r}r(hUh}r(h]h]h]h]h]uh]rhX%Sets of tasks, Subtasks and Callbacksrr}r(hX%Sets of tasks, Subtasks and Callbacksrh jubah!h"ubX%internals/reference/celery.utils.inforh)r}r(hUh}r(h]h]h]h]h]uh]rhX"Debugging Info - celery.utils.inforr}r(hX"Debugging Info - celery.utils.inforh jubah!h"ubXreference/celery.loaders.baserh)r}r(hUh}r(h]h]h]h]h]uh]rhX)Loader Base Classes - celery.loaders.baserr}r(hX)Loader Base Classes - celery.loaders.baserh jubah!h"ubXreference/celery.task.builtinsr h)r }r (hUh}r (h]h]h]h]h]uh]r hX,Built-in Task Classes - celery.task.builtinsrr}r(hX,Built-in Task Classes - celery.task.builtinsrh j ubah!h"ubXinternals/deprecationrh)r}r(hUh}r(h]h]h]h]h]uh]rhXCelery Deprecation Timelinerr}r(hXCelery Deprecation Timelinerh jubah!h"ubX reference/celery.loaders.defaultrh)r}r(hUh}r(h]h]h]h]h]uh]rhX'Default Loader - celery.loaders.defaultr r!}r"(hX'Default Loader - celery.loaders.defaultr#h jubah!h"ubXreference/celery.task.setsr$h)r%}r&(hUh}r'(h]h]h]h]h]uh]r(hX4Task Sets, Subtasks and Callbacks - celery.task.setsr)r*}r+(hX4Task Sets, Subtasks and Callbacks - celery.task.setsr,h j%ubah!h"ubXgetting-started/resourcesr-h)r.}r/(hUh}r0(h]h]h]h]h]uh]r1hX Resourcesr2r3}r4(hX Resourcesr5h j.ubah!h"ubX5internals/reference/celery.concurrency.processes.poolr6h)r7}r8(hUh}r9(h]h]h]h]h]uh]r:hXAextended multiprocessing.pool - celery.concurrency.processes.poolr;r<}r=(hXAextended multiprocessing.pool - celery.concurrency.processes.poolr>h j7ubah!h"ubX-internals/reference/celery.worker.controllersr?h)r@}rA(hUh}rB(h]h]h]h]h]uh]rChX5Worker Controller Threads - celery.worker.controllersrDrE}rF(hX5Worker Controller Threads - celery.worker.controllersrGh j@ubah!h"ubX1internals/reference/celery.utils.dispatch.saferefrHh)rI}rJ(hUh}rK(h]h]h]h]h]uh]rLhX8Signals: Safe References - celery.utils.dispatch.saferefrMrN}rO(hX8Signals: Safe References - celery.utils.dispatch.saferefrPh jIubah!h"ubXreference/celery.bin.celerydrQh)rR}rS(hUh}rT(h]h]h]h]h]uh]rUhX)Celery Worker Daemon - celery.bin.celerydrVrW}rX(hX)Celery Worker Daemon - celery.bin.celerydrYh jRubah!h"ubXgetting-started/introductionrZh)r[}r\(hUh}r](h]h]h]h]h]uh]r^hX Introductionr_r`}ra(hX Introductionrbh j[ubah!h"ubX*internals/reference/celery.utils.timeutilsrch)rd}re(hUh}rf(h]h]h]h]h]uh]rghX0Time and Date Utilities - celery.utils.timeutilsrhri}rj(hX0Time and Date Utilities - celery.utils.timeutilsrkh jdubah!h"ubXgetting-started/periodic-tasksrlh)rm}rn(hUh}ro(h]h]h]h]h]uh]rphXPeriodic Tasksrqrr}rs(hXPeriodic Tasksrth jmubah!h"ubX0internals/reference/celery.utils.dispatch.signalruh)rv}rw(hUh}rx(h]h]h]h]h]uh]ryhX2Signals: Dispatcher - celery.utils.dispatch.signalrzr{}r|(hX2Signals: Dispatcher - celery.utils.dispatch.signalr}h jvubah!h"ubX"reference/celery.bin.celeryd_multir~h)r}r(hUh}r(h]h]h]h]h]uh]rhX-Celeryd Multi Tool - celery.bin.celeryd_multirr}r(hX-Celeryd Multi Tool - celery.bin.celeryd_multirh jubah!h"ubX0internals/reference/celery.concurrency.processesrh)r}r(hUh}r(h]h]h]h]h]uh]rhX;Multiprocessing Pool Support - celery.concurrency.processesrr}r(hX;Multiprocessing Pool Support - celery.concurrency.processesrh jubah!h"ubXuserguide/indexrh)r}r(hUh}r(h]h]h]h]h]uh]rhX User Guiderr}r(hX User Guiderh jubah!h"ubX#internals/reference/celery.platformrh)r}r(hUh}r(h]h]h]h]h]uh]rhX#Platform Specific - celery.platformrr}r(hX#Platform Specific - celery.platformrh jubah!h"ubX!internals/reference/celery.routesrh)r}r(hUh}r(h]h]h]h]h]uh]rhXMessage Routers - celery.routesrr}r(hXMessage Routers - celery.routesrh jubah!h"ubXinternals/eventsrh)r}r(hUh}r(h]h]h]h]h]uh]rhXList of Worker Eventsrr}r(hXList of Worker Eventsrh jubah!h"ubXinternals/workerrh)r}r(hUh}r(h]h]h]h]h]uh]rhXInternals: The workerrr}r(hXInternals: The workerrh jubah!h"ubXreference/celery.taskrh)r}r(hUh}r(h]h]h]h]h]uh]rhX,Task Information and Utilities - celery.taskrr}r(hX,Task Information and Utilities - celery.taskrh jubah!h"ubX)internals/reference/celery.utils.dispatchrh)r}r(hUh}r(h]h]h]h]h]uh]rhX'Signal Dispatch - celery.utils.dispatchrr}r(hX'Signal Dispatch - celery.utils.dispatchrh jubah!h"ubX)internals/reference/celery.backends.cacherh)r}r(hUh}r(h]h]h]h]h]uh]rhX)Backend: Memcache - celery.backends.cacherr}r(hX)Backend: Memcache - celery.backends.cacherh jubah!h"ubXreference/celery.eventsrh)r}r(hUh}r(h]h]h]h]h]uh]rhXEvents - celery.eventsrr}r(hXEvents - celery.eventsrh jubah!h"ubX)internals/reference/celery.worker.controlrh)r}r(hUh}r(h]h]h]h]h]uh]rhX&Worker Control - celery.worker.controlrr}r(hX&Worker Control - celery.worker.controlrh jubah!h"ubXlinksrh)r}r(hUh}r(h]h]h]h]h]uh]rhXInteresting Linksrr}r(hXInteresting Linksrh jubah!h"ubX,internals/reference/celery.backends.databaserh)r}r(hUh}r(h]h]h]h]h]uh]rhX7Backend: SQLAlchemy Database - celery.backends.databaserr}r(hX7Backend: SQLAlchemy Database - celery.backends.databaserh jubah!h"ubXinternals/reference/indexrh)r}r(hUh}r(h]h]h]h]h]uh]rhXInternal Module Referencerr}r(hXInternal Module Referencerh jubah!h"ubX&internals/reference/celery.utils.patchrh)r}r(hUh}r(h]h]h]h]h]uh]r hX*Compatibility Patches - celery.utils.patchr r }r (hX*Compatibility Patches - celery.utils.patchr h jubah!h"ubX-internals/reference/celery.backends.cassandrarh)r}r(hUh}r(h]h]h]h]h]uh]rhX.Backend: Cassandra - celery.backends.cassandrarr}r(hX.Backend: Cassandra - celery.backends.cassandrarh jubah!h"ubX(internals/reference/celery.backends.amqprh)r}r(hUh}r(h]h]h]h]h]uh]rhX$Backend: AMQP - celery.backends.amqprr}r(hX$Backend: AMQP - celery.backends.amqprh jubah!h"ubX*internals/reference/celery.backends.tyrantr h)r!}r"(hUh}r#(h]h]h]h]h]uh]r$hX.Backend: Tokyo Tyrant - celery.backends.tyrantr%r&}r'(hX.Backend: Tokyo Tyrant - celery.backends.tyrantr(h j!ubah!h"ubXgetting-started/indexr)h)r*}r+(hUh}r,(h]h]h]h]h]uh]r-hXGetting Startedr.r/}r0(hXGetting Startedr1h j*ubah!h"ubX'internals/reference/celery.worker.stater2h)r3}r4(hUh}r5(h]h]h]h]h]uh]r6hX"Worker State - celery.worker.stater7r8}r9(hX"Worker State - celery.worker.stater:h j3ubah!h"ubX2internals/reference/celery.worker.control.registryr;h)r<}r=(hUh}r>(h]h]h]h]h]uh]r?hX@Remote Control Command Registry - celery.worker.control.registryr@rA}rB(hX@Remote Control Command Registry - celery.worker.control.registryrCh j<ubah!h"ubXtutorials/otherqueuesrDh)rE}rF(hUh}rG(h]h]h]h]h]uh]rHhX8Using Celery with Redis/Database as the messaging queue.rIrJ}rK(hX8Using Celery with Redis/Database as the messaging queue.rLh jEubah!h"ubX(internals/reference/celery.backends.baserMh)rN}rO(hUh}rP(h]h]h]h]h]uh]rQhX$Backend: Base - celery.backends.baserRrS}rT(hX$Backend: Base - celery.backends.baserUh jNubah!h"ubXinternals/reference/celery.beatrVh)rW}rX(hUh}rY(h]h]h]h]h]uh]rZhXClock Service - celery.beatr[r\}r](hXClock Service - celery.beatr^h jWubah!h"ubX.internals/reference/celery.concurrency.threadsr_h)r`}ra(hUh}rb(h]h]h]h]h]uh]rc(hXThread Pool Support rdre}rf(hXThread Pool Support rgh j`ubcdocutils.nodes strong rh)ri}rj(hX**EXPERIMENTAL**rkh}rl(h]h]h]h]h]uh j`h]rmhX EXPERIMENTALrnro}rp(hUh jiubah!UstrongrqubhX - celery.concurrency.threadsrrrs}rt(hX - celery.concurrency.threadsruh j`ubeh!h"ubX+internals/reference/celery.backends.mongodbrvh)rw}rx(hUh}ry(h]h]h]h]h]uh]rzhX*Backend: MongoDB - celery.backends.mongodbr{r|}r}(hX*Backend: MongoDB - celery.backends.mongodbr~h jwubah!h"ubXcookbook/tasksrh)r}r(hUh}r(h]h]h]h]h]uh]rhXCreating Tasksrr}r(hXCreating Tasksrh jubah!h"ubX internals/reference/celery.utilsrh)r}r(hUh}r(h]h]h]h]h]uh]rhXUtilities - celery.utilsrr}r(hXUtilities - celery.utilsrh jubah!h"ubX+internals/reference/celery.worker.heartbeatrh)r}r(hUh}r(h]h]h]h]h]uh]rhX+Worker Heartbeats - celery.worker.heartbeatrr}r(hX+Worker Heartbeats - celery.worker.heartbeatrh jubah!h"ubXuserguide/executingrh)r}r(hUh}r(h]h]h]h]h]uh]rhXExecuting Tasksrr}r(hXExecuting Tasksrh jubah!h"ubXreference/celery.loadersrh)r}r(hUh}r(h]h]h]h]h]uh]rhXLoaders - celery.loadersrr}r(hXLoaders - celery.loadersrh jubah!h"ubXreference/celery.bin.camqadmrh)r}r(hUh}r(h]h]h]h]h]uh]rhX9caqmadm: AMQP API Command-line Shell - celery.bin.camqadmrr}r(hX9caqmadm: AMQP API Command-line Shell - celery.bin.camqadmrh jubah!h"ubXreference/celery.task.schedulesrh)r}r(hUh}r(h]h]h]h]h]uh]rhX8Periodic Task Schedule Behaviors - celery.task.schedulesrr}r(hX8Periodic Task Schedule Behaviors - celery.task.schedulesrh jubah!h"ubXreference/celery.decoratorsrh)r}r(hUh}r(h]h]h]h]h]uh]rhX#Task Decorators - celery.decoratorsrr}r(hX#Task Decorators - celery.decoratorsrh jubah!h"ubuU domaindatar}r(Ustdr}r(UversionrKU anonlabelsr}r(UgenindexrjUUmodindexrU py-modindexUXroutersrh UroutersrUsearchrUsearchUX120newsrhUnewsrX amqp primerrh U amqp-primerruUlabelsr}r(jjUcsphinx.locale _TranslationProxy rcsphinx.locale mygettext rUIndexrrjjrbjU py-modindexUjjU Module Indexrrjjrbjh jXRoutersjjUjjU Search PagerrjjrbjhjXNewsjh jX AMQP PrimeruU progoptionsr}rUobjectsr}ruUc}r(j}rjKuUpyr}r(j}r(X.celery.utils.dispatch.signal.Signal.disconnectrjuXmethodX$celery.utils.compat.OrderedDict.copyrjXmethodX celery.conf.CELERYBEAT_LOG_LEVELrjXdataX#celery.bin.celeryd_multi.multi_argsrj~XfunctionX-celery.datastructures.SharedCounter.incrementrj:XmethodXcelery.conf.QUEUESrjXdataXcelery.exceptionsrjUUmodulerX,celery.loaders.default.Loader.setup_settingsrjXmethodrX)celery.loaders.default.wanted_module_itemrjXfunctionrX#celery.datastructures.ExceptionInforj:XclassXcelery.loaders.base.BaseLoaderrjXclassrX!celery.routes.Router.lookup_routerjXmethodXcelery.utils.timeutils.raterjcXfunctionX%celery.registry.TaskRegistry.registerrjXmethodrXcelery.conf.EVENT_SERIALIZERrjXdataX$celery.registry.TaskRegistry.regularrjXmethodrX#celery.bin.celeryd_multi.format_optrj~XfunctionXcelery.utils.timeutilsrjcjXcelery.utils.mpromise.evaluatedrjX attributeX$celery.utils.compat.OrderedDict.keysrjXmethodX'celery.conf.CELERYD_PREFETCH_MULTIPLIERrjXdataXcelery.utils.maybe_promiserjXfunctionX&celery.bin.celeryd_multi.abbreviationsr j~XfunctionXcelery.utils.mail.Mailer.sendr hXmethodX:celery.utils.dispatch.saferef.BoundMethodWeakref.weak_selfr jHX attributeX'celery.utils.compat.OrderedDict.popitemr jXmethodXcelery.signals.worker_readyr hXdatarX celery.conf.CELERY_CACHE_BACKENDrjXdataXcelery.utils.firstrjXfunctionX(celery.datastructures.PositionQueue.fullrj:XmethodX&celery.utils.dispatch.saferef.safe_refrjHXfunctionXcelery.utils.dispatch.signalrjujXcelery.conf.MAIL_HOST_USERrjXdataX)celery.registry.TaskRegistry.filter_typesrjXmethodrX9celery.serialization.UnpickleableExceptionWrapper.restorerjXmethodXcelery.conf.CELERYBEAT_LOG_FILErjXdataXcelery.conf.TRACK_STARTEDrjXdataX8celery.bin.celeryd_multi.NamespacedOptionParser.optmergerj~XmethodX:celery.serialization.UnpickleableExceptionWrapper.exc_argsrjX attributeXcelery.loaders.setup_loaderrjXfunctionXcelery.conf.SERVER_EMAILrjXdataX-celery.datastructures.ExceptionInfo.tracebackrj:X attributeX%celery.utils.compat.OrderedDict.itemsrjXmethodX celery.registry.TaskRegistry.popr jXmethodr!XAcelery.bin.celeryd_multi.NamespacedOptionParser.process_short_optr"j~XmethodXcelery.task.httpr#hjXcelery.task.baser$h5jX*celery.registry.TaskRegistry.NotRegisteredr%jX exceptionr&Xcelery.loadersr'jjX%celery.conf.BROKER_CONNECTION_TIMEOUTr(jXdataXcelery.states.RETRYr)hkXdatar*Xcelery.utils.timeutils.weekdayr+jcXfunctionX*celery.utils.compat.OrderedDict.itervaluesr,jXmethodXcelery.routes.MapRouter-jXclassX(celery.utils.compat.OrderedDict.iterkeysr.jXmethodXcelery.utils.patchr/jjXcelery.conf.ADMINSr0jXdataX'celery.exceptions.SoftTimeLimitExceededr1jUX exceptionXcelery.states.EXCEPTION_STATESr2hkXdatar3X(celery.utils.dispatch.signal.Signal.sendr4juXmethodX-celery.serialization.get_pickleable_exceptionr5jXfunctionXcelery.signals.worker_shutdownr6hXdatar7X celery.statesr8hkjXcelery.utils.chunksr9jXfunctionXcelery.utils.mitemgetterr:jXfunctionX&celery.utils.compat.OrderedDict.valuesr;jXmethodXcelery.conf.CELERYD_LISTENERr<jXdataX&celery.datastructures.LimitedSet.firstr=j:X attributeXcelery.conf.CELERYD_LOG_LEVELr>jXdataXcelery.utils.gen_unique_idr?jXfunctionXcelery.utils.promiser@jXclassXcelery.states.REVOKEDrAhkXdatarBXcelery.signals.task_postrunrChXdatarDX#celery.exceptions.TimeLimitExceededrEjUX exceptionXcelery.utils.mailrFhjXcelery.exceptions.NotRegisteredrGjUX exceptionXcelery.utils.repeatlastrHjXfunctionXcelery.utils.fun_takes_kwargsrIjXfunctionXcelery.utils.instantiaterJjXfunctionX,celery.loaders.default.Loader.on_worker_initrKjXmethodrLXcelery.bin.celeryd_multi.quoterMj~XfunctionX1celery.loaders.base.BaseLoader.worker_initializedrNjX attributerOX'celery.bin.celeryd_multi.parse_ns_rangerPj~XfunctionXcelery.conf.MAX_CACHED_RESULTSrQjXdataX*celery.utils.compat.OrderedDict.setdefaultrRjXmethodXcelery.routes.Router.routerSjXmethodXcelery.loaders.load_settingsrTjXfunctionX'celery.utils.compat.chain_from_iterablerUjXfunctionX*celery.serialization.get_pickled_exceptionrVjXfunctionXcelery.conf.DEFAULT_ROUTING_KEYrWjXdataX#celery.utils.compat.OrderedDict.poprXjXmethodXcelery.states.ALL_STATESrYhkXdatarZXcelery.utils.get_full_cls_namer[jXfunctionXcelery.conf.DEFAULT_EXCHANGEr\jXdataX(celery.bin.celeryd_multi.MultiTool.startr]j~XmethodX celery.utils.timeutils.remainingr^jcXfunctionX-celery.loaders.default.Loader.import_from_cwdr_jXmethodr`Xcelery.conf.CELERYMON_LOG_LEVELrajXdataXcelery.routes.preparerbjXfunctionX celery.routesrcjjXcelery.utils.promise.evaluaterdjXmethodXcelery.utils.dispatch.saferefrejHjX*celery.datastructures.PositionQueue.lengthrfj:X attributeXcelery.loaders.default.SettingsrgjXclassrhX#celery.datastructures.PositionQueuerij:XclassXcelery.routes.Router.add_queuerjjXmethodX#celery.datastructures.SharedCounterrkj:XclassXcelery.platform.ignore_signalrljXfunctionXcelery.utils.kwdictrmjXfunctionX/celery.bin.celeryd_multi.NamespacedOptionParserrnj~XclassX&celery.platform.install_signal_handlerrojXfunctionXcelery.routes.RouterrpjXclassX*celery.loaders.base.BaseLoader.init_workerrqjXmethodrrXcelery.platformrsjjX@celery.serialization.UnpickleableExceptionWrapper.from_exceptionrtjX classmethodX"celery.bin.celeryd_multi.MultiToolruj~XclassX#celery.exceptions.AlreadyRegisteredrvjUX exceptionX&celery.bin.celeryd_multi.MultiTool.getrwj~XmethodX(celery.datastructures.LimitedSet.as_dictrxj:XmethodXcelery.signals.worker_initryhXdatarzX#celery.conf.CELERYD_TASK_LOG_FORMATr{jXdataXcelery.conf.IGNORE_RESULTr|jXdataX celery.utilsr}jjXcelery.conf.BROADCAST_QUEUEr~jXdataX%celery.routes.MapRoute.route_for_taskrjXmethodXcelery.utils.compat.OrderedDictrjXclassX-celery.utils.dispatch.signal.Signal.receiversrjuX attributeXcelery.conf.DISABLE_RATE_LIMITSrjXdataX-celery.datastructures.ExceptionInfo.exceptionrj:X attributeXcelery.utils.mail.mail_adminsrhXfunctionX celery.datastructures.LocalCacherj:XclassXcelery.registryrjjXcelery.utils.mattrgetterrjXfunctionXcelery.bin.celeryd_multirj~jX+celery.utils.dispatch.signal.Signal.connectrjuXmethodXcelery.conf.RESULT_BACKENDrjXdataX0celery.datastructures.LimitedSet.chronologicallyrj:X attributeXcelery.utils.is_iterablerjXfunctionX:celery.utils.dispatch.saferef.BoundMethodWeakref.weak_funcrjHX attributeX!celery.exceptions.WorkerLostErrorrjUX exceptionX$celery.platform.set_mp_process_titlerjXfunctionXcelery.conf.TASK_RESULT_EXPIRESrjXdataXcelery.conf.BROADCAST_EXCHANGErjXdataXcelery.conf.EVENT_QUEUErjXdataX#celery.conf.BROKER_CONNECTION_RETRYrjXdataX'celery.utils.timeutils.delta_resolutionrjcXfunctionXcelery.conf.DEFAULT_QUEUErjXdataX#celery.utils.dispatch.signal.SignalrjuXclassXcelery.conf.CELERYD_LOG_FORMATrjXdataXcelery.conf.LOG_LEVELSrjXdataXcelery.conf.MAIL_PORTrjXdataX5celery.bin.celeryd_multi.NamespacedOptionParser.parserj~XmethodX'celery.registry.TaskRegistry.unregisterrjXmethodrX&celery.utils.compat.OrderedDict.updaterjXmethodXcelery.states.FAILURErhkXdatarXcelery.states.PROPAGATE_STATESrhkXdatarX#celery.conf.BROADCAST_EXCHANGE_TYPErjXdataXcelery.conf.CELERYD_POOLrjXdataX!celery.utils.mail.SendmailWarningrhX exceptionX$celery.loaders.default.NotConfiguredrjX exceptionrXcelery.bin.celeryd_multi.sayrj~XfunctionXcelery.utils.functionalrhbjX0celery.utils.dispatch.saferef.BoundMethodWeakrefrjHXclassXcelery.states.READY_STATESrhkXdatarXcelery.conf.EVENT_EXCHANGErjXdataX:celery.bin.celeryd_multi.NamespacedOptionParser.add_optionrj~XmethodXcelery.loaders.get_loader_clsrjXfunctionX!celery.conf.DEFAULT_DELIVERY_MODErjXdataX+celery.loaders.base.BaseLoader.on_task_initrjXmethodrX1celery.serialization.UnpickleableExceptionWrapperrjX exceptionX6celery.serialization.find_nearest_pickleable_exceptionrjXfunctionX)celery.exceptions.MaxRetriesExceededErrorrjUX exceptionXcelery.loaders.baserjjXcelery.conf.TASK_SERIALIZERrjXdataX)celery.utils.compat.OrderedDict.iteritemsrjXmethodXcelery.utils.nooprjXfunctionX0celery.loaders.default.Loader.read_configurationrjXmethodrXcelery.conf.DEFAULT_RATE_LIMITrjXdataX'celery.serialization.subclass_exceptionrjXfunctionX(celery.conf.CELERYBEAT_SCHEDULE_FILENAMErjXdataXcelery.exceptions.QueueNotFoundrjUX exceptionXcelery.utils.retry_over_timerjXfunctionX4celery.utils.dispatch.saferef.BoundMethodWeakref.keyrjHX attributeX)celery.bin.celeryd_multi.MultiTool.expandrj~XmethodX(celery.conf.STORE_ERRORS_EVEN_IF_IGNOREDrjXdataXcelery.conf.MAIL_HOST_PASSWORDrjXdataXcelery.utils.mail.MailerrhXclassX.celery.utils.patch.ensure_process_aware_loggerrjXfunctionXcelery.registry.TaskRegistryrjXclassrXcelery.utils.dispatchrjjXcelery.conf.SEND_EVENTSrjXdataX!celery.conf.CELERYD_ETA_SCHEDULERrjXdataX celery.exceptions.RetryTaskErrorrjUX exceptionX(celery.utils.compat.OrderedDict.fromkeysrjX classmethodXAcelery.utils.dispatch.saferef.BoundMethodWeakref.deletion_methodsrjHX attributeXcelery.conf.EVENT_EXCHANGE_TYPErjXdataX)celery.conf.CELERY_SEND_TASK_ERROR_EMAILSrjXdataX@celery.bin.celeryd_multi.NamespacedOptionParser.process_long_optrj~XmethodXcelery.conf.EVENT_ROUTING_KEYrjXdataX!celery.conf.DEFAULT_EXCHANGE_TYPErjXdataX%celery.registry.TaskRegistry.periodicrjXmethodrX5celery.loaders.base.BaseLoader.import_default_modulesrjXmethodrX=celery.utils.dispatch.saferef.BoundNonDescriptorMethodWeakrefrjHXclassXcelery.loaders.current_loaderrjXfunctionX1celery.loaders.base.BaseLoader.on_process_cleanuprjXmethodrXcelery.conf.CELERYMON_LOG_FILErjXdataXcelery.utils.mpromise.evaluaterjXmethodXcelery.signals.task_sentrhXdatarX(celery.bin.celeryd_multi.MultiTool.namesrj~XmethodXcelery.conf.ACKS_LATErjXdataX6celery.utils.dispatch.saferef.get_bound_method_weakrefrjHXfunctionX1celery.loaders.base.BaseLoader.import_task_modulerjXmethodrXcelery.conf.ALWAYS_EAGERrjXdataX'celery.conf.EAGER_PROPAGATES_EXCEPTIONSrjXdataXcelery.states.SUCCESSrhkXdatarXcelery.utils.mpromiserjXclassX)celery.serialization.create_exception_clsrjXfunctionX*celery.datastructures.PositionQueue.filledrj:X attributeX#celery.datastructures.consume_queuerj:XfunctionX>celery.serialization.UnpickleableExceptionWrapper.exc_cls_namerjX attributeX<celery.serialization.UnpickleableExceptionWrapper.exc_modulerjX attributeXcelery.signals.task_prerunrhXdatarXcelery.conf.RESULT_EXCHANGErjXdataXcelery.conf.CELERYD_MEDIATORrjXdataX/celery.utils.dispatch.signal.Signal.send_robustrjuXmethodXcelery.utils.padlistrjXfunctionXcelery.states.UNREADY_STATESrhkXdatarX?celery.utils.dispatch.saferef.BoundMethodWeakref._all_instancesrjHX attributeX"celery.exceptions.TaskRevokedErrorrjUX exceptionXcelery.bin.celeryd_multi.mainrj~XfunctionX'celery.datastructures.LimitedSet.updaterj:XmethodX#celery.datastructures.AttributeDictrj:XclassX(celery.bin.celeryd_multi.MultiTool.usagerj~XmethodX(celery.conf.CELERYBEAT_MAX_LOOP_INTERVALrjXdataX(celery.utils.timeutils.timedelta_secondsrjcXfunctionXcelery.utils.get_cls_by_namerjXfunctionXcelery.datastructuresrj:jXcelery.states.PENDINGrhkXdatarX)celery.loaders.base.BaseLoader.configuredrjX attributerX0celery.loaders.base.BaseLoader.override_backendsrjX attributerXcelery.conf.MAIL_HOSTrjXdataX-celery.datastructures.SharedCounter.decrementrj:XmethodX!celery.platform.set_process_titlerjXfunctionX"celery.signals.worker_process_initr hXdatar X'celery.routes.Router.expand_destinationr jXmethodX'celery.bin.celeryd_multi.MultiTool.helpr j~XmethodX-celery.loaders.base.BaseLoader.on_worker_initr jXmethodrXcelery.utils.firstmethodrjXfunctionXcelery.states.STARTEDrhkXdatarXcelery.platform.reset_signalrjXfunctionXcelery.serializationrjjX*celery.datastructures.LimitedSet.pop_valuerj:XmethodX)celery.conf.BROKER_CONNECTION_MAX_RETRIESrjXdataX4celery.datastructures.PositionQueue.UnfilledPositionrj:XclassXcelery.loaders.defaultrjjXcelery.exceptions.TimeoutErrorrjUX exceptionX#celery.loaders.base.BaseLoader.confrjX attributerX%celery.utils.compat.OrderedDict.clearrjXmethodXcelery.conf.CELERYD_CONCURRENCYrjXdataX celery.datastructures.LimitedSetrj:XclassXcelery.loaders.default.LoaderrjXclassrX$celery.datastructures.LimitedSet.addr j:XmethodXcelery.conf.CELERYD_LOG_FILEr!jXdataX&celery.exceptions.ImproperlyConfiguredr"jUX exceptionXcelery.utils.mail.Messager#hXclassXcelery.utils.compatr$jjX>celery.utils.dispatch.saferef.BoundMethodWeakref.calculate_keyr%jHX classmethoduUmodulesr&}r'(j(jcUUtj(jUUUtjF(hUUtj(hbUUtj}(jUUtj(juUUtj(jUUtj(j:UUtjc(jUUtj#(hUUtj$(h5UUtj'(jUUtj(jUUtj(jUUtj(jUUtj/(jUUtjs(jUUtj(jUUtj(j~UUtje(jHUUtj8(hkUUtj$(jUUtujKuUjsr(}r)(j}r*jKuUrstr+}r,(j}r-jKuUcppr.}r/(j}r0jKuuU glob_toctreesr1h]Rr2U reread_alwaysr3h]r4(jjj(jj1jj$hPj6hYj?j^j j2hth}hj;hhhjMjyjVhj jjj_jvhjjjjjjjjjjjjjQjjjeRr5U doctreedirr6XO/var/build/user_builds/celery/checkouts/2.0-archived/docs/_build/html/.doctreesr7Uversioning_conditionr8U citationsr9}jK*Usrcdirr:X9/var/build/user_builds/celery/checkouts/2.0-archived/docsr;Uconfigr<csphinx.config Config r=)r>}r?(Upygments_styler@UtracrAUhtml_use_smartypantsrBU html_themerCUceleryrDU exclude_treesrE]rFU.buildrGaU html_contextrH}rI(U github_userjDUnamerJXCeleryrKU github_repojDUversions]rL(UmasterU /en/master/rMUlatestU /en/latest/rNU 2.5-archivedU/en/2.5-archived/rOU 2.4-archivedU/en/2.4-archived/rPU 2.3-archivedU/en/2.3-archived/rQU 2.2-archivedU/en/2.2-archived/rRU 2.1-archivedU/en/2.1-archived/rSU 2.0-archivedrTU/en/2.0-archived/rUU 1.0-archivedU/en/1.0-archived/rVU3.0U/en/3.0/rWeU using_themeU downloads]U READTHEDOCSUgithub_versionjTU conf_py_pathU/docs/U canonical_urlUUanalytics_codeUU rtd_languageXenUPRODUCTION_DOMAINUreadthedocs.orgjCjDUdisplay_githubUcurrent_versionrXjTUsingle_versionUapi_hostUhttps://readthedocs.orgUslugrYjDU new_themeU MEDIA_URLrZUhttps://media.readthedocs.org/uU source_suffixr[U.rstU copyrightr\X#2009-2010, Ask Solem & contributorsUadd_function_parenthesesr]U html_sidebarsr^}r_(Uindexr`]ra(Usidebarintro.htmlrbUsourcelink.htmlrcUsearchbox.htmlrdeU**]re(Usidebarlogo.htmlrfU localtoc.htmlrgUrelations.htmlrhjcjdeujU2.0U master_docrij`Utemplates_pathrj]rk(UA/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinxrlU .templatesrmeUlatex_documentsrn]ro(UindexU Celery.texXCelery DocumentationX Ask SolemUmanualtrpaUhtml_static_pathrq]rr(U.staticrsUI/home/docs/checkouts/readthedocs.org/readthedocs/templates/sphinx/_staticrteUhtml_theme_pathru]rv(U_themerwjleUlanguagerxXenryU overridesrz}r{jxjysUhtml_use_indexr|Uhtml_use_modindexr}Uprojectr~jKU extensionsr]r(Usphinx.ext.autodocrUsphinx.ext.coveragerUreadthedocs_ext.readthedocsrU"readthedocs_ext.readthedocshtmldirreUreleaserU2.0.3 (stable)UsetuprNubUmetadatar}r(h }h#}h,}h5}h>}hG}hP}hY}hb}hk}ht}h}}h}h}h}h}h}h}h}h}h}h}h}h}h}h}j}j }j}j}j(}j1}j:}jC}jL}jU}j^}jg}jp}jy}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j }j}j}j$}j-}j6}j?}jH}jQ}jZ}jc}jl}ju}j~}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j}j }j)}j2}j;}jD}jM}jV}j_}jv}j}j}j}j}j}j}j}j}uUversionchangesr}Utoc_num_entriesr}r(h Kh#Kh,Kh5Kh>KhGKhPKhYKhbKhkKhtKh}KhKhKhKhKhKhKhK-hKhKhKhKhKhKhKEjKj KjKjKj(Kj1Kj:KjCKjLKjUKj^KjgKjpK4jyKjKjKjKjKjKjKjKjKjK jKjK jKjKjKjKj KjKjKj$Kj-Kj6Kj?KjHKjQKjZKjcKjlKjuKj~KjKjKjKjKjKjK jKjKjKjKjKjKjKjKjKjKjKj Kj)Kj2Kj;KjDKjMKjVKj_KjvKjKjKjKjKjKjKjKjKuUimagesrh)rh]RrbUnumbered_toctreesrh]RrU found_docsrh]r(h h#h,h5h>hGhPhYhbhkhth}hhhhhhhhjhhhhhjj jjj(j1j:jCjLjUj^jgjpjyhjjjjjjjjjjjjjjjj jjj$j-j6j?jHjQjZjcjljuj~jjjjjjjjjjjjjjjjj j)j2j;jDjMjVj_jvjjjjjjjjeRrU longtitlesr}r(h hh#h$h,h-h5h6h>h?hGhHhPhQhYhZhbhchkhlhthuh}h~hhhhhhhhhhhhhhhhhhhhhhhhhhhhjjj jjjjj j(j)j1j2j:j;jCjDjLjMjUjVj^j_jgjhjpjqjyjzjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j jjjjj$j%j-j.j6j7j?j@jHjIjQjRjZj[jcjdjljmjujvj~jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj j!j)j*j2j3j;j<jDjEjMjNjVjWj_j`jvjwjjjjjjjjjjjjjjjjuU dependenciesr}r(jh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/default.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/patch.pyraRrj:h]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.pyraRrj-h]rXincludes/resources.txtraRrhbh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/functional.pyraRrjUh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.pyraRrjHh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/saferef.pyraRrjZh]rXincludes/introduction.txtraRrjch]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/timeutils.pyraRrjuh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/signal.pyraRrhh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/mail.pyraRrj~h]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/bin/celeryd_multi.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/serialization.pyraRrhkh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/states.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/routes.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/compat.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/registry.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/__init__.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/platform.pyraRrjh]rU/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/base.pyraRruUtoctree_includesr}r(jC]r(Xgetting-started/indexrXuserguide/indexrX configurationrXcookbook/indexrXtutorials/indexrXfaqrXreference/indexrXinternals/indexrX changelogrXlinksreh]r(Xreference/celery.decoratorsrXreference/celery.task.baserXreference/celery.task.setsrXreference/celery.executerXreference/celery.resultrXreference/celery.taskrXreference/celery.confrXreference/celery.task.controlrXreference/celery.task.httprXreference/celery.task.schedulesrXreference/celery.signalsrXreference/celery.exceptionsrXreference/celery.task.builtinsrXreference/celery.loadersrXreference/celery.loaders.baserX reference/celery.loaders.defaultrXreference/celery.registryrXreference/celery.statesrXreference/celery.messagingrX"reference/celery.contrib.abortablerXreference/celery.eventsrXreference/celery.events.staterXreference/celery.bin.celerydrXreference/celery.bin.celerybeatrXreference/celery.bin.celeryevrXreference/celery.bin.camqadmrX"reference/celery.bin.celeryd_multirej)]r(Xgetting-started/introductionrX#getting-started/broker-installationrX'getting-started/first-steps-with-celeryrXgetting-started/periodic-tasksrXgetting-started/resourcesreh,]r (Xcookbook/tasksr Xcookbook/daemonizingr ej]r (Xuserguide/tasksr Xuserguide/executingrXuserguide/workersrXuserguide/tasksetsrXuserguide/remote-tasksrXuserguide/routingrejg]r(Xtutorials/externalrXtutorials/otherqueuesrXtutorials/clickcounterrej]r(X!internals/reference/celery.workerrX*internals/reference/celery.worker.listenerrX%internals/reference/celery.worker.jobrX-internals/reference/celery.worker.controllersrX)internals/reference/celery.worker.bucketsrX+internals/reference/celery.worker.schedulerrX+internals/reference/celery.worker.heartbeatrX)internals/reference/celery.worker.controlrX2internals/reference/celery.worker.control.builtinsr X2internals/reference/celery.worker.control.registryr!X'internals/reference/celery.worker.stater"X0internals/reference/celery.concurrency.processesr#X5internals/reference/celery.concurrency.processes.poolr$X.internals/reference/celery.concurrency.threadsr%Xinternals/reference/celery.beatr&X#internals/reference/celery.backendsr'X(internals/reference/celery.backends.baser(X,internals/reference/celery.backends.databaser)X)internals/reference/celery.backends.cacher*X(internals/reference/celery.backends.amqpr+X+internals/reference/celery.backends.mongodbr,X+internals/reference/celery.backends.pyredisr-X-internals/reference/celery.backends.cassandrar.X*internals/reference/celery.backends.tyrantr/X(internals/reference/celery.execute.tracer0X(internals/reference/celery.serializationr1X)internals/reference/celery.datastructuresr2X!internals/reference/celery.routesr3Xinternals/reference/celery.logr4X$internals/reference/celery.db.modelsr5X%internals/reference/celery.db.sessionr6X internals/reference/celery.utilsr7X*internals/reference/celery.utils.timeutilsr8X%internals/reference/celery.utils.infor9X'internals/reference/celery.utils.compatr:X%internals/reference/celery.utils.mailr;X&internals/reference/celery.utils.patchr<X+internals/reference/celery.utils.functionalr=X)internals/reference/celery.utils.dispatchr>X0internals/reference/celery.utils.dispatch.signalr?X1internals/reference/celery.utils.dispatch.saferefr@X#internals/reference/celery.platformrAeh>]rB(Xinternals/deprecationrCXinternals/workerrDXinternals/protocolrEXinternals/eventsrFXinternals/moduleindexrGXinternals/reference/indexrHeuU temp_datarI}UtocsrJ}rK(h cdocutils.nodes bullet_list rL)rM}rN(hUh}rO(h]h]h]h]h]uh]rPcdocutils.nodes list_item rQ)rR}rS(hUh}rT(h]h]h]h]h]uh jMh]rU(csphinx.addnodes compact_paragraph rV)rW}rX(hUh}rY(h]h]h]h]h]uh jRh]rZcdocutils.nodes reference r[)r\}r](hUh}r^(U anchornameUUrefurih h]h]h]h]h]Uinternaluh jWh]r_hX Routing Tasksr`ra}rb(hhh j\ubah!U referencercubah!Ucompact_paragraphrdubjL)re}rf(hUh}rg(h]h]h]h]h]uh jRh]rh(jQ)ri}rj(hUh}rk(h]h]h]h]h]uh jeh]rl(jV)rm}rn(hUh}ro(h]h]h]h]h]uh jih]rpj[)rq}rr(hUh}rs(U anchornameU#basicsUrefurih h]h]h]h]h]Uinternaluh jmh]rthXBasicsrurv}rw(hXBasicsrxh jqubah!jcubah!jdubjL)ry}rz(hUh}r{(h]h]h]h]h]uh jih]r|(jQ)r}}r~(hUh}r(h]h]h]h]h]uh jyh]r(jV)r}r(hUh}r(h]h]h]h]h]uh j}h]rj[)r}r(hUh}r(U anchornameU#automatic-routingUrefurih h]h]h]h]h]Uinternaluh jh]rhXAutomatic routingrr}r(hXAutomatic routingrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh j}h]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU'#changing-the-name-of-the-default-queueUrefurih h]h]h]h]h]Uinternaluh jh]rhX&Changing the name of the default queuerr}r(hX&Changing the name of the default queuerh jubah!jcubah!jdubah!U list_itemrubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#how-the-queues-are-definedUrefurih h]h]h]h]h]Uinternaluh jh]rhXHow the queues are definedrr}r(hXHow the queues are definedrh jubah!jcubah!jdubah!jubeh!U bullet_listrubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jyh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#manual-routingUrefurih h]h]h]h]h]Uinternaluh jh]rhXManual routingrr}r(hXManual routingrh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jeh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #amqp-primerUrefurih h]h]h]h]h]Uinternaluh jh]rhX AMQP Primerrr}r(hX AMQP Primerrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #messagesUrefurih h]h]h]h]h]Uinternaluh jh]rhXMessagesrr}r(hXMessagesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #producers-consumers-and-brokersUrefurih h]h]h]h]h]Uinternaluh jh]rhX Producers, consumers and brokersrr}r(hX Producers, consumers and brokersrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU"#exchanges-queues-and-routing-keysUrefurih h]h]h]h]h]Uinternaluh jh]rhX#Exchanges, queues and routing keys.rr}r(hX#Exchanges, queues and routing keys.rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r (h]h]h]h]h]uh jh]r (jV)r }r (hUh}r (h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#exchange-typesUrefurih h]h]h]h]h]Uinternaluh j h]rhXExchange typesrr}r(hXExchange typesrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r (hUh}r!(h]h]h]h]h]uh jh]r"j[)r#}r$(hUh}r%(U anchornameU#direct-exchangesUrefurih h]h]h]h]h]Uinternaluh jh]r&hXDirect exchangesr'r(}r)(hXDirect exchangesr*h j#ubah!jcubah!jdubah!jubjQ)r+}r,(hUh}r-(h]h]h]h]h]uh jh]r.jV)r/}r0(hUh}r1(h]h]h]h]h]uh j+h]r2j[)r3}r4(hUh}r5(U anchornameU#topic-exchangesUrefurih h]h]h]h]h]Uinternaluh j/h]r6hXTopic exchangesr7r8}r9(hXTopic exchangesr:h j3ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r;}r<(hUh}r=(h]h]h]h]h]uh jh]r>(jV)r?}r@(hUh}rA(h]h]h]h]h]uh j;h]rBj[)rC}rD(hUh}rE(U anchornameU#related-api-commandsUrefurih h]h]h]h]h]Uinternaluh j?h]rFhXRelated API commandsrGrH}rI(hXRelated API commandsrJh jCubah!jcubah!jdubjL)rK}rL(hUh}rM(h]h]h]h]h]uh j;h]rN(jQ)rO}rP(hUh}rQ(h]h]h]h]h]uh jKh]rRjV)rS}rT(hUh}rU(h]h]h]h]h]uh jOh]rVj[)rW}rX(hUh}rY(U anchornameUI#exchange-declare-exchange-name-type-passive-durable-auto-delete-internalUrefurih h]h]h]h]h]Uinternaluh jSh]rZhXNexchange.declare(exchange_name, type, passive, durable, auto_delete, internal)r[r\}r](hXNexchange.declare(exchange_name, type, passive, durable, auto_delete, internal)r^h jWubah!jcubah!jdubah!jubjQ)r_}r`(hUh}ra(h]h]h]h]h]uh jKh]rbjV)rc}rd(hUh}re(h]h]h]h]h]uh j_h]rfj[)rg}rh(hUh}ri(U anchornameU?#queue-declare-queue-name-passive-durable-exclusive-auto-deleteUrefurih h]h]h]h]h]Uinternaluh jch]rjhXCqueue.declare(queue_name, passive, durable, exclusive, auto_delete)rkrl}rm(hXCqueue.declare(queue_name, passive, durable, exclusive, auto_delete)rnh jgubah!jcubah!jdubah!jubjQ)ro}rp(hUh}rq(h]h]h]h]h]uh jKh]rrjV)rs}rt(hUh}ru(h]h]h]h]h]uh joh]rvj[)rw}rx(hUh}ry(U anchornameU0#queue-bind-queue-name-exchange-name-routing-keyUrefurih h]h]h]h]h]Uinternaluh jsh]rzhX2queue.bind(queue_name, exchange_name, routing_key)r{r|}r}(hX2queue.bind(queue_name, exchange_name, routing_key)r~h jwubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jKh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU%#queue-delete-name-if-unused-if-emptyUrefurih h]h]h]h]h]Uinternaluh jh]rhX'queue.delete(name, if_unused, if_empty)rr}r(hX'queue.delete(name, if_unused, if_empty)rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jKh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#exchange-delete-name-if-unusedUrefurih h]h]h]h]h]Uinternaluh jh]rhX exchange.delete(name, if_unused)rr}r(hX exchange.delete(name, if_unused)rh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#hands-on-with-the-apiUrefurih h]h]h]h]h]Uinternaluh jh]rhXHands-on with the APIrr}r(hXHands-on with the APIrh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jeh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id2Urefurih h]h]h]h]h]Uinternaluh jh]rhX Routing Tasksrr}r(hX Routing Tasksrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#defining-queuesUrefurih h]h]h]h]h]Uinternaluh jh]rhXDefining queuesrr}r(hXDefining queuesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#specifying-task-destinationUrefurih h]h]h]h]h]Uinternaluh jh]rhXSpecifying task destinationrr}r(hXSpecifying task destinationrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#routersUrefurih h]h]h]h]h]Uinternaluh jh]rhXRoutersrr}r(hXRoutersrh jubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubh#jL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurih#h]h]h]h]h]Uinternaluh jh]rhXCelery 1.0 has been released!rr}r(hh+h jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r (jQ)r }r (hUh}r (h]h]h]h]h]uh jh]r (jV)r}r(hUh}r(h]h]h]h]h]uh j h]rj[)r}r(hUh}r(U anchornameU #what-is-itUrefurih#h]h]h]h]h]Uinternaluh jh]rhX What is it?rr}r(hX What is it?rh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh j h]rjQ)r}r(hUh}r (h]h]h]h]h]uh jh]r!jV)r"}r#(hUh}r$(h]h]h]h]h]uh jh]r%j[)r&}r'(hUh}r((U anchornameU #featuresUrefurih#h]h]h]h]h]Uinternaluh j"h]r)hXFeaturesr*r+}r,(hXFeaturesr-h j&ubah!jcubah!jdubah!jubah!jubeh!jubjQ)r.}r/(hUh}r0(h]h]h]h]h]uh jh]r1jV)r2}r3(hUh}r4(h]h]h]h]h]uh j.h]r5j[)r6}r7(hUh}r8(U anchornameU #stable-apiUrefurih#h]h]h]h]h]Uinternaluh j2h]r9hX Stable APIr:r;}r<(hX Stable APIr=h j6ubah!jcubah!jdubah!jubjQ)r>}r?(hUh}r@(h]h]h]h]h]uh jh]rAjV)rB}rC(hUh}rD(h]h]h]h]h]uh j>h]rEj[)rF}rG(hUh}rH(U anchornameU #what-s-newUrefurih#h]h]h]h]h]Uinternaluh jBh]rIhX What's new?rJrK}rL(hX What's new?rMh jFubah!jcubah!jdubah!jubjQ)rN}rO(hUh}rP(h]h]h]h]h]uh jh]rQjV)rR}rS(hUh}rT(h]h]h]h]h]uh jNh]rUj[)rV}rW(hUh}rX(U anchornameU #resourcesUrefurih#h]h]h]h]h]Uinternaluh jRh]rYhX ResourcesrZr[}r\(hX Resourcesr]h jVubah!jcubah!jdubah!jubeh!jubeh!jubah!jubh,jL)r^}r_(hUh}r`(h]h]h]h]h]uh]rajQ)rb}rc(hUh}rd(h]h]h]h]h]uh j^h]re(jV)rf}rg(hUh}rh(h]h]h]h]h]uh jbh]rij[)rj}rk(hUh}rl(U anchornameUUrefurih,h]h]h]h]h]Uinternaluh jfh]rmhXCookbookrnro}rp(hh4h jjubah!jcubah!jdubjL)rq}rr(hUh}rs(h]h]h]h]h]uh jbh]rtcsphinx.addnodes toctree ru)rv}rw(hUh}rx(UnumberedKUparenth,U titlesonlyUglobh]h]h]h]h]Uentries]ry(Nj rzNj r{eUhiddenUmaxdepthKU includefiles]r|(j j eU includehiddenuh jqh]h!Utoctreer}ubah!jubeh!jubah!jubh5jL)r~}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh j~h]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurih5h]h]h]h]h]Uinternaluh jh]rhXTasksrr}r(hh=h jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#basicsUrefurih5h]h]h]h]h]Uinternaluh jh]rhXBasicsrr}r(hXBasicsrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#default-keyword-argumentsUrefurih5h]h]h]h]h]Uinternaluh jh]rhXDefault keyword argumentsrr}r(hXDefault keyword argumentsrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#loggingUrefurih5h]h]h]h]h]Uinternaluh jh]rhXLoggingrr}r(hXLoggingrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU##retrying-a-task-if-something-failsUrefurih5h]h]h]h]h]Uinternaluh jh]rhX"Retrying a task if something failsrr}r(hX"Retrying a task if something failsrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#using-a-custom-retry-delayUrefurih5h]h]h]h]h]Uinternaluh jh]rhXUsing a custom retry delayrr}r(hXUsing a custom retry delayrh jubah!jcubah!jdubah!jubah!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #task-optionsUrefurih5h]h]h]h]h]Uinternaluh jh]rhX Task optionsrr}r(hX Task optionsrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r jV)r }r (hUh}r (h]h]h]h]h]uh jh]r j[)r }r (hUh}r (U anchornameU#message-and-routing-optionsUrefurih5h]h]h]h]h]Uinternaluh j h]r hXMessage and routing optionsr r }r (hXMessage and routing optionsr h j ubah!jcubah!jdubah!jubah!jubeh!jubjQ)r }r (hUh}r (h]h]h]h]h]uh jh]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#exampleUrefurih5h]h]h]h]h]Uinternaluh j h]r hXExampler r }r (hXExampler h j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r (jQ)r! }r" (hUh}r# (h]h]h]h]h]uh j h]r$ jV)r% }r& (hUh}r' (h]h]h]h]h]uh j! h]r( j[)r) }r* (hUh}r+ (U anchornameU#blog-models-pyUrefurih5h]h]h]h]h]Uinternaluh j% h]r, hXblog/models.pyr- r. }r/ (hXblog/models.pyr0 h j) ubah!jcubah!jdubah!jubjQ)r1 }r2 (hUh}r3 (h]h]h]h]h]uh j h]r4 jV)r5 }r6 (hUh}r7 (h]h]h]h]h]uh j1 h]r8 j[)r9 }r: (hUh}r; (U anchornameU#blog-views-pyUrefurih5h]h]h]h]h]Uinternaluh j5 h]r< hX blog/views.pyr= r> }r? (hX blog/views.pyr@ h j9 ubah!jcubah!jdubah!jubjQ)rA }rB (hUh}rC (h]h]h]h]h]uh j h]rD jV)rE }rF (hUh}rG (h]h]h]h]h]uh jA h]rH j[)rI }rJ (hUh}rK (U anchornameU#blog-tasks-pyUrefurih5h]h]h]h]h]Uinternaluh jE h]rL hX blog/tasks.pyrM rN }rO (hX blog/tasks.pyrP h jI ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)rQ }rR (hUh}rS (h]h]h]h]h]uh jh]rT jV)rU }rV (hUh}rW (h]h]h]h]h]uh jQ h]rX j[)rY }rZ (hUh}r[ (U anchornameU #how-it-worksUrefurih5h]h]h]h]h]Uinternaluh jU h]r\ hX How it worksr] r^ }r_ (hX How it worksr` h jY ubah!jcubah!jdubah!jubjQ)ra }rb (hUh}rc (h]h]h]h]h]uh jh]rd (jV)re }rf (hUh}rg (h]h]h]h]h]uh ja h]rh j[)ri }rj (hUh}rk (U anchornameU#tips-and-best-practicesUrefurih5h]h]h]h]h]Uinternaluh je h]rl hXTips and Best Practicesrm rn }ro (hXTips and Best Practicesrp h ji ubah!jcubah!jdubjL)rq }rr (hUh}rs (h]h]h]h]h]uh ja h]rt (jQ)ru }rv (hUh}rw (h]h]h]h]h]uh jq h]rx jV)ry }rz (hUh}r{ (h]h]h]h]h]uh ju h]r| j[)r} }r~ (hUh}r (U anchornameU#ignore-results-you-don-t-wantUrefurih5h]h]h]h]h]Uinternaluh jy h]r hXIgnore results you don't wantr r }r (hXIgnore results you don't wantr h j} ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh jq h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU(#disable-rate-limits-if-they-re-not-usedUrefurih5h]h]h]h]h]Uinternaluh j h]r hX'Disable rate limits if they're not usedr r }r (hX'Disable rate limits if they're not usedr h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh jq h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU%#avoid-launching-synchronous-subtasksUrefurih5h]h]h]h]h]Uinternaluh j h]r hX$Avoid launching synchronous subtasksr r }r (hX$Avoid launching synchronous subtasksr h j ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r }r (hUh}r (h]h]h]h]h]uh jh]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#performance-and-strategiesUrefurih5h]h]h]h]h]Uinternaluh j h]r hXPerformance and Strategiesr r }r (hXPerformance and Strategiesr h j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r (jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU #granularityUrefurih5h]h]h]h]h]Uinternaluh j h]r hX Granularityr r }r (hX Granularityr h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#data-localityUrefurih5h]h]h]h]h]Uinternaluh j h]r hX Data localityr r }r (hX Data localityr h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#stateUrefurih5h]h]h]h]h]Uinternaluh j h]r hXStater r }r (hXStater h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#database-transactionsUrefurih5h]h]h]h]h]Uinternaluh j h]r hXDatabase transactionsr r }r (hXDatabase transactionsr h j ubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubh>jL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurih>h]h]h]h]h]Uinternaluh j h]r hX Internalsr r }r (hhFh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r ju)r }r (hUh}r (UnumberedKUparenth>U titlesonlyUglobh]h]h]h]h]Uentries]r (NjCr NjDr NjEr NjFr NjGr NjHr eUhiddenUmaxdepthKU includefiles]r (jCjDjEjFjGjHeU includehiddenuh j h]h!j}ubah!jubeh!jubah!jubhGjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r! (h]h]h]h]h]uh j h]r" (jV)r# }r$ (hUh}r% (h]h]h]h]h]uh j h]r& j[)r' }r( (hUh}r) (U anchornameUUrefurihGh]h]h]h]h]Uinternaluh j# h]r* hXTask Message Protocolr+ r, }r- (hhOh j' ubah!jcubah!jdubjL)r. }r/ (hUh}r0 (h]h]h]h]h]uh j h]r1 (jQ)r2 }r3 (hUh}r4 (h]h]h]h]h]uh j. h]r5 jV)r6 }r7 (hUh}r8 (h]h]h]h]h]uh j2 h]r9 j[)r: }r; (hUh}r< (U anchornameU#message-formatUrefurihGh]h]h]h]h]Uinternaluh j6 h]r= hXMessage formatr> r? }r@ (hXMessage formath j: ubah!jcubah!jdubah!jubjQ)rA }rB (hUh}rC (h]h]h]h]h]uh j. h]rD jV)rE }rF (hUh}rG (h]h]h]h]h]uh jA h]rH j[)rI }rJ (hUh}rK (U anchornameU#example-messageUrefurihGh]h]h]h]h]Uinternaluh jE h]rL hXExample messagerM rN }rO (hXExample messageh jI ubah!jcubah!jdubah!jubjQ)rP }rQ (hUh}rR (h]h]h]h]h]uh j. h]rS jV)rT }rU (hUh}rV (h]h]h]h]h]uh jP h]rW j[)rX }rY (hUh}rZ (U anchornameU#serializationUrefurihGh]h]h]h]h]Uinternaluh jT h]r[ hX Serializationr\ r] }r^ (hX Serializationh jX ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubhPjL)r_ }r` (hUh}ra (h]h]h]h]h]uh]rb jQ)rc }rd (hUh}re (h]h]h]h]h]uh j_ h]rf jV)rg }rh (hUh}ri (h]h]h]h]h]uh jc h]rj j[)rk }rl (hUh}rm (U anchornameUUrefurihPh]h]h]h]h]Uinternaluh jg h]rn hX&HTTP Callback Tasks - celery.task.httpro rp }rq (hhXh jk ubah!jcubah!jdubah!jubah!jubhYjL)rr }rs (hUh}rt (h]h]h]h]h]uh]ru jQ)rv }rw (hUh}rx (h]h]h]h]h]uh jr h]ry jV)rz }r{ (hUh}r| (h]h]h]h]h]uh jv h]r} j[)r~ }r (hUh}r (U anchornameUUrefurihYh]h]h]h]h]Uinternaluh jz h]r hX*Worker Scheduler - celery.worker.schedulerr r }r (hhah j~ ubah!jcubah!jdubah!jubah!jubhbjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurihbh]h]h]h]h]Uinternaluh j h]r hX*functools compat - celery.utils.functionalr r }r (hhjh j ubah!jcubah!jdubah!jubah!jubhkjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurihkh]h]h]h]h]Uinternaluh j h]r hXTask States - celery.statesr r }r (hhsh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r (jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#statesUrefurihkh]h]h]h]h]Uinternaluh j h]r hXStatesr r }r (hXStatesr h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#setsUrefurihkh]h]h]h]h]Uinternaluh j h]r hXSetsr r }r (hXSetsr h j ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubhtjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurihth]h]h]h]h]Uinternaluh j h]r hXABuilt-in Remote Control Commands - celery.worker.control.builtinsr r }r (hh|h j ubah!jcubah!jdubah!jubah!jubh}jL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurih}h]h]h]h]h]Uinternaluh j h]r hXLogging - celery.logr r }r (hhh j ubah!jcubah!jdubah!jubah!jubhjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurihh]h]h]h]h]Uinternaluh j h]r hX&Multiprocessing Worker - celery.workerr r }r (hhh j ubah!jcubah!jdubah!jubah!jubhjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurihh]h]h]h]h]Uinternaluh j h]r hX API Referencer r }r (hhh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r ju)r }r (hUh}r! (UnumberedKUparenthU titlesonlyUglobh]h]h]h]h]Uentries]r" (Njr# Njr$ Njr% Njr& Njr' Njr( Njr) Njr* Njr+ Njr, Njr- Njr. Njr/ Njr0 Njr1 Njr2 Njr3 Njr4 Njr5 Njr6 Njr7 Njr8 Njr9 Njr: Njr; Njr< Njr= eUhiddenUmaxdepthKU includefiles]r> (jjjjjjjjjjjjjjjjjjjjjjjjjjjeU includehiddenuh j h]h!j}ubah!jubeh!jubah!jubhjL)r? }r@ (hUh}rA (h]h]h]h]h]uh]rB jQ)rC }rD (hUh}rE (h]h]h]h]h]uh j? h]rF jV)rG }rH (hUh}rI (h]h]h]h]h]uh jC h]rJ j[)rK }rL (hUh}rM (U anchornameUUrefurihh]h]h]h]h]Uinternaluh jG h]rN hX0Worker Message Listener - celery.worker.listenerrO rP }rQ (hhh jK ubah!jcubah!jdubah!jubah!jubhjL)rR }rS (hUh}rT (h]h]h]h]h]uh]rU jQ)rV }rW (hUh}rX (h]h]h]h]h]uh jR h]rY jV)rZ }r[ (hUh}r\ (h]h]h]h]h]uh jV h]r] j[)r^ }r_ (hUh}r` (U anchornameUUrefurihh]h]h]h]h]Uinternaluh jZ h]ra hX?In-memory Representation of Cluster State - celery.events.staterb rc }rd (hhh j^ ubah!jcubah!jdubah!jubah!jubhjL)re }rf (hUh}rg (h]h]h]h]h]uh]rh jQ)ri }rj (hUh}rk (h]h]h]h]h]uh je h]rl jV)rm }rn (hUh}ro (h]h]h]h]h]uh ji h]rp j[)rq }rr (hUh}rs (U anchornameUUrefurihh]h]h]h]h]Uinternaluh jm h]rt hX"Sending E-mail - celery.utils.mailru rv }rw (hhh jq ubah!jcubah!jdubah!jubah!jubhjL)rx }ry (hUh}rz (h]h]h]h]h]uh]r{ jQ)r| }r} (hUh}r~ (h]h]h]h]h]uh jx h]r jV)r }r (hUh}r (h]h]h]h]h]uh j| h]r j[)r }r (hUh}r (U anchornameUUrefurihh]h]h]h]h]Uinternaluh j h]r hX(Tracing Execution - celery.execute.tracer r }r (hhh j ubah!jcubah!jdubah!jubah!jubhjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurihh]h]h]h]h]Uinternaluh j h]r hXFrequently Asked Questionsr r }r (hhh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r (jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#generalUrefurihh]h]h]h]h]Uinternaluh j h]r hXGeneralr r }r (hXGeneralh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU-#what-kinds-of-things-should-i-use-celery-forUrefurihh]h]h]h]h]Uinternaluh j h]r hX-What kinds of things should I use celery for?r r }r (hX-What kinds of things should I use celery for?h j ubah!jcubah!jdubah!jubah!jubeh!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#misconceptionsUrefurihh]h]h]h]h]Uinternaluh j h]r hXMisconceptionsr r }r (hXMisconceptionsh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r (jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#is-celery-dependent-on-pickleUrefurihh]h]h]h]h]Uinternaluh j h]r hXIs celery dependent on pickle?r r }r (hXIs celery dependent on pickle?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#is-celery-for-django-onlyUrefurihh]h]h]h]h]Uinternaluh j h]r hXIs celery for Django only?r r }r (hXIs celery for Django only?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#do-i-have-to-use-amqp-rabbitmqUrefurihh]h]h]h]h]Uinternaluh j h]r hXDo I have to use AMQP/RabbitMQ?r r }r (hXDo I have to use AMQP/RabbitMQ?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#is-celery-multi-lingualUrefurihh]h]h]h]h]Uinternaluh j h]r hXIs celery multi-lingual?r r }r (hXIs celery multi-lingual?h j ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#troubleshootingUrefurihh]h]h]h]h]Uinternaluh j h]r hXTroubleshootingr r }r! (hXTroubleshootingh j ubah!jcubah!jdubjL)r" }r# (hUh}r$ (h]h]h]h]h]uh j h]r% (jQ)r& }r' (hUh}r( (h]h]h]h]h]uh j" h]r) jV)r* }r+ (hUh}r, (h]h]h]h]h]uh j& h]r- j[)r. }r/ (hUh}r0 (U anchornameU0#mysql-is-throwing-deadlock-errors-what-can-i-doUrefurihh]h]h]h]h]Uinternaluh j* h]r1 hX1MySQL is throwing deadlock errors, what can I do?r2 r3 }r4 (hX1MySQL is throwing deadlock errors, what can I do?h j. ubah!jcubah!jdubah!jubjQ)r5 }r6 (hUh}r7 (h]h]h]h]h]uh j" h]r8 jV)r9 }r: (hUh}r; (h]h]h]h]h]uh j5 h]r< j[)r= }r> (hUh}r? (U anchornameU+#celeryd-is-not-doing-anything-just-hangingUrefurihh]h]h]h]h]Uinternaluh j9 h]r@ hX+celeryd is not doing anything, just hangingrA rB }rC (hX+celeryd is not doing anything, just hangingh j= ubah!jcubah!jdubah!jubjQ)rD }rE (hUh}rF (h]h]h]h]h]uh j" h]rG jV)rH }rI (hUh}rJ (h]h]h]h]h]uh jD h]rK j[)rL }rM (hUh}rN (U anchornameU-#why-is-task-delay-apply-celeryd-just-hangingUrefurihh]h]h]h]h]Uinternaluh jH h]rO hX.Why is Task.delay/apply*/celeryd just hanging?rP rQ }rR (hX/Why is Task.delay/apply\*/celeryd just hanging?h jL ubah!jcubah!jdubah!jubjQ)rS }rT (hUh}rU (h]h]h]h]h]uh j" h]rV jV)rW }rX (hUh}rY (h]h]h]h]h]uh jS h]rZ j[)r[ }r\ (hUh}r] (U anchornameU!#why-won-t-celeryd-run-on-freebsdUrefurihh]h]h]h]h]Uinternaluh jW h]r^ hX!Why won't celeryd run on FreeBSD?r_ r` }ra (hX!Why won't celeryd run on FreeBSD?h j[ ubah!jcubah!jdubah!jubjQ)rb }rc (hUh}rd (h]h]h]h]h]uh j" h]re jV)rf }rg (hUh}rh (h]h]h]h]h]uh jb h]ri j[)rj }rk (hUh}rl (U anchornameU3#i-m-having-integrityerror-duplicate-key-errors-whyUrefurihh]h]h]h]h]Uinternaluh jf h]rm (hX I'm having rn ro }rp (hX I'm having h jj ubcdocutils.nodes literal rq )rr }rs (hX!``IntegrityError: Duplicate Key``h}rt (h]h]h]h]h]uh jj h]ru hXIntegrityError: Duplicate Keyrv rw }rx (hUh jr ubah!Uliteralry ubhX errors. Why?rz r{ }r| (hX errors. Why?h jj ubeh!jcubah!jdubah!jubjQ)r} }r~ (hUh}r (h]h]h]h]h]uh j" h]r jV)r }r (hUh}r (h]h]h]h]h]uh j} h]r j[)r }r (hUh}r (U anchornameU#why-aren-t-my-tasks-processedUrefurihh]h]h]h]h]Uinternaluh j h]r hXWhy aren't my tasks processed?r r }r (hXWhy aren't my tasks processed?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j" h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#why-won-t-my-task-runUrefurihh]h]h]h]h]Uinternaluh j h]r hXWhy won't my Task run?r r }r (hXWhy won't my Task run?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j" h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#why-won-t-my-periodic-task-runUrefurihh]h]h]h]h]Uinternaluh j h]r hXWhy won't my Periodic Task run?r r }r (hXWhy won't my Periodic Task run?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j" h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU##how-do-i-discard-all-waiting-tasksUrefurihh]h]h]h]h]Uinternaluh j h]r hX#How do I discard all waiting tasks?r r }r (hX#How do I discard all waiting tasks?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j" h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUG#i-ve-discarded-messages-but-there-are-still-messages-left-in-the-queueUrefurihh]h]h]h]h]Uinternaluh j h]r hXHI've discarded messages, but there are still messages left in the queue?r r }r (hXHI've discarded messages, but there are still messages left in the queue?h j ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#resultsUrefurihh]h]h]h]h]Uinternaluh j h]r hXResultsr r }r (hXResultsh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUE#how-do-i-get-the-result-of-a-task-if-i-have-the-id-that-points-thereUrefurihh]h]h]h]h]Uinternaluh j h]r hXEHow do I get the result of a task if I have the ID that points there?r r }r (hXEHow do I get the result of a task if I have the ID that points there?h j ubah!jcubah!jdubah!jubah!jubeh!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#brokersUrefurihh]h]h]h]h]Uinternaluh j h]r hXBrokersr r }r (hXBrokersh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r (jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#why-is-rabbitmq-crashingUrefurihh]h]h]h]h]Uinternaluh j h]r hXWhy is RabbitMQ crashing?r r }r (hXWhy is RabbitMQ crashing?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU%#can-i-use-celery-with-activemq-stompUrefurihh]h]h]h]h]Uinternaluh j h]r hX%Can I use celery with ActiveMQ/STOMP?r r }r (hX%Can I use celery with ActiveMQ/STOMP?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r! (h]h]h]h]h]uh j h]r" j[)r# }r$ (hUh}r% (U anchornameU9#what-features-are-not-supported-when-using-ghettoq-stompUrefurihh]h]h]h]h]Uinternaluh j h]r& hX9What features are not supported when using ghettoq/STOMP?r' r( }r) (hX9What features are not supported when using ghettoq/STOMP?h j# ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r* }r+ (hUh}r, (h]h]h]h]h]uh j h]r- (jV)r. }r/ (hUh}r0 (h]h]h]h]h]uh j* h]r1 j[)r2 }r3 (hUh}r4 (U anchornameU#tasksUrefurihh]h]h]h]h]Uinternaluh j. h]r5 hXTasksr6 r7 }r8 (hXTasksh j2 ubah!jcubah!jdubjL)r9 }r: (hUh}r; (h]h]h]h]h]uh j* h]r< (jQ)r= }r> (hUh}r? (h]h]h]h]h]uh j9 h]r@ jV)rA }rB (hUh}rC (h]h]h]h]h]uh j= h]rD j[)rE }rF (hUh}rG (U anchornameU8#how-can-i-reuse-the-same-connection-when-applying-tasksUrefurihh]h]h]h]h]Uinternaluh jA h]rH hX8How can I reuse the same connection when applying tasks?rI rJ }rK (hX8How can I reuse the same connection when applying tasks?h jE ubah!jcubah!jdubah!jubjQ)rL }rM (hUh}rN (h]h]h]h]h]uh j9 h]rO jV)rP }rQ (hUh}rR (h]h]h]h]h]uh jL h]rS j[)rT }rU (hUh}rV (U anchornameU#can-i-execute-a-task-by-nameUrefurihh]h]h]h]h]Uinternaluh jP h]rW hXCan I execute a task by name?rX rY }rZ (hXCan I execute a task by name?h jT ubah!jcubah!jdubah!jubjQ)r[ }r\ (hUh}r] (h]h]h]h]h]uh j9 h]r^ jV)r_ }r` (hUh}ra (h]h]h]h]h]uh j[ h]rb j[)rc }rd (hUh}re (U anchornameU.#how-can-i-get-the-task-id-of-the-current-taskUrefurihh]h]h]h]h]Uinternaluh j_ h]rf hX.How can I get the task id of the current task?rg rh }ri (hX.How can I get the task id of the current task?h jc ubah!jcubah!jdubah!jubjQ)rj }rk (hUh}rl (h]h]h]h]h]uh j9 h]rm jV)rn }ro (hUh}rp (h]h]h]h]h]uh jj h]rq j[)rr }rs (hUh}rt (U anchornameU#can-i-specify-a-custom-task-idUrefurihh]h]h]h]h]Uinternaluh jn h]ru hXCan I specify a custom task_id?rv rw }rx (hXCan I specify a custom task_id?h jr ubah!jcubah!jdubah!jubjQ)ry }rz (hUh}r{ (h]h]h]h]h]uh j9 h]r| jV)r} }r~ (hUh}r (h]h]h]h]h]uh jy h]r j[)r }r (hUh}r (U anchornameU#can-i-use-natural-task-idsUrefurihh]h]h]h]h]Uinternaluh j} h]r hXCan I use natural task ids?r r }r (hXCan I use natural task ids?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j9 h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU4#how-can-i-run-a-task-once-another-task-has-finishedUrefurihh]h]h]h]h]Uinternaluh j h]r hX4How can I run a task once another task has finished?r r }r (hX4How can I run a task once another task has finished?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j9 h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU%#can-i-cancel-the-execution-of-a-taskUrefurihh]h]h]h]h]Uinternaluh j h]r hX%Can I cancel the execution of a task?r r }r (hX%Can I cancel the execution of a task?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j9 h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU>#why-aren-t-my-remote-control-commands-received-by-all-workersUrefurihh]h]h]h]h]Uinternaluh j h]r hX>Why aren't my remote control commands received by all workers?r r }r (hX>Why aren't my remote control commands received by all workers?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j9 h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU+#can-i-send-some-tasks-to-only-some-serversUrefurihh]h]h]h]h]Uinternaluh j h]r hX+Can I send some tasks to only some servers?r r }r (hX+Can I send some tasks to only some servers?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j9 h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU8#can-i-change-the-interval-of-a-periodic-task-at-runtimeUrefurihh]h]h]h]h]Uinternaluh j h]r hX8Can I change the interval of a periodic task at runtime?r r }r (hX8Can I change the interval of a periodic task at runtime?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j9 h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU$#does-celery-support-task-prioritiesUrefurihh]h]h]h]h]Uinternaluh j h]r hX$Does celery support task priorities?r r }r (hX$Does celery support task priorities?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j9 h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU #should-i-use-retry-or-acks-lateUrefurihh]h]h]h]h]Uinternaluh j h]r hX Should I use retry or acks_late?r r }r (hX Should I use retry or acks_late?h j ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j9 h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameX#module-celery.task.baseUrefurihh]h]h]h]h]Uinternaluh j h]r hX3Can I schedule tasks to execute at a specific time?r r }r (hX3Can I schedule tasks to execute at a specific time?h j ubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j9 h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r (hUh}r (U anchornameU"#how-do-i-shut-down-celeryd-safelyUrefurihh]h]h]h]h]Uinternaluh jh]r (hXHow do I shut down r r }r(hXHow do I shut down h jubjq )r}r(hX ``celeryd``h}r(h]h]h]h]h]uh jh]rhXcelerydrr}r(hUh jubah!jy ubhX safely?rr}r(hX safely?h jubeh!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j9 h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]r j[)r!}r"(hUh}r#(U anchornameU3#how-do-i-run-celeryd-in-the-background-on-platformUrefurihh]h]h]h]h]Uinternaluh jh]r$hX5How do I run celeryd in the background on [platform]?r%r&}r'(hX5How do I run celeryd in the background on [platform]?h j!ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r(}r)(hUh}r*(h]h]h]h]h]uh j h]r+(jV)r,}r-(hUh}r.(h]h]h]h]h]uh j(h]r/j[)r0}r1(hUh}r2(U anchornameU#windowsUrefurihh]h]h]h]h]Uinternaluh j,h]r3hXWindowsr4r5}r6(hXWindowsh j0ubah!jcubah!jdubjL)r7}r8(hUh}r9(h]h]h]h]h]uh j(h]r:(jQ)r;}r<(hUh}r=(h]h]h]h]h]uh j7h]r>jV)r?}r@(hUh}rA(h]h]h]h]h]uh j;h]rBj[)rC}rD(hUh}rE(U anchornameU,#celeryd-keeps-spawning-processes-at-startupUrefurihh]h]h]h]h]Uinternaluh j?h]rFhX+celeryd keeps spawning processes at startuprGrH}rI(hX+celeryd keeps spawning processes at startuph jCubah!jcubah!jdubah!jubjQ)rJ}rK(hUh}rL(h]h]h]h]h]uh j7h]rMjV)rN}rO(hUh}rP(h]h]h]h]h]uh jJh]rQj[)rR}rS(hUh}rT(U anchornameU*#the-b-beat-option-to-celeryd-doesn-t-workUrefurihh]h]h]h]h]Uinternaluh jNh]rU(hXThe rVrW}rX(hXThe h jRubjq )rY}rZ(hX``-B``h}r[(h]h]h]h]h]uh jRh]r\hX-Br]r^}r_(hUh jYubah!jy ubhX / r`ra}rb(hX / h jRubjq )rc}rd(hX ``--beat``h}re(h]h]h]h]h]uh jRh]rfhX--beatrgrh}ri(hUh jcubah!jy ubhX option to celeryd doesn't work?rjrk}rl(hX option to celeryd doesn't work?h jRubeh!jcubah!jdubah!jubjQ)rm}rn(hUh}ro(h]h]h]h]h]uh j7h]rpjV)rq}rr(hUh}rs(h]h]h]h]h]uh jmh]rtj[)ru}rv(hUh}rw(U anchornameU!#django-celery-cant-find-settingsUrefurihh]h]h]h]h]Uinternaluh jqh]rx(jq )ry}rz(hX``django-celery``h}r{(h]h]h]h]h]uh juh]r|hX django-celeryr}r~}r(hUh jyubah!jy ubhX can’t find settings?rr}r(hX can’t find settings?h juubeh!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubhjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]Uinternaluh jh]rhXHTTP Callback Tasks (Webhooks)rr}r(hhh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#basicsUrefurihh]h]h]h]h]Uinternaluh jh]rhXBasicsrr}r(hXBasicsrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#django-webhook-exampleUrefurihh]h]h]h]h]Uinternaluh jh]rhXDjango webhook examplerr}r(hXDjango webhook examplerh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#ruby-on-rails-webhook-exampleUrefurihh]h]h]h]h]Uinternaluh jh]rhXRuby on Rails webhook examplerr}r(hXRuby on Rails webhook examplerh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#executing-webhook-tasksUrefurihh]h]h]h]h]Uinternaluh jh]rhXExecuting webhook tasksrr}r(hXExecuting webhook tasksrh jubah!jcubah!jdubah!jubeh!jubeh!jubah!jubhjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]Uinternaluh jh]rhX#Executable Jobs - celery.worker.jobrr}r(hhh jubah!jcubah!jdubah!jubah!jubhjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]Uinternaluh jh]rhXBroker Installationrr}r(hhh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r (hUh}r (h]h]h]h]h]uh jh]r j[)r }r (hUh}r(U anchornameU#installing-rabbitmqUrefurihh]h]h]h]h]Uinternaluh jh]rhXInstalling RabbitMQrr}r(hXInstalling RabbitMQh j ubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#setting-up-rabbitmqUrefurihh]h]h]h]h]Uinternaluh jh]rhXSetting up RabbitMQrr }r!(hXSetting up RabbitMQh jubah!jcubah!jdubah!jubjQ)r"}r#(hUh}r$(h]h]h]h]h]uh jh]r%(jV)r&}r'(hUh}r((h]h]h]h]h]uh j"h]r)j[)r*}r+(hUh}r,(U anchornameU#installing-rabbitmq-on-os-xUrefurihh]h]h]h]h]Uinternaluh j&h]r-hXInstalling RabbitMQ on OS Xr.r/}r0(hXInstalling RabbitMQ on OS Xh j*ubah!jcubah!jdubjL)r1}r2(hUh}r3(h]h]h]h]h]uh j"h]r4(jQ)r5}r6(hUh}r7(h]h]h]h]h]uh j1h]r8jV)r9}r:(hUh}r;(h]h]h]h]h]uh j5h]r<j[)r=}r>(hUh}r?(U anchornameU #configuring-the-system-hostnameUrefurihh]h]h]h]h]Uinternaluh j9h]r@hXConfiguring the system hostnamerArB}rC(hXConfiguring the system hostnameh j=ubah!jcubah!jdubah!jubjQ)rD}rE(hUh}rF(h]h]h]h]h]uh j1h]rGjV)rH}rI(hUh}rJ(h]h]h]h]h]uh jDh]rKj[)rL}rM(hUh}rN(U anchornameU&#starting-stopping-the-rabbitmq-serverUrefurihh]h]h]h]h]Uinternaluh jHh]rOhX%Starting/Stopping the RabbitMQ serverrPrQ}rR(hX%Starting/Stopping the RabbitMQ serverh jLubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubhjL)rS}rT(hUh}rU(h]h]h]h]h]uh]rVjQ)rW}rX(hUh}rY(h]h]h]h]h]uh jSh]rZ(jV)r[}r\(hUh}r](h]h]h]h]h]uh jWh]r^j[)r_}r`(hUh}ra(U anchornameUUrefurihh]h]h]h]h]Uinternaluh j[h]rbhXSignals - celery.signalsrcrd}re(hhh j_ubah!jcubah!jdubjL)rf}rg(hUh}rh(h]h]h]h]h]uh jWh]ri(jQ)rj}rk(hUh}rl(h]h]h]h]h]uh jfh]rmjV)rn}ro(hUh}rp(h]h]h]h]h]uh jjh]rqj[)rr}rs(hUh}rt(U anchornameU#basicsUrefurihh]h]h]h]h]Uinternaluh jnh]ruhXBasicsrvrw}rx(hXBasicsryh jrubah!jcubah!jdubah!jubjQ)rz}r{(hUh}r|(h]h]h]h]h]uh jfh]r}(jV)r~}r(hUh}r(h]h]h]h]h]uh jzh]rj[)r}r(hUh}r(U anchornameU#signalsUrefurihh]h]h]h]h]Uinternaluh j~h]rhXSignalsrr}r(hXSignalsrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jzh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #task-signalsUrefurihh]h]h]h]h]Uinternaluh jh]rhX Task Signalsrr}r(hX Task Signalsrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#worker-signalsUrefurihh]h]h]h]h]Uinternaluh jh]rhXWorker Signalsrr}r(hXWorker Signalsrh jubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubhjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]Uinternaluh jh]rhX Workers Guiderr}r(hhh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#starting-the-workerUrefurihh]h]h]h]h]Uinternaluh jh]rhXStarting the workerrr}r(hXStarting the workerrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#stopping-the-workerUrefurihh]h]h]h]h]Uinternaluh jh]rhXStopping the workerrr}r(hXStopping the workerrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#restarting-the-workerUrefurihh]h]h]h]h]Uinternaluh jh]rhXRestarting the workerrr}r(hXRestarting the workerrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #concurrencyUrefurihh]h]h]h]h]Uinternaluh jh]rhX Concurrencyrr}r(hX Concurrencyrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r }r (hUh}r (h]h]h]h]h]uh jh]r j[)r }r(hUh}r(U anchornameU #time-limitsUrefurihh]h]h]h]h]Uinternaluh j h]rhX Time limitsrr}r(hX Time limitsrh j ubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#max-tasks-per-child-settingUrefurihh]h]h]h]h]Uinternaluh jh]r hXMax tasks per child settingr!r"}r#(hXMax tasks per child settingr$h jubah!jcubah!jdubah!jubjQ)r%}r&(hUh}r'(h]h]h]h]h]uh jh]r((jV)r)}r*(hUh}r+(h]h]h]h]h]uh j%h]r,j[)r-}r.(hUh}r/(U anchornameU#remote-controlUrefurihh]h]h]h]h]Uinternaluh j)h]r0hXRemote controlr1r2}r3(hXRemote controlr4h j-ubah!jcubah!jdubjL)r5}r6(hUh}r7(h]h]h]h]h]uh j%h]r8(jQ)r9}r:(hUh}r;(h]h]h]h]h]uh j5h]r<jV)r=}r>(hUh}r?(h]h]h]h]h]uh j9h]r@j[)rA}rB(hUh}rC(U anchornameU#the-broadcast-functionUrefurihh]h]h]h]h]Uinternaluh j=h]rD(hXThe rErF}rG(hXThe rHh jAubjq )rI}rJ(hX broadcast()h}rK(h]h]h]h]h]uh jAh]rLhX broadcast()rMrN}rO(hUh jIubah!jy ubhX function.rPrQ}rR(hX function.rSh jAubeh!jcubah!jdubah!jubjQ)rT}rU(hUh}rV(h]h]h]h]h]uh j5h]rWjV)rX}rY(hUh}rZ(h]h]h]h]h]uh jTh]r[j[)r\}r](hUh}r^(U anchornameU #rate-limitsUrefurihh]h]h]h]h]Uinternaluh jXh]r_hX Rate limitsr`ra}rb(hX Rate limitsrch j\ubah!jcubah!jdubah!jubjQ)rd}re(hUh}rf(h]h]h]h]h]uh j5h]rgjV)rh}ri(hUh}rj(h]h]h]h]h]uh jdh]rkj[)rl}rm(hUh}rn(U anchornameU#remote-shutdownUrefurihh]h]h]h]h]Uinternaluh jhh]rohXRemote shutdownrprq}rr(hXRemote shutdownrsh jlubah!jcubah!jdubah!jubjQ)rt}ru(hUh}rv(h]h]h]h]h]uh j5h]rwjV)rx}ry(hUh}rz(h]h]h]h]h]uh jth]r{j[)r|}r}(hUh}r~(U anchornameU#pingUrefurihh]h]h]h]h]Uinternaluh jxh]rhXPingrr}r(hXPingrh j|ubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j5h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#enable-disable-eventsUrefurihh]h]h]h]h]Uinternaluh jh]rhXEnable/disable eventsrr}r(hXEnable/disable eventsrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j5h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU)#writing-your-own-remote-control-commandsUrefurihh]h]h]h]h]Uinternaluh jh]rhX(Writing your own remote control commandsrr}r(hX(Writing your own remote control commandsrh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#inspecting-workersUrefurihh]h]h]h]h]Uinternaluh jh]rhXInspecting workersrr}r(hXInspecting workersrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#dump-of-registered-tasksUrefurihh]h]h]h]h]Uinternaluh jh]rhXDump of registered tasksrr}r(hXDump of registered tasksrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU"#dump-of-currently-executing-tasksUrefurihh]h]h]h]h]Uinternaluh jh]rhX!Dump of currently executing tasksrr}r(hX!Dump of currently executing tasksrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#dump-of-scheduled-eta-tasksUrefurihh]h]h]h]h]Uinternaluh jh]rhXDump of scheduled (ETA) tasksrr}r(hXDump of scheduled (ETA) tasksrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#dump-of-reserved-tasksUrefurihh]h]h]h]h]Uinternaluh jh]rhXDump of reserved tasksrr}r(hXDump of reserved tasksrh jubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubhjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]Uinternaluh jh]rhX Executing Tasks - celery.executerr }r (hhh jubah!jcubah!jdubah!jubah!jubhjL)r }r (hUh}r (h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh j h]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurihh]h]h]h]h]Uinternaluh jh]rhXChange historyrr}r(hjh jubah!jcubah!jdubjL)r}r(hUh}r (h]h]h]h]h]uh jh]r!(jQ)r"}r#(hUh}r$(h]h]h]h]h]uh jh]r%(jV)r&}r'(hUh}r((h]h]h]h]h]uh j"h]r)j[)r*}r+(hUh}r,(U anchornameU#id1Urefurihh]h]h]h]h]Uinternaluh j&h]r-hX2.0.3r.r/}r0(hX2.0.3r1h j*ubah!jcubah!jdubjL)r2}r3(hUh}r4(h]h]h]h]h]uh j"h]r5(jQ)r6}r7(hUh}r8(h]h]h]h]h]uh j2h]r9jV)r:}r;(hUh}r<(h]h]h]h]h]uh j6h]r=j[)r>}r?(hUh}r@(U anchornameU#fixesUrefurihh]h]h]h]h]Uinternaluh j:h]rAhXFixesrBrC}rD(hXFixesrEh j>ubah!jcubah!jdubah!jubjQ)rF}rG(hUh}rH(h]h]h]h]h]uh j2h]rIjV)rJ}rK(hUh}rL(h]h]h]h]h]uh jFh]rMj[)rN}rO(hUh}rP(U anchornameU#documentationUrefurihh]h]h]h]h]Uinternaluh jJh]rQhX DocumentationrRrS}rT(hX DocumentationrUh jNubah!jcubah!jdubah!jubeh!jubeh!jubjQ)rV}rW(hUh}rX(h]h]h]h]h]uh jh]rYjV)rZ}r[(hUh}r\(h]h]h]h]h]uh jVh]r]j[)r^}r_(hUh}r`(U anchornameU#id2Urefurihh]h]h]h]h]Uinternaluh jZh]rahX2.0.2rbrc}rd(hX2.0.2reh j^ubah!jcubah!jdubah!jubjQ)rf}rg(hUh}rh(h]h]h]h]h]uh jh]rijV)rj}rk(hUh}rl(h]h]h]h]h]uh jfh]rmj[)rn}ro(hUh}rp(U anchornameU#id3Urefurihh]h]h]h]h]Uinternaluh jjh]rqhX2.0.1rrrs}rt(hX2.0.1ruh jnubah!jcubah!jdubah!jubjQ)rv}rw(hUh}rx(h]h]h]h]h]uh jh]ry(jV)rz}r{(hUh}r|(h]h]h]h]h]uh jvh]r}j[)r~}r(hUh}r(U anchornameU#id4Urefurihh]h]h]h]h]Uinternaluh jzh]rhX2.0.0rr}r(hX2.0.0rh j~ubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jvh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #forewordUrefurihh]h]h]h]h]Uinternaluh jh]rhXForewordrr}r(hXForewordrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#upgrading-for-django-usersUrefurihh]h]h]h]h]Uinternaluh jh]rhXUpgrading for Django-usersrr}r(hXUpgrading for Django-usersrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#upgrading-for-othersUrefurihh]h]h]h]h]Uinternaluh jh]rhXUpgrading for othersrr}r(hXUpgrading for othersrh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#database-result-backendUrefurihh]h]h]h]h]Uinternaluh jh]rhXDatabase result backendrr}r(hXDatabase result backendrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#cache-result-backendUrefurihh]h]h]h]h]Uinternaluh jh]rhXCache result backendrr}r(hXCache result backendrh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#backward-incompatible-changesUrefurihh]h]h]h]h]Uinternaluh jh]rhXBackward incompatible changesrr}r(hXBackward incompatible changesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#newsUrefurihh]h]h]h]h]Uinternaluh jh]rhXNewsrr}r(hXNewsrh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id6Urefurihh]h]h]h]h]Uinternaluh jh]r hX1.0.6r r }r (hX1.0.6r h jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id7Urefurihh]h]h]h]h]Uinternaluh jh]rhX1.0.5rr}r(hX1.0.5rh jubah!jcubah!jdubjL)r}r(hUh}r (h]h]h]h]h]uh jh]r!(jQ)r"}r#(hUh}r$(h]h]h]h]h]uh jh]r%jV)r&}r'(hUh}r((h]h]h]h]h]uh j"h]r)j[)r*}r+(hUh}r,(U anchornameU #criticalUrefurihh]h]h]h]h]Uinternaluh j&h]r-hXCriticalr.r/}r0(hXCriticalr1h j*ubah!jcubah!jdubah!jubjQ)r2}r3(hUh}r4(h]h]h]h]h]uh jh]r5jV)r6}r7(hUh}r8(h]h]h]h]h]uh j2h]r9j[)r:}r;(hUh}r<(U anchornameU#changesUrefurihh]h]h]h]h]Uinternaluh j6h]r=hXChangesr>r?}r@(hXChangesrAh j:ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)rB}rC(hUh}rD(h]h]h]h]h]uh jh]rEjV)rF}rG(hUh}rH(h]h]h]h]h]uh jBh]rIj[)rJ}rK(hUh}rL(U anchornameU#id8Urefurihh]h]h]h]h]Uinternaluh jFh]rMhX1.0.4rNrO}rP(hX1.0.4rQh jJubah!jcubah!jdubah!jubjQ)rR}rS(hUh}rT(h]h]h]h]h]uh jh]rU(jV)rV}rW(hUh}rX(h]h]h]h]h]uh jRh]rYj[)rZ}r[(hUh}r\(U anchornameU#id9Urefurihh]h]h]h]h]Uinternaluh jVh]r]hX1.0.3r^r_}r`(hX1.0.3rah jZubah!jcubah!jdubjL)rb}rc(hUh}rd(h]h]h]h]h]uh jRh]re(jQ)rf}rg(hUh}rh(h]h]h]h]h]uh jbh]rijV)rj}rk(hUh}rl(h]h]h]h]h]uh jfh]rmj[)rn}ro(hUh}rp(U anchornameU#important-notesUrefurihh]h]h]h]h]Uinternaluh jjh]rqhXImportant notesrrrs}rt(hXImportant notesruh jnubah!jcubah!jdubah!jubjQ)rv}rw(hUh}rx(h]h]h]h]h]uh jbh]ryjV)rz}r{(hUh}r|(h]h]h]h]h]uh jvh]r}j[)r~}r(hUh}r(U anchornameU#id10Urefurihh]h]h]h]h]Uinternaluh jzh]rhXNewsrr}r(hXNewsrh j~ubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jbh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#remote-control-commandsUrefurihh]h]h]h]h]Uinternaluh jh]rhXRemote control commandsrr}r(hXRemote control commandsrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jbh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id11Urefurihh]h]h]h]h]Uinternaluh jh]rhXFixesrr}r(hXFixesrh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id12Urefurihh]h]h]h]h]Uinternaluh jh]rhX1.0.2rr}r(hX1.0.2rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id13Urefurihh]h]h]h]h]Uinternaluh jh]rhX1.0.1rr}r(hX1.0.1rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id14Urefurihh]h]h]h]h]Uinternaluh jh]rhX1.0.0rr}r(hX1.0.0rh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id15Urefurihh]h]h]h]h]Uinternaluh jh]rhXBackward incompatible changesrr}r(hXBackward incompatible changesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #deprecationsUrefurihh]h]h]h]h]Uinternaluh jh]rhX Deprecationsrr}r(hX Deprecationsrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id16Urefurihh]h]h]h]h]Uinternaluh jh]rhXNewsrr}r(hXNewsr h jubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh jh]r jV)r}r(hUh}r(h]h]h]h]h]uh j h]rj[)r}r(hUh}r(U anchornameU#id17Urefurihh]h]h]h]h]Uinternaluh jh]rhXChangesrr}r(hXChangesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r (h]h]h]h]h]uh jh]r!j[)r"}r#(hUh}r$(U anchornameU#bugsUrefurihh]h]h]h]h]Uinternaluh jh]r%hXBugsr&r'}r((hXBugsr)h j"ubah!jcubah!jdubah!jubjQ)r*}r+(hUh}r,(h]h]h]h]h]uh jh]r-jV)r.}r/(hUh}r0(h]h]h]h]h]uh j*h]r1j[)r2}r3(hUh}r4(U anchornameU#id18Urefurihh]h]h]h]h]Uinternaluh j.h]r5hX Documentationr6r7}r8(hX Documentationr9h j2ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r:}r;(hUh}r<(h]h]h]h]h]uh jh]r=jV)r>}r?(hUh}r@(h]h]h]h]h]uh j:h]rAj[)rB}rC(hUh}rD(U anchornameU#id19Urefurihh]h]h]h]h]Uinternaluh j>h]rEhX0.8.4rFrG}rH(hX0.8.4rIh jBubah!jcubah!jdubah!jubjQ)rJ}rK(hUh}rL(h]h]h]h]h]uh jh]rMjV)rN}rO(hUh}rP(h]h]h]h]h]uh jJh]rQj[)rR}rS(hUh}rT(U anchornameU#id20Urefurihh]h]h]h]h]Uinternaluh jNh]rUhX0.8.3rVrW}rX(hX0.8.3rYh jRubah!jcubah!jdubah!jubjQ)rZ}r[(hUh}r\(h]h]h]h]h]uh jh]r]jV)r^}r_(hUh}r`(h]h]h]h]h]uh jZh]raj[)rb}rc(hUh}rd(U anchornameU#id21Urefurihh]h]h]h]h]Uinternaluh j^h]rehX0.8.2rfrg}rh(hX0.8.2rih jbubah!jcubah!jdubah!jubjQ)rj}rk(hUh}rl(h]h]h]h]h]uh jh]rm(jV)rn}ro(hUh}rp(h]h]h]h]h]uh jjh]rqj[)rr}rs(hUh}rt(U anchornameU#id22Urefurihh]h]h]h]h]Uinternaluh jnh]ruhX0.8.1rvrw}rx(hX0.8.1ryh jrubah!jcubah!jdubjL)rz}r{(hUh}r|(h]h]h]h]h]uh jjh]r}(jQ)r~}r(hUh}r(h]h]h]h]h]uh jzh]rjV)r}r(hUh}r(h]h]h]h]h]uh j~h]rj[)r}r(hUh}r(U anchornameU#very-important-noteUrefurihh]h]h]h]h]Uinternaluh jh]rhXVery important noterr}r(hXVery important noterh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jzh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#important-changesUrefurihh]h]h]h]h]Uinternaluh jh]rhXImportant changesrr}r(hXImportant changesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jzh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id23Urefurihh]h]h]h]h]Uinternaluh jh]rhXChangesrr}r(hXChangesrh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id24Urefurihh]h]h]h]h]Uinternaluh jh]rhX0.8.0rr}r(hX0.8.0rh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id25Urefurihh]h]h]h]h]Uinternaluh jh]rhXBackward incompatible changesrr}r(hXBackward incompatible changesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id26Urefurihh]h]h]h]h]Uinternaluh jh]rhXImportant changesrr}r(hXImportant changesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id27Urefurihh]h]h]h]h]Uinternaluh jh]rhXNewsrr}r(hXNewsrh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id28Urefurihh]h]h]h]h]Uinternaluh jh]rhX0.6.0rr}r(hX0.6.0rh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]r jV)r }r (hUh}r (h]h]h]h]h]uh jh]r j[)r}r(hUh}r(U anchornameU#id29Urefurihh]h]h]h]h]Uinternaluh j h]rhXImportant changesrr}r(hXImportant changesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r (U anchornameU#id30Urefurihh]h]h]h]h]Uinternaluh jh]r!hXNewsr"r#}r$(hXNewsr%h jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r&}r'(hUh}r((h]h]h]h]h]uh jh]r)jV)r*}r+(hUh}r,(h]h]h]h]h]uh j&h]r-j[)r.}r/(hUh}r0(U anchornameU#id31Urefurihh]h]h]h]h]Uinternaluh j*h]r1hX0.4.1r2r3}r4(hX0.4.1r5h j.ubah!jcubah!jdubah!jubjQ)r6}r7(hUh}r8(h]h]h]h]h]uh jh]r9jV)r:}r;(hUh}r<(h]h]h]h]h]uh j6h]r=j[)r>}r?(hUh}r@(U anchornameU#id32Urefurihh]h]h]h]h]Uinternaluh j:h]rAhX0.4.0rBrC}rD(hX0.4.0rEh j>ubah!jcubah!jdubah!jubjQ)rF}rG(hUh}rH(h]h]h]h]h]uh jh]rIjV)rJ}rK(hUh}rL(h]h]h]h]h]uh jFh]rMj[)rN}rO(hUh}rP(U anchornameU#id33Urefurihh]h]h]h]h]Uinternaluh jJh]rQhX0.3.20rRrS}rT(hX0.3.20rUh jNubah!jcubah!jdubah!jubjQ)rV}rW(hUh}rX(h]h]h]h]h]uh jh]rYjV)rZ}r[(hUh}r\(h]h]h]h]h]uh jVh]r]j[)r^}r_(hUh}r`(U anchornameU#id34Urefurihh]h]h]h]h]Uinternaluh jZh]rahX0.3.7rbrc}rd(hX0.3.7reh j^ubah!jcubah!jdubah!jubjQ)rf}rg(hUh}rh(h]h]h]h]h]uh jh]rijV)rj}rk(hUh}rl(h]h]h]h]h]uh jfh]rmj[)rn}ro(hUh}rp(U anchornameU#id35Urefurihh]h]h]h]h]Uinternaluh jjh]rqhX0.3.3rrrs}rt(hX0.3.3ruh jnubah!jcubah!jdubah!jubjQ)rv}rw(hUh}rx(h]h]h]h]h]uh jh]ryjV)rz}r{(hUh}r|(h]h]h]h]h]uh jvh]r}j[)r~}r(hUh}r(U anchornameU#id36Urefurihh]h]h]h]h]Uinternaluh jzh]rhX0.3.2rr}r(hX0.3.2rh j~ubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id37Urefurihh]h]h]h]h]Uinternaluh jh]rhX0.3.1rr}r(hX0.3.1rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id38Urefurihh]h]h]h]h]Uinternaluh jh]rhX0.3.0rr}r(hX0.3.0rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id39Urefurihh]h]h]h]h]Uinternaluh jh]rhX0.2.0rr}r(hX0.2.0rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#pre3Urefurihh]h]h]h]h]Uinternaluh jh]rhX 0.2.0-pre3rr}r(hX 0.2.0-pre3rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#pre2Urefurihh]h]h]h]h]Uinternaluh jh]rhX 0.2.0-pre2rr}r(hX 0.2.0-pre2rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#pre1Urefurihh]h]h]h]h]Uinternaluh jh]rhX 0.2.0-pre1rr}r(hX 0.2.0-pre1rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id40Urefurihh]h]h]h]h]Uinternaluh jh]rhX0.1.15rr}r(hX0.1.15rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id41Urefurihh]h]h]h]h]Uinternaluh jh]rhX0.1.14rr}r(hX0.1.14rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r jV)r }r (hUh}r (h]h]h]h]h]uh jh]r j[)r}r(hUh}r(U anchornameU#id42Urefurihh]h]h]h]h]Uinternaluh j h]rhX0.1.13rr}r(hX0.1.13rh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r (U anchornameU#id43Urefurihh]h]h]h]h]Uinternaluh jh]r!hX0.1.12r"r#}r$(hX0.1.12r%h jubah!jcubah!jdubah!jubjQ)r&}r'(hUh}r((h]h]h]h]h]uh jh]r)jV)r*}r+(hUh}r,(h]h]h]h]h]uh j&h]r-j[)r.}r/(hUh}r0(U anchornameU#id44Urefurihh]h]h]h]h]Uinternaluh j*h]r1hX0.1.11r2r3}r4(hX0.1.11r5h j.ubah!jcubah!jdubah!jubjQ)r6}r7(hUh}r8(h]h]h]h]h]uh jh]r9jV)r:}r;(hUh}r<(h]h]h]h]h]uh j6h]r=j[)r>}r?(hUh}r@(U anchornameU#id45Urefurihh]h]h]h]h]Uinternaluh j:h]rAhX0.1.10rBrC}rD(hX0.1.10rEh j>ubah!jcubah!jdubah!jubjQ)rF}rG(hUh}rH(h]h]h]h]h]uh jh]rIjV)rJ}rK(hUh}rL(h]h]h]h]h]uh jFh]rMj[)rN}rO(hUh}rP(U anchornameU#id46Urefurihh]h]h]h]h]Uinternaluh jJh]rQhX0.1.8rRrS}rT(hX0.1.8rUh jNubah!jcubah!jdubah!jubjQ)rV}rW(hUh}rX(h]h]h]h]h]uh jh]rYjV)rZ}r[(hUh}r\(h]h]h]h]h]uh jVh]r]j[)r^}r_(hUh}r`(U anchornameU#id47Urefurihh]h]h]h]h]Uinternaluh jZh]rahX0.1.7rbrc}rd(hX0.1.7reh j^ubah!jcubah!jdubah!jubjQ)rf}rg(hUh}rh(h]h]h]h]h]uh jh]rijV)rj}rk(hUh}rl(h]h]h]h]h]uh jfh]rmj[)rn}ro(hUh}rp(U anchornameU#id48Urefurihh]h]h]h]h]Uinternaluh jjh]rqhX0.1.6rrrs}rt(hX0.1.6ruh jnubah!jcubah!jdubah!jubjQ)rv}rw(hUh}rx(h]h]h]h]h]uh jh]ryjV)rz}r{(hUh}r|(h]h]h]h]h]uh jvh]r}j[)r~}r(hUh}r(U anchornameU#id49Urefurihh]h]h]h]h]Uinternaluh jzh]rhX0.1.0rr}r(hX0.1.0rh j~ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]rhXTask Result - celery.resultrr}r(hj h jubah!jcubah!jdubah!jubah!jubj jL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurij h]h]h]h]h]Uinternaluh jh]rhX:Tutorial: Creating a click counter using carrot and celeryrr}r(hjh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #introductionUrefurij h]h]h]h]h]Uinternaluh jh]rhX Introductionrr}r(hX Introductionrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #the-modelUrefurij h]h]h]h]h]Uinternaluh jh]rhX The modelrr}r(hX The modelrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU(#using-carrot-to-send-clicks-as-messagesUrefurij h]h]h]h]h]Uinternaluh jh]rhX'Using carrot to send clicks as messagesrr}r(hX'Using carrot to send clicks as messagesrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#view-and-urlsUrefurij h]h]h]h]h]Uinternaluh jh]rhX View and URLsrr}r(hX View and URLsrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#creating-the-periodic-taskUrefurij h]h]h]h]h]Uinternaluh jh]rhXCreating the periodic taskrr}r(hXCreating the periodic taskrh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r (hUh}r (U anchornameU #finishingUrefurij h]h]h]h]h]Uinternaluh jh]r hX Finishingr r }r(hX Finishingrh jubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]rhXConfiguration - celery.confr r!}r"(hjh jubah!jcubah!jdubjL)r#}r$(hUh}r%(h]h]h]h]h]uh jh]r&(jQ)r'}r((hUh}r)(h]h]h]h]h]uh j#h]r*jV)r+}r,(hUh}r-(h]h]h]h]h]uh j'h]r.j[)r/}r0(hUh}r1(U anchornameU#queuesUrefurijh]h]h]h]h]Uinternaluh j+h]r2hXQueuesr3r4}r5(hXQueuesh j/ubah!jcubah!jdubah!jubjQ)r6}r7(hUh}r8(h]h]h]h]h]uh j#h]r9jV)r:}r;(hUh}r<(h]h]h]h]h]uh j6h]r=j[)r>}r?(hUh}r@(U anchornameU#sending-e-mailsUrefurijh]h]h]h]h]Uinternaluh j:h]rAhXSending E-MailsrBrC}rD(hXSending E-Mailsh j>ubah!jcubah!jdubah!jubjQ)rE}rF(hUh}rG(h]h]h]h]h]uh j#h]rHjV)rI}rJ(hUh}rK(h]h]h]h]h]uh jEh]rLj[)rM}rN(hUh}rO(U anchornameU #executionUrefurijh]h]h]h]h]Uinternaluh jIh]rPhX ExecutionrQrR}rS(hX Executionh jMubah!jcubah!jdubah!jubjQ)rT}rU(hUh}rV(h]h]h]h]h]uh j#h]rWjV)rX}rY(hUh}rZ(h]h]h]h]h]uh jTh]r[j[)r\}r](hUh}r^(U anchornameU#brokerUrefurijh]h]h]h]h]Uinternaluh jXh]r_hXBrokerr`ra}rb(hXBrokerh j\ubah!jcubah!jdubah!jubjQ)rc}rd(hUh}re(h]h]h]h]h]uh j#h]rfjV)rg}rh(hUh}ri(h]h]h]h]h]uh jch]rjj[)rk}rl(hUh}rm(U anchornameU #celerybeatUrefurijh]h]h]h]h]Uinternaluh jgh]rnhX Celerybeatrorp}rq(hX Celerybeath jkubah!jcubah!jdubah!jubjQ)rr}rs(hUh}rt(h]h]h]h]h]uh j#h]rujV)rv}rw(hUh}rx(h]h]h]h]h]uh jrh]ryj[)rz}r{(hUh}r|(U anchornameU #celerymonUrefurijh]h]h]h]h]Uinternaluh jvh]r}hX Celerymonr~r}r(hX Celerymonh jzubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j#h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celerydUrefurijh]h]h]h]h]Uinternaluh jh]rhXCelerydrr}r(hXCelerydh jubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]rhX2Remote Management of Workers - celery.task.controlrr}r(hj'h jubah!jcubah!jdubah!jubah!jubj(jL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurij(h]h]h]h]h]Uinternaluh jh]rhXBackends - celery.backendsrr}r(hj0h jubah!jcubah!jdubah!jubah!jubj1jL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurij1h]h]h]h]h]Uinternaluh jh]rhX!Defining Tasks - celery.task.baserr}r(hj9h jubah!jcubah!jdubah!jubah!jubj:jL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurij:h]h]h]h]h]Uinternaluh jh]rhX&Datastructures - celery.datastructuresrr}r(hjBh jubah!jcubah!jdubah!jubah!jubjCjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijCh]h]h]h]h]Uinternaluh jh]rhXCelery - Distributed Task Queuerr}r(hjKh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(ju)r}r(hUh}r(UnumberedKUparentjCU titlesonlyUglobh]h]h]h]h]Uentries]r(NjrNjrNjrNjrNjrNjrNjrNjrNjrNjreUhiddenUmaxdepthKU includefiles]r(jjjjjjjjjjeU includehiddenuh jh]h!j}ubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]r j[)r }r (hUh}r (U anchornameU#indices-and-tablesUrefurijCh]h]h]h]h]Uinternaluh jh]r hXIndices and tablesrr}r(hXIndices and tablesh j ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjLjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijLh]h]h]h]h]Uinternaluh jh]r hXFirst steps with Celeryr!r"}r#(hjTh jubah!jcubah!jdubjL)r$}r%(hUh}r&(h]h]h]h]h]uh jh]r'(jQ)r(}r)(hUh}r*(h]h]h]h]h]uh j$h]r+jV)r,}r-(hUh}r.(h]h]h]h]h]uh j(h]r/j[)r0}r1(hUh}r2(U anchornameU#creating-a-simple-taskUrefurijLh]h]h]h]h]Uinternaluh j,h]r3hXCreating a simple taskr4r5}r6(hXCreating a simple taskh j0ubah!jcubah!jdubah!jubjQ)r7}r8(hUh}r9(h]h]h]h]h]uh j$h]r:jV)r;}r<(hUh}r=(h]h]h]h]h]uh j7h]r>j[)r?}r@(hUh}rA(U anchornameU#configurationUrefurijLh]h]h]h]h]Uinternaluh j;h]rBhX ConfigurationrCrD}rE(hX Configurationh j?ubah!jcubah!jdubah!jubjQ)rF}rG(hUh}rH(h]h]h]h]h]uh j$h]rIjV)rJ}rK(hUh}rL(h]h]h]h]h]uh jFh]rMj[)rN}rO(hUh}rP(U anchornameU!#running-the-celery-worker-serverUrefurijLh]h]h]h]h]Uinternaluh jJh]rQhX Running the celery worker serverrRrS}rT(hX Running the celery worker serverh jNubah!jcubah!jdubah!jubjQ)rU}rV(hUh}rW(h]h]h]h]h]uh j$h]rXjV)rY}rZ(hUh}r[(h]h]h]h]h]uh jUh]r\j[)r]}r^(hUh}r_(U anchornameU#executing-the-taskUrefurijLh]h]h]h]h]Uinternaluh jYh]r`hXExecuting the taskrarb}rc(hXExecuting the taskh j]ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjUjL)rd}re(hUh}rf(h]h]h]h]h]uh]rgjQ)rh}ri(hUh}rj(h]h]h]h]h]uh jdh]rkjV)rl}rm(hUh}rn(h]h]h]h]h]uh jhh]roj[)rp}rq(hUh}rr(U anchornameUUrefurijUh]h]h]h]h]Uinternaluh jlh]rshXExceptions - celery.exceptionsrtru}rv(hj]h jpubah!jcubah!jdubah!jubah!jubj^jL)rw}rx(hUh}ry(h]h]h]h]h]uh]rzjQ)r{}r|(hUh}r}(h]h]h]h]h]uh jwh]r~jV)r}r(hUh}r(h]h]h]h]h]uh j{h]rj[)r}r(hUh}r(U anchornameUUrefurij^h]h]h]h]h]Uinternaluh jh]rhXMessaging - celery.messagingrr}r(hjfh jubah!jcubah!jdubah!jubah!jubjgjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijgh]h]h]h]h]Uinternaluh jh]rhX Tutorialsrr}r(hjoh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rju)r}r(hUh}r(UnumberedKUparentjgU titlesonlyUglobh]h]h]h]h]Uentries]r(NjrNjrNjreUhiddenUmaxdepthKU includefiles]r(jjjeU includehiddenuh jh]h!j}ubah!jubeh!jubah!jubjpjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijph]h]h]h]h]Uinternaluh jh]rhX Module Indexrr}r(hjxh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#workerUrefurijph]h]h]h]h]Uinternaluh jh]rhXWorkerrr}r(hXWorkerh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-workerUrefurijph]h]h]h]h]Uinternaluh jh]rhX celery.workerrr}r(hX celery.workerh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-worker-jobUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.worker.jobrr}r(hXcelery.worker.jobh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-worker-poolUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.worker.poolrr}r(hXcelery.worker.poolh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r (hUh}r (U anchornameU#celery-worker-listenerUrefurijph]h]h]h]h]Uinternaluh jh]r hXcelery.worker.listenerr r }r(hXcelery.worker.listenerh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-worker-controllersUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.worker.controllersrr}r(hXcelery.worker.controllersh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r (h]h]h]h]h]uh jh]r!jV)r"}r#(hUh}r$(h]h]h]h]h]uh jh]r%j[)r&}r'(hUh}r((U anchornameU#celery-worker-schedulerUrefurijph]h]h]h]h]Uinternaluh j"h]r)hXcelery.worker.schedulerr*r+}r,(hXcelery.worker.schedulerh j&ubah!jcubah!jdubah!jubjQ)r-}r.(hUh}r/(h]h]h]h]h]uh jh]r0jV)r1}r2(hUh}r3(h]h]h]h]h]uh j-h]r4j[)r5}r6(hUh}r7(U anchornameU#celery-worker-bucketsUrefurijph]h]h]h]h]Uinternaluh j1h]r8hXcelery.worker.bucketsr9r:}r;(hXcelery.worker.bucketsh j5ubah!jcubah!jdubah!jubjQ)r<}r=(hUh}r>(h]h]h]h]h]uh jh]r?jV)r@}rA(hUh}rB(h]h]h]h]h]uh j<h]rCj[)rD}rE(hUh}rF(U anchornameU#celery-worker-heartbeatUrefurijph]h]h]h]h]Uinternaluh j@h]rGhXcelery.worker.heartbeatrHrI}rJ(hXcelery.worker.heartbeath jDubah!jcubah!jdubah!jubjQ)rK}rL(hUh}rM(h]h]h]h]h]uh jh]rNjV)rO}rP(hUh}rQ(h]h]h]h]h]uh jKh]rRj[)rS}rT(hUh}rU(U anchornameU#celery-worker-revokeUrefurijph]h]h]h]h]Uinternaluh jOh]rVhXcelery.worker.revokerWrX}rY(hXcelery.worker.revokeh jSubah!jcubah!jdubah!jubjQ)rZ}r[(hUh}r\(h]h]h]h]h]uh jh]r]jV)r^}r_(hUh}r`(h]h]h]h]h]uh jZh]raj[)rb}rc(hUh}rd(U anchornameU#celery-worker-controlUrefurijph]h]h]h]h]Uinternaluh j^h]rehXcelery.worker.controlrfrg}rh(hXcelery.worker.controlh jbubah!jcubah!jdubah!jubeh!jubeh!jubjQ)ri}rj(hUh}rk(h]h]h]h]h]uh jh]rl(jV)rm}rn(hUh}ro(h]h]h]h]h]uh jih]rpj[)rq}rr(hUh}rs(U anchornameU#tasksUrefurijph]h]h]h]h]Uinternaluh jmh]rthXTasksrurv}rw(hXTasksh jqubah!jcubah!jdubjL)rx}ry(hUh}rz(h]h]h]h]h]uh jih]r{(jQ)r|}r}(hUh}r~(h]h]h]h]h]uh jxh]rjV)r}r(hUh}r(h]h]h]h]h]uh j|h]rj[)r}r(hUh}r(U anchornameU#celery-decoratorsUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.decoratorsrr}r(hXcelery.decoratorsh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jxh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-registryUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.registryrr}r(hXcelery.registryh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jxh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #celery-taskUrefurijph]h]h]h]h]Uinternaluh jh]rhX celery.taskrr}r(hX celery.taskh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jxh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-task-baseUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.task.baserr}r(hXcelery.task.baseh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jxh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-task-httpUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.task.httprr}r(hXcelery.task.httph jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jxh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-task-controlUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.task.controlrr}r(hXcelery.task.controlh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jxh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-task-builtinsUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.task.builtinsrr}r(hXcelery.task.builtinsh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #executionUrefurijph]h]h]h]h]Uinternaluh jh]rhX Executionrr}r(hX Executionh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-executeUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.executerr}r(hXcelery.executeh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r (h]h]h]h]h]uh jh]r jV)r }r (hUh}r (h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-execute-traceUrefurijph]h]h]h]h]Uinternaluh j h]rhXcelery.execute.tracerr}r(hXcelery.execute.traceh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r (U anchornameU#celery-resultUrefurijph]h]h]h]h]Uinternaluh jh]r!hX celery.resultr"r#}r$(hX celery.resulth jubah!jcubah!jdubah!jubjQ)r%}r&(hUh}r'(h]h]h]h]h]uh jh]r(jV)r)}r*(hUh}r+(h]h]h]h]h]uh j%h]r,j[)r-}r.(hUh}r/(U anchornameU#celery-statesUrefurijph]h]h]h]h]Uinternaluh j)h]r0hX celery.statesr1r2}r3(hX celery.statesh j-ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r4}r5(hUh}r6(h]h]h]h]h]uh jh]r7(jV)r8}r9(hUh}r:(h]h]h]h]h]uh j4h]r;j[)r<}r=(hUh}r>(U anchornameU #messagingUrefurijph]h]h]h]h]Uinternaluh j8h]r?hX Messagingr@rA}rB(hX Messagingh j<ubah!jcubah!jdubjL)rC}rD(hUh}rE(h]h]h]h]h]uh j4h]rFjQ)rG}rH(hUh}rI(h]h]h]h]h]uh jCh]rJjV)rK}rL(hUh}rM(h]h]h]h]h]uh jGh]rNj[)rO}rP(hUh}rQ(U anchornameU#celery-messagingUrefurijph]h]h]h]h]Uinternaluh jKh]rRhXcelery.messagingrSrT}rU(hXcelery.messagingh jOubah!jcubah!jdubah!jubah!jubeh!jubjQ)rV}rW(hUh}rX(h]h]h]h]h]uh jh]rY(jV)rZ}r[(hUh}r\(h]h]h]h]h]uh jVh]r]j[)r^}r_(hUh}r`(U anchornameU#result-backendsUrefurijph]h]h]h]h]Uinternaluh jZh]rahXResult backendsrbrc}rd(hXResult backendsh j^ubah!jcubah!jdubjL)re}rf(hUh}rg(h]h]h]h]h]uh jVh]rh(jQ)ri}rj(hUh}rk(h]h]h]h]h]uh jeh]rljV)rm}rn(hUh}ro(h]h]h]h]h]uh jih]rpj[)rq}rr(hUh}rs(U anchornameU#celery-backendsUrefurijph]h]h]h]h]Uinternaluh jmh]rthXcelery.backendsrurv}rw(hXcelery.backendsh jqubah!jcubah!jdubah!jubjQ)rx}ry(hUh}rz(h]h]h]h]h]uh jeh]r{jV)r|}r}(hUh}r~(h]h]h]h]h]uh jxh]rj[)r}r(hUh}r(U anchornameU#celery-backends-baseUrefurijph]h]h]h]h]Uinternaluh j|h]rhXcelery.backends.baserr}r(hXcelery.backends.baseh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jeh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-backends-amqpUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.backends.amqprr}r(hXcelery.backends.amqph jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jeh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-backends-databaseUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.backends.databaserr}r(hXcelery.backends.databaseh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#loadersUrefurijph]h]h]h]h]Uinternaluh jh]rhXLoadersrr}r(hXLoadersh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-loadersUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.loadersrr}r(hXcelery.loadersh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU(#celery-loaders-base-loader-base-classesUrefurijph]h]h]h]h]Uinternaluh jh]rhX)celery.loaders.base - Loader base classesrr}r(hX)celery.loaders.base - Loader base classesh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU*#celery-loaders-default-the-default-loaderUrefurijph]h]h]h]h]Uinternaluh jh]rhX+celery.loaders.default - The default loaderrr}r(hX+celery.loaders.default - The default loaderh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #celerybeatUrefurijph]h]h]h]h]Uinternaluh jh]rhX CeleryBeatrr}r(hX CeleryBeath jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #celery-beatUrefurijph]h]h]h]h]Uinternaluh jh]rhX celery.beatrr}r(hX celery.beath jubah!jcubah!jdubah!jubah!jubeh!jubjQ)r}r(hUh}r (h]h]h]h]h]uh jh]r (jV)r }r (hUh}r (h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#eventsUrefurijph]h]h]h]h]Uinternaluh j h]rhXEventsrr}r(hXEventsh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r (h]h]h]h]h]uh jh]r!j[)r"}r#(hUh}r$(U anchornameU#celery-eventsUrefurijph]h]h]h]h]Uinternaluh jh]r%hX celery.eventsr&r'}r((hX celery.eventsh j"ubah!jcubah!jdubah!jubah!jubeh!jubjQ)r)}r*(hUh}r+(h]h]h]h]h]uh jh]r,(jV)r-}r.(hUh}r/(h]h]h]h]h]uh j)h]r0j[)r1}r2(hUh}r3(U anchornameU#loggingUrefurijph]h]h]h]h]Uinternaluh j-h]r4hXLoggingr5r6}r7(hXLoggingh j1ubah!jcubah!jdubjL)r8}r9(hUh}r:(h]h]h]h]h]uh j)h]r;(jQ)r<}r=(hUh}r>(h]h]h]h]h]uh j8h]r?jV)r@}rA(hUh}rB(h]h]h]h]h]uh j<h]rCj[)rD}rE(hUh}rF(U anchornameU #celery-logUrefurijph]h]h]h]h]Uinternaluh j@h]rGhX celery.logrHrI}rJ(hX celery.logh jDubah!jcubah!jdubah!jubjQ)rK}rL(hUh}rM(h]h]h]h]h]uh j8h]rNjV)rO}rP(hUh}rQ(h]h]h]h]h]uh jKh]rRj[)rS}rT(hUh}rU(U anchornameU#celery-utils-patchUrefurijph]h]h]h]h]Uinternaluh jOh]rVhXcelery.utils.patchrWrX}rY(hXcelery.utils.patchh jSubah!jcubah!jdubah!jubeh!jubeh!jubjQ)rZ}r[(hUh}r\(h]h]h]h]h]uh jh]r](jV)r^}r_(hUh}r`(h]h]h]h]h]uh jZh]raj[)rb}rc(hUh}rd(U anchornameU#configurationUrefurijph]h]h]h]h]Uinternaluh j^h]rehX Configurationrfrg}rh(hX Configurationh jbubah!jcubah!jdubjL)ri}rj(hUh}rk(h]h]h]h]h]uh jZh]rljQ)rm}rn(hUh}ro(h]h]h]h]h]uh jih]rpjV)rq}rr(hUh}rs(h]h]h]h]h]uh jmh]rtj[)ru}rv(hUh}rw(U anchornameU #celery-confUrefurijph]h]h]h]h]Uinternaluh jqh]rxhX celery.confryrz}r{(hX celery.confh juubah!jcubah!jdubah!jubah!jubeh!jubjQ)r|}r}(hUh}r~(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh j|h]rj[)r}r(hUh}r(U anchornameU#miscellaneousUrefurijph]h]h]h]h]Uinternaluh jh]rhX Miscellaneousrr}r(hX Miscellaneoush jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh j|h]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-datastructuresUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.datastructuresrr}r(hXcelery.datastructuresh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-exceptionsUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.exceptionsrr}r(hXcelery.exceptionsh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-platformUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.platformrr}r(hXcelery.platformh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #celery-utilsUrefurijph]h]h]h]h]Uinternaluh jh]rhX celery.utilsrr}r(hX celery.utilsh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-utils-infoUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.utils.inforr}r(hXcelery.utils.infoh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#celery-utils-compatUrefurijph]h]h]h]h]Uinternaluh jh]rhXcelery.utils.compatrr}r(hXcelery.utils.compath jubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubjyjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijyh]h]h]h]h]Uinternaluh jh]rhX(Backend: Redis - celery.backends.pyredisrr}r(hjh jubah!jcubah!jdubah!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r (hUh}r (U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]r hX3Contrib: Abortable tasks - celery.contrib.abortabler r }r(hjh jubah!jcubah!jdubah!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]rhX*Serialization Tools - celery.serializationrr }r!(hjh jubah!jcubah!jdubah!jubah!jubjjL)r"}r#(hUh}r$(h]h]h]h]h]uh]r%jQ)r&}r'(hUh}r((h]h]h]h]h]uh j"h]r)jV)r*}r+(hUh}r,(h]h]h]h]h]uh j&h]r-j[)r.}r/(hUh}r0(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j*h]r1hX3Celery Periodic Task Server - celery.bin.celerybeatr2r3}r4(hjh j.ubah!jcubah!jdubah!jubah!jubjjL)r5}r6(hUh}r7(h]h]h]h]h]uh]r8jQ)r9}r:(hUh}r;(h]h]h]h]h]uh j5h]r<jV)r=}r>(hUh}r?(h]h]h]h]h]uh j9h]r@j[)rA}rB(hUh}rC(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j=h]rDhX4Token Bucket (rate limiting) - celery.worker.bucketsrErF}rG(hjh jAubah!jcubah!jdubah!jubah!jubjjL)rH}rI(hUh}rJ(h]h]h]h]h]uh]rKjQ)rL}rM(hUh}rN(h]h]h]h]h]uh jHh]rO(jV)rP}rQ(hUh}rR(h]h]h]h]h]uh jLh]rSj[)rT}rU(hUh}rV(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jPh]rWhXConfiguration and defaultsrXrY}rZ(hjh jTubah!jcubah!jdubjL)r[}r\(hUh}r](h]h]h]h]h]uh jLh]r^(jQ)r_}r`(hUh}ra(h]h]h]h]h]uh j[h]rbjV)rc}rd(hUh}re(h]h]h]h]h]uh j_h]rfj[)rg}rh(hUh}ri(U anchornameU#example-configuration-fileUrefurijh]h]h]h]h]Uinternaluh jch]rjhXExample configuration filerkrl}rm(hXExample configuration fileh jgubah!jcubah!jdubah!jubjQ)rn}ro(hUh}rp(h]h]h]h]h]uh j[h]rqjV)rr}rs(hUh}rt(h]h]h]h]h]uh jnh]ruj[)rv}rw(hUh}rx(U anchornameU#concurrency-settingsUrefurijh]h]h]h]h]Uinternaluh jrh]ryhXConcurrency settingsrzr{}r|(hXConcurrency settingsh jvubah!jcubah!jdubah!jubjQ)r}}r~(hUh}r(h]h]h]h]h]uh j[h]rjV)r}r(hUh}r(h]h]h]h]h]uh j}h]rj[)r}r(hUh}r(U anchornameU#task-result-backend-settingsUrefurijh]h]h]h]h]Uinternaluh jh]rhXTask result backend settingsrr}r(hXTask result backend settingsh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j[h]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#database-backend-settingsUrefurijh]h]h]h]h]Uinternaluh jh]rhXDatabase backend settingsrr}r(hXDatabase backend settingsh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#example-configurationUrefurijh]h]h]h]h]Uinternaluh jh]rhXExample configurationrr}r(hXExample configurationh jubah!jcubah!jdubah!jubah!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j[h]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#amqp-backend-settingsUrefurijh]h]h]h]h]Uinternaluh jh]rhXAMQP backend settingsrr}r(hXAMQP backend settingsh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id1Urefurijh]h]h]h]h]Uinternaluh jh]rhXExample configurationrr}r(hXExample configurationh jubah!jcubah!jdubah!jubah!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j[h]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#cache-backend-settingsUrefurijh]h]h]h]h]Uinternaluh jh]rhXCache backend settingsrr}r(hXCache backend settingsh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id2Urefurijh]h]h]h]h]Uinternaluh jh]rhXExample configurationrr}r(hXExample configurationh jubah!jcubah!jdubah!jubah!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j[h]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#tokyo-tyrant-backend-settingsUrefurijh]h]h]h]h]Uinternaluh jh]rhXTokyo Tyrant backend settingsrr}r(hXTokyo Tyrant backend settingsh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r }r (hUh}r (h]h]h]h]h]uh jh]r j[)r }r(hUh}r(U anchornameU#id3Urefurijh]h]h]h]h]Uinternaluh j h]rhXExample configurationrr}r(hXExample configurationh j ubah!jcubah!jdubah!jubah!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j[h]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#redis-backend-settingsUrefurijh]h]h]h]h]Uinternaluh jh]rhXRedis backend settingsr r!}r"(hXRedis backend settingsh jubah!jcubah!jdubjL)r#}r$(hUh}r%(h]h]h]h]h]uh jh]r&jQ)r'}r((hUh}r)(h]h]h]h]h]uh j#h]r*jV)r+}r,(hUh}r-(h]h]h]h]h]uh j'h]r.j[)r/}r0(hUh}r1(U anchornameU#id4Urefurijh]h]h]h]h]Uinternaluh j+h]r2hXExample configurationr3r4}r5(hXExample configurationh j/ubah!jcubah!jdubah!jubah!jubeh!jubjQ)r6}r7(hUh}r8(h]h]h]h]h]uh j[h]r9(jV)r:}r;(hUh}r<(h]h]h]h]h]uh j6h]r=j[)r>}r?(hUh}r@(U anchornameU#mongodb-backend-settingsUrefurijh]h]h]h]h]Uinternaluh j:h]rAhXMongoDB backend settingsrBrC}rD(hXMongoDB backend settingsh j>ubah!jcubah!jdubjL)rE}rF(hUh}rG(h]h]h]h]h]uh j6h]rHjQ)rI}rJ(hUh}rK(h]h]h]h]h]uh jEh]rLjV)rM}rN(hUh}rO(h]h]h]h]h]uh jIh]rPj[)rQ}rR(hUh}rS(U anchornameU#id5Urefurijh]h]h]h]h]Uinternaluh jMh]rThXExample configurationrUrV}rW(hXExample configurationh jQubah!jcubah!jdubah!jubah!jubeh!jubjQ)rX}rY(hUh}rZ(h]h]h]h]h]uh j[h]r[(jV)r\}r](hUh}r^(h]h]h]h]h]uh jXh]r_j[)r`}ra(hUh}rb(U anchornameU#messaging-settingsUrefurijh]h]h]h]h]Uinternaluh j\h]rchXMessaging settingsrdre}rf(hXMessaging settingsh j`ubah!jcubah!jdubjL)rg}rh(hUh}ri(h]h]h]h]h]uh jXh]rj(jQ)rk}rl(hUh}rm(h]h]h]h]h]uh jgh]rnjV)ro}rp(hUh}rq(h]h]h]h]h]uh jkh]rrj[)rs}rt(hUh}ru(U anchornameU#routingUrefurijh]h]h]h]h]Uinternaluh joh]rvhXRoutingrwrx}ry(hXRoutingh jsubah!jcubah!jdubah!jubjQ)rz}r{(hUh}r|(h]h]h]h]h]uh jgh]r}jV)r~}r(hUh}r(h]h]h]h]h]uh jzh]rj[)r}r(hUh}r(U anchornameU #connectionUrefurijh]h]h]h]h]Uinternaluh j~h]rhX Connectionrr}r(hX Connectionh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j[h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#task-execution-settingsUrefurijh]h]h]h]h]Uinternaluh jh]rhXTask execution settingsrr}r(hXTask execution settingsh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j[h]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#worker-celerydUrefurijh]h]h]h]h]Uinternaluh jh]rhXWorker: celerydrr}r(hXWorker: celerydh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#error-e-mailsUrefurijh]h]h]h]h]Uinternaluh jh]rhX Error E-Mailsrr}r(hX Error E-Mailsh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#example-e-mail-configurationUrefurijh]h]h]h]h]Uinternaluh jh]rhXExample E-Mail configurationrr}r(hXExample E-Mail configurationh jubah!jcubah!jdubah!jubah!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#eventsUrefurijh]h]h]h]h]Uinternaluh jh]rhXEventsrr}r(hXEventsh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#broadcast-commandsUrefurijh]h]h]h]h]Uinternaluh jh]rhXBroadcast Commandsrr}r(hXBroadcast Commandsh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#loggingUrefurijh]h]h]h]h]Uinternaluh jh]rhXLoggingrr}r(hXLoggingh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU"#custom-component-classes-advancedUrefurijh]h]h]h]h]Uinternaluh jh]rhX#Custom Component Classes (advanced)rr}r(hX#Custom Component Classes (advanced)h jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j[h]r jV)r }r(hUh}r(h]h]h]h]h]uh j h]rj[)r}r(hUh}r(U anchornameU #periodic-task-server-celerybeatUrefurijh]h]h]h]h]Uinternaluh j h]rhX Periodic Task Server: celerybeatrr}r(hX Periodic Task Server: celerybeath jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j[h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r }r!(hUh}r"(U anchornameU#monitor-server-celerymonUrefurijh]h]h]h]h]Uinternaluh jh]r#hXMonitor Server: celerymonr$r%}r&(hXMonitor Server: celerymonh j ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)r'}r((hUh}r)(h]h]h]h]h]uh]r*jQ)r+}r,(hUh}r-(h]h]h]h]h]uh j'h]r.jV)r/}r0(hUh}r1(h]h]h]h]h]uh j+h]r2j[)r3}r4(hUh}r5(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j/h]r6hX*Python Compatibility - celery.utils.compatr7r8}r9(hjh j3ubah!jcubah!jdubah!jubah!jubjjL)r:}r;(hUh}r<(h]h]h]h]h]uh]r=jQ)r>}r?(hUh}r@(h]h]h]h]h]uh j:h]rAjV)rB}rC(hUh}rD(h]h]h]h]h]uh j>h]rEj[)rF}rG(hUh}rH(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jBh]rIhX&SQLAlchemy Session - celery.db.sessionrJrK}rL(hjh jFubah!jcubah!jdubah!jubah!jubjjL)rM}rN(hUh}rO(h]h]h]h]h]uh]rPjQ)rQ}rR(hUh}rS(h]h]h]h]h]uh jMh]rTjV)rU}rV(hUh}rW(h]h]h]h]h]uh jQh]rXj[)rY}rZ(hUh}r[(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jUh]r\hXTask Registry - celery.registryr]r^}r_(hjh jYubah!jcubah!jdubah!jubah!jubjjL)r`}ra(hUh}rb(h]h]h]h]h]uh]rcjQ)rd}re(hUh}rf(h]h]h]h]h]uh j`h]rg(jV)rh}ri(hUh}rj(h]h]h]h]h]uh jdh]rkj[)rl}rm(hUh}rn(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jhh]rohXRunning celeryd as a daemonrprq}rr(hjh jlubah!jcubah!jdubjL)rs}rt(hUh}ru(h]h]h]h]h]uh jdh]rv(jQ)rw}rx(hUh}ry(h]h]h]h]h]uh jsh]rz(jV)r{}r|(hUh}r}(h]h]h]h]h]uh jwh]r~j[)r}r(hUh}r(U anchornameU #start-stop-daemon-debian-ubuntuUrefurijh]h]h]h]h]Uinternaluh j{h]rhX$start-stop-daemon (Debian/Ubuntu/++)rr}r(hX$start-stop-daemon (Debian/Ubuntu/++)h jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jwh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#init-script-celerydUrefurijh]h]h]h]h]Uinternaluh jh]rhXInit script: celerydrr}r(hXInit script: celerydh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#example-configurationUrefurijh]h]h]h]h]Uinternaluh jh]rhXExample configurationrr}r(hXExample configurationh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#example-django-configurationUrefurijh]h]h]h]h]Uinternaluh jh]rhXExample Django configurationrr}r(hXExample Django configurationh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#available-optionsUrefurijh]h]h]h]h]Uinternaluh jh]rhXAvailable optionsrr}r(hXAvailable optionsh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#init-script-celerybeatUrefurijh]h]h]h]h]Uinternaluh jh]rhXInit script: celerybeatrr}r(hXInit script: celerybeath jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]r(jQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id1Urefurijh]h]h]h]h]Uinternaluh jh]rhXExample configurationrr}r(hXExample configurationh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id2Urefurijh]h]h]h]h]Uinternaluh jh]rhXExample Django configurationrr}r(hXExample Django configurationh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#id3Urefurijh]h]h]h]h]Uinternaluh jh]rhXAvailable optionsrr}r (hXAvailable optionsh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r }r (hUh}r (h]h]h]h]h]uh jh]r jV)r}r(hUh}r(h]h]h]h]h]uh j h]rj[)r}r(hUh}r(U anchornameU#troubleshootingUrefurijh]h]h]h]h]Uinternaluh jh]rhXTroubleshootingrr}r(hXTroubleshootingh jubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r}r(hUh}r(h]h]h]h]h]uh jsh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]r j[)r!}r"(hUh}r#(U anchornameU #supervisordUrefurijh]h]h]h]h]Uinternaluh jh]r$hX supervisordr%r&}r'(hUh j!ubah!jcubah!jdubah!jubjQ)r(}r)(hUh}r*(h]h]h]h]h]uh jsh]r+jV)r,}r-(hUh}r.(h]h]h]h]h]uh j(h]r/j[)r0}r1(hUh}r2(U anchornameU #launchd-os-xUrefurijh]h]h]h]h]Uinternaluh j,h]r3hXlaunchd (OS X)r4r5}r6(hXlaunchd (OS X)h j0ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)r7}r8(hUh}r9(h]h]h]h]h]uh]r:jQ)r;}r<(hUh}r=(h]h]h]h]h]uh j7h]r>jV)r?}r@(hUh}rA(h]h]h]h]h]uh j;h]rBj[)rC}rD(hUh}rE(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j?h]rFhX$SQLAlchemy Models - celery.db.modelsrGrH}rI(hjh jCubah!jcubah!jdubah!jubah!jubjjL)rJ}rK(hUh}rL(h]h]h]h]h]uh]rMjQ)rN}rO(hUh}rP(h]h]h]h]h]uh jJh]rQ(jV)rR}rS(hUh}rT(h]h]h]h]h]uh jNh]rUj[)rV}rW(hUh}rX(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jRh]rYhX*Tutorials and resources from the communityrZr[}r\(hjh jVubah!jcubah!jdubjL)r]}r^(hUh}r_(h]h]h]h]h]uh jNh]r`(jQ)ra}rb(hUh}rc(h]h]h]h]h]uh j]h]rdjV)re}rf(hUh}rg(h]h]h]h]h]uh jah]rhj[)ri}rj(hUh}rk(U anchornameUM#django-celery-quickstart-or-how-i-learned-to-stop-using-cron-and-love-celeryUrefurijh]h]h]h]h]Uinternaluh jeh]rlhXODjango/Celery Quickstart (or, how I learned to stop using cron and love celery)rmrn}ro(hXODjango/Celery Quickstart (or, how I learned to stop using cron and love celery)h jiubah!jcubah!jdubah!jubjQ)rp}rq(hUh}rr(h]h]h]h]h]uh j]h]rsjV)rt}ru(hUh}rv(h]h]h]h]h]uh jph]rwj[)rx}ry(hUh}rz(U anchornameU0#how-celery-carrot-and-your-messaging-stack-workUrefurijh]h]h]h]h]Uinternaluh jth]r{hX1How Celery, Carrot, and your messaging stack workr|r}}r~(hX1How Celery, Carrot, and your messaging stack workh jxubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU9#large-problems-in-django-mostly-solved-delayed-executionUrefurijh]h]h]h]h]Uinternaluh jh]rhX:Large Problems in Django, Mostly Solved: Delayed Executionrr}r(hX:Large Problems in Django, Mostly Solved: Delayed Executionh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#introduction-to-celeryUrefurijh]h]h]h]h]Uinternaluh jh]rhXIntroduction to Celeryrr}r(hXIntroduction to Celeryh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#rabbitmq-celery-and-djangoUrefurijh]h]h]h]h]Uinternaluh jh]rhXRabbitMQ, Celery and Djangorr}r(hXRabbitMQ, Celery and Djangoh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU-#message-queues-django-and-celery-quick-startUrefurijh]h]h]h]h]Uinternaluh jh]rhX-Message Queues, Django and Celery Quick Startrr}r(hX-Message Queues, Django and Celery Quick Starth jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU<#background-task-processing-and-deferred-execution-in-djangoUrefurijh]h]h]h]h]Uinternaluh jh]rhX;Background task processing and deferred execution in Djangorr}r(hX;Background task processing and deferred execution in Djangoh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUF#build-a-processing-queue-in-less-than-a-day-using-rabbitmq-and-celeryUrefurijh]h]h]h]h]Uinternaluh jh]rhXKBuild a processing queue [...] in less than a day using RabbitMQ and Celeryrr}r(hXKBuild a processing queue [...] in less than a day using RabbitMQ and Celeryh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU&#how-to-get-celeryd-to-work-on-freebsdUrefurijh]h]h]h]h]Uinternaluh jh]rhX%How to get celeryd to work on FreeBSDrr}r(hX%How to get celeryd to work on FreeBSDh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU #web-based-3d-animation-softwareUrefurijh]h]h]h]h]Uinternaluh jh]rhXWeb-based 3D animation softwarerr}r(hXWeb-based 3D animation softwareh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU"#queued-storage-backend-for-djangoUrefurijh]h]h]h]h]Uinternaluh jh]rhX!Queued Storage Backend for Djangorr}r(hX!Queued Storage Backend for Djangoh jubah!jcubah!jdubah!jubjQ)r}r(hUh}r(h]h]h]h]h]uh j]h]r jV)r }r (hUh}r (h]h]h]h]h]uh jh]r j[)r}r(hUh}r(U anchornameU#rabbitmq-with-python-and-rubyUrefurijh]h]h]h]h]Uinternaluh j h]rhXRabbitMQ with Python and Rubyrr}r(hXRabbitMQ with Python and Rubyh jubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]r j[)r!}r"(hUh}r#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]r$hX3celeryev: Curses Event Viewer - celery.bin.celeryevr%r&}r'(hjh j!ubah!jcubah!jdubah!jubah!jubjjL)r(}r)(hUh}r*(h]h]h]h]h]uh]r+jQ)r,}r-(hUh}r.(h]h]h]h]h]uh j(h]r/(jV)r0}r1(hUh}r2(h]h]h]h]h]uh j,h]r3j[)r4}r5(hUh}r6(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j0h]r7hX%Sets of tasks, Subtasks and Callbacksr8r9}r:(hjh j4ubah!jcubah!jdubjL)r;}r<(hUh}r=(h]h]h]h]h]uh j,h]r>(jQ)r?}r@(hUh}rA(h]h]h]h]h]uh j;h]rB(jV)rC}rD(hUh}rE(h]h]h]h]h]uh j?h]rFj[)rG}rH(hUh}rI(U anchornameU #subtasksUrefurijh]h]h]h]h]Uinternaluh jCh]rJhXSubtasksrKrL}rM(hXSubtasksrNh jGubah!jcubah!jdubjL)rO}rP(hUh}rQ(h]h]h]h]h]uh j?h]rRjQ)rS}rT(hUh}rU(h]h]h]h]h]uh jOh]rVjV)rW}rX(hUh}rY(h]h]h]h]h]uh jSh]rZj[)r[}r\(hUh}r](U anchornameU #callbacksUrefurijh]h]h]h]h]Uinternaluh jWh]r^hX Callbacksr_r`}ra(hX Callbacksrbh j[ubah!jcubah!jdubah!jubah!jubeh!jubjQ)rc}rd(hUh}re(h]h]h]h]h]uh j;h]rf(jV)rg}rh(hUh}ri(h]h]h]h]h]uh jch]rjj[)rk}rl(hUh}rm(U anchornameU #task-setsUrefurijh]h]h]h]h]Uinternaluh jgh]rnhX Task Setsrorp}rq(hX Task Setsrrh jkubah!jcubah!jdubjL)rs}rt(hUh}ru(h]h]h]h]h]uh jch]rvjQ)rw}rx(hUh}ry(h]h]h]h]h]uh jsh]rzjV)r{}r|(hUh}r}(h]h]h]h]h]uh jwh]r~j[)r}r(hUh}r(U anchornameU#resultsUrefurijh]h]h]h]h]Uinternaluh j{h]rhXResultsrr}r(hXResultsrh jubah!jcubah!jdubah!jubah!jubeh!jubeh!jubeh!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]rhX"Debugging Info - celery.utils.inforr}r(hjh jubah!jcubah!jdubah!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]rhX)Loader Base Classes - celery.loaders.baserr}r(hjh jubah!jcubah!jdubah!jubah!jubj jL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurij h]h]h]h]h]Uinternaluh jh]rhX,Built-in Task Classes - celery.task.builtinsrr}r(hjh jubah!jcubah!jdubah!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r(jV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]rhXCelery Deprecation Timelinerr}r(hjh jubah!jcubah!jdubjL)r}r(hUh}r(h]h]h]h]h]uh jh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameU#removals-for-version-2-0Urefurijh]h]h]h]h]Uinternaluh jh]rhXRemovals for version 2.0rr}r(hXRemovals for version 2.0h jubah!jcubah!jdubah!jubah!jubeh!jubah!jubjjL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]rjV)r}r(hUh}r(h]h]h]h]h]uh jh]rj[)r}r(hUh}r(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jh]rhX'Default Loader - celery.loaders.defaultrr}r(hj#h jubah!jcubah!jdubah!jubah!jubj$jL)r}r(hUh}r(h]h]h]h]h]uh]rjQ)r}r(hUh}r(h]h]h]h]h]uh jh]r jV)r }r (hUh}r (h]h]h]h]h]uh jh]r j[)r }r (hUh}r (U anchornameUUrefurij$h]h]h]h]h]Uinternaluh j h]r hX4Task Sets, Subtasks and Callbacks - celery.task.setsr r }r (hj,h j ubah!jcubah!jdubah!jubah!jubj-jL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurij-h]h]h]h]h]Uinternaluh j h]r hX Resourcesr r }r (hj5h j ubah!jcubah!jdubjL)r }r (hUh}r! (h]h]h]h]h]uh j h]r" (jQ)r# }r$ (hUh}r% (h]h]h]h]h]uh j h]r& (jV)r' }r( (hUh}r) (h]h]h]h]h]uh j# h]r* j[)r+ }r, (hUh}r- (U anchornameU #getting-helpUrefurij-h]h]h]h]h]Uinternaluh j' h]r. hX Getting Helpr/ r0 }r1 (hX Getting Helph j+ ubah!jcubah!jdubjL)r2 }r3 (hUh}r4 (h]h]h]h]h]uh j# h]r5 (jQ)r6 }r7 (hUh}r8 (h]h]h]h]h]uh j2 h]r9 jV)r: }r; (hUh}r< (h]h]h]h]h]uh j6 h]r= j[)r> }r? (hUh}r@ (U anchornameU #mailing-listUrefurij-h]h]h]h]h]Uinternaluh j: h]rA hX Mailing listrB rC }rD (hX Mailing listh j> ubah!jcubah!jdubah!jubjQ)rE }rF (hUh}rG (h]h]h]h]h]uh j2 h]rH jV)rI }rJ (hUh}rK (h]h]h]h]h]uh jE h]rL j[)rM }rN (hUh}rO (U anchornameU#ircUrefurij-h]h]h]h]h]Uinternaluh jI h]rP hXIRCrQ rR }rS (hXIRCh jM ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)rT }rU (hUh}rV (h]h]h]h]h]uh j h]rW jV)rX }rY (hUh}rZ (h]h]h]h]h]uh jT h]r[ j[)r\ }r] (hUh}r^ (U anchornameU #bug-trackerUrefurij-h]h]h]h]h]Uinternaluh jX h]r_ hX Bug trackerr` ra }rb (hX Bug trackerh j\ ubah!jcubah!jdubah!jubjQ)rc }rd (hUh}re (h]h]h]h]h]uh j h]rf jV)rg }rh (hUh}ri (h]h]h]h]h]uh jc h]rj j[)rk }rl (hUh}rm (U anchornameU#wikiUrefurij-h]h]h]h]h]Uinternaluh jg h]rn hXWikiro rp }rq (hXWikih jk ubah!jcubah!jdubah!jubjQ)rr }rs (hUh}rt (h]h]h]h]h]uh j h]ru jV)rv }rw (hUh}rx (h]h]h]h]h]uh jr h]ry j[)rz }r{ (hUh}r| (U anchornameU #contributingUrefurij-h]h]h]h]h]Uinternaluh jv h]r} hX Contributingr~ r }r (hX Contributingh jz ubah!jcubah!jdubah!jubjQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU#licenseUrefurij-h]h]h]h]h]Uinternaluh j h]r hXLicenser r }r (hXLicenseh j ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubj6jL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurij6h]h]h]h]h]Uinternaluh j h]r hXAextended multiprocessing.pool - celery.concurrency.processes.poolr r }r (hj>h j ubah!jcubah!jdubah!jubah!jubj?jL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurij?h]h]h]h]h]Uinternaluh j h]r hX5Worker Controller Threads - celery.worker.controllersr r }r (hjGh j ubah!jcubah!jdubah!jubah!jubjHjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurijHh]h]h]h]h]Uinternaluh j h]r hX8Signals: Safe References - celery.utils.dispatch.saferefr r }r (hjPh j ubah!jcubah!jdubah!jubah!jubjQjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurijQh]h]h]h]h]Uinternaluh j h]r hX)Celery Worker Daemon - celery.bin.celerydr r }r (hjYh j ubah!jcubah!jdubah!jubah!jubjZjL)r }r (hUh}r (h]h]h]h]h]uh]r jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r (jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameUUrefurijZh]h]h]h]h]Uinternaluh j h]r hX Introductionr r }r (hjbh j ubah!jcubah!jdubjL)r }r (hUh}r (h]h]h]h]h]uh j h]r (jQ)r }r (hUh}r (h]h]h]h]h]uh j h]r jV)r }r (hUh}r (h]h]h]h]h]uh j h]r j[)r }r (hUh}r (U anchornameU #overviewUrefurijZh]h]h]h]h]Uinternaluh j h]r hXOverviewr r!}r!(hXOverviewh j ubah!jcubah!jdubah!jubjQ)r!}r!(hUh}r!(h]h]h]h]h]uh j h]r!jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r !j[)r !}r !(hUh}r !(U anchornameU#exampleUrefurijZh]h]h]h]h]Uinternaluh j!h]r !hXExampler!r!}r!(hXExampleh j !ubah!jcubah!jdubah!jubjQ)r!}r!(hUh}r!(h]h]h]h]h]uh j h]r!jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!j[)r!}r!(hUh}r!(U anchornameU #featuresUrefurijZh]h]h]h]h]Uinternaluh j!h]r!hXFeaturesr!r!}r!(hXFeaturesh j!ubah!jcubah!jdubah!jubjQ)r !}r!!(hUh}r"!(h]h]h]h]h]uh j h]r#!jV)r$!}r%!(hUh}r&!(h]h]h]h]h]uh j !h]r'!j[)r(!}r)!(hUh}r*!(U anchornameU#documentationUrefurijZh]h]h]h]h]Uinternaluh j$!h]r+!hX Documentationr,!r-!}r.!(hX Documentationh j(!ubah!jcubah!jdubah!jubjQ)r/!}r0!(hUh}r1!(h]h]h]h]h]uh j h]r2!(jV)r3!}r4!(hUh}r5!(h]h]h]h]h]uh j/!h]r6!j[)r7!}r8!(hUh}r9!(U anchornameU #installationUrefurijZh]h]h]h]h]Uinternaluh j3!h]r:!hX Installationr;!r!}r?!(hUh}r@!(h]h]h]h]h]uh j/!h]rA!(jQ)rB!}rC!(hUh}rD!(h]h]h]h]h]uh j>!h]rE!jV)rF!}rG!(hUh}rH!(h]h]h]h]h]uh jB!h]rI!j[)rJ!}rK!(hUh}rL!(U anchornameU'#downloading-and-installing-from-sourceUrefurijZh]h]h]h]h]Uinternaluh jF!h]rM!hX&Downloading and installing from sourcerN!rO!}rP!(hX&Downloading and installing from sourceh jJ!ubah!jcubah!jdubah!jubjQ)rQ!}rR!(hUh}rS!(h]h]h]h]h]uh j>!h]rT!jV)rU!}rV!(hUh}rW!(h]h]h]h]h]uh jQ!h]rX!j[)rY!}rZ!(hUh}r[!(U anchornameU#using-the-development-versionUrefurijZh]h]h]h]h]Uinternaluh jU!h]r\!hXUsing the development versionr]!r^!}r_!(hXUsing the development versionh jY!ubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubjcjL)r`!}ra!(hUh}rb!(h]h]h]h]h]uh]rc!jQ)rd!}re!(hUh}rf!(h]h]h]h]h]uh j`!h]rg!jV)rh!}ri!(hUh}rj!(h]h]h]h]h]uh jd!h]rk!j[)rl!}rm!(hUh}rn!(U anchornameUUrefurijch]h]h]h]h]Uinternaluh jh!h]ro!hX0Time and Date Utilities - celery.utils.timeutilsrp!rq!}rr!(hjkh jl!ubah!jcubah!jdubah!jubah!jubjljL)rs!}rt!(hUh}ru!(h]h]h]h]h]uh]rv!jQ)rw!}rx!(hUh}ry!(h]h]h]h]h]uh js!h]rz!(jV)r{!}r|!(hUh}r}!(h]h]h]h]h]uh jw!h]r~!j[)r!}r!(hUh}r!(U anchornameUUrefurijlh]h]h]h]h]Uinternaluh j{!h]r!hXPeriodic Tasksr!r!}r!(hjth j!ubah!jcubah!jdubjL)r!}r!(hUh}r!(h]h]h]h]h]uh jw!h]r!(jQ)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!j[)r!}r!(hUh}r!(U anchornameU #introductionUrefurijlh]h]h]h]h]Uinternaluh j!h]r!hX Introductionr!r!}r!(hX Introductionh j!ubah!jcubah!jdubah!jubjQ)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!j[)r!}r!(hUh}r!(U anchornameU#crontab-like-schedulesUrefurijlh]h]h]h]h]Uinternaluh j!h]r!hXCrontab-like schedulesr!r!}r!(hXCrontab-like schedulesh j!ubah!jcubah!jdubah!jubjQ)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!j[)r!}r!(hUh}r!(U anchornameU#starting-celerybeatUrefurijlh]h]h]h]h]Uinternaluh j!h]r!hXStarting celerybeatr!r!}r!(hXStarting celerybeath j!ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjujL)r!}r!(hUh}r!(h]h]h]h]h]uh]r!jQ)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!j[)r!}r!(hUh}r!(U anchornameUUrefurijuh]h]h]h]h]Uinternaluh j!h]r!hX2Signals: Dispatcher - celery.utils.dispatch.signalr!r!}r!(hj}h j!ubah!jcubah!jdubah!jubah!jubj~jL)r!}r!(hUh}r!(h]h]h]h]h]uh]r!jQ)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!j[)r!}r!(hUh}r!(U anchornameUUrefurij~h]h]h]h]h]Uinternaluh j!h]r!hX-Celeryd Multi Tool - celery.bin.celeryd_multir!r!}r!(hjh j!ubah!jcubah!jdubah!jubah!jubjjL)r!}r!(hUh}r!(h]h]h]h]h]uh]r!jQ)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!j[)r!}r!(hUh}r!(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j!h]r!hX;Multiprocessing Pool Support - celery.concurrency.processesr!r!}r!(hjh j!ubah!jcubah!jdubah!jubah!jubjjL)r!}r!(hUh}r!(h]h]h]h]h]uh]r!jQ)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!(jV)r!}r!(hUh}r!(h]h]h]h]h]uh j!h]r!j[)r!}r!(hUh}r!(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j!h]r!hX User Guider"r"}r"(hjh j!ubah!jcubah!jdubjL)r"}r"(hUh}r"(h]h]h]h]h]uh j!h]r"ju)r"}r"(hUh}r "(UnumberedKUparentjU titlesonlyUglobh]h]h]h]h]Uentries]r "(Nj r "Njr "Njr "Njr"Njr"Njr"eUhiddenUmaxdepthKU includefiles]r"(j jjjjjeU includehiddenuh j"h]h!j}ubah!jubeh!jubah!jubjjL)r"}r"(hUh}r"(h]h]h]h]h]uh]r"jQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r "(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j"h]r!"hX#Platform Specific - celery.platformr""r#"}r$"(hjh j"ubah!jcubah!jdubah!jubah!jubjjL)r%"}r&"(hUh}r'"(h]h]h]h]h]uh]r("jQ)r)"}r*"(hUh}r+"(h]h]h]h]h]uh j%"h]r,"jV)r-"}r."(hUh}r/"(h]h]h]h]h]uh j)"h]r0"j[)r1"}r2"(hUh}r3"(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j-"h]r4"hXMessage Routers - celery.routesr5"r6"}r7"(hjh j1"ubah!jcubah!jdubah!jubah!jubjjL)r8"}r9"(hUh}r:"(h]h]h]h]h]uh]r;"jQ)r<"}r="(hUh}r>"(h]h]h]h]h]uh j8"h]r?"(jV)r@"}rA"(hUh}rB"(h]h]h]h]h]uh j<"h]rC"j[)rD"}rE"(hUh}rF"(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j@"h]rG"hXList of Worker EventsrH"rI"}rJ"(hjh jD"ubah!jcubah!jdubjL)rK"}rL"(hUh}rM"(h]h]h]h]h]uh j<"h]rN"(jQ)rO"}rP"(hUh}rQ"(h]h]h]h]h]uh jK"h]rR"jV)rS"}rT"(hUh}rU"(h]h]h]h]h]uh jO"h]rV"j[)rW"}rX"(hUh}rY"(U anchornameU #task-eventsUrefurijh]h]h]h]h]Uinternaluh jS"h]rZ"hX Task Eventsr["r\"}r]"(hX Task Eventsh jW"ubah!jcubah!jdubah!jubjQ)r^"}r_"(hUh}r`"(h]h]h]h]h]uh jK"h]ra"jV)rb"}rc"(hUh}rd"(h]h]h]h]h]uh j^"h]re"j[)rf"}rg"(hUh}rh"(U anchornameU#worker-eventsUrefurijh]h]h]h]h]Uinternaluh jb"h]ri"hX Worker Eventsrj"rk"}rl"(hX Worker Eventsh jf"ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)rm"}rn"(hUh}ro"(h]h]h]h]h]uh]rp"jQ)rq"}rr"(hUh}rs"(h]h]h]h]h]uh jm"h]rt"(jV)ru"}rv"(hUh}rw"(h]h]h]h]h]uh jq"h]rx"j[)ry"}rz"(hUh}r{"(U anchornameUUrefurijh]h]h]h]h]Uinternaluh ju"h]r|"hXInternals: The workerr}"r~"}r"(hjh jy"ubah!jcubah!jdubjL)r"}r"(hUh}r"(h]h]h]h]h]uh jq"h]r"(jQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r"(U anchornameU #introductionUrefurijh]h]h]h]h]Uinternaluh j"h]r"hX Introductionr"r"}r"(hX Introductionh j"ubah!jcubah!jdubah!jubjQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"(jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r"(U anchornameU#data-structuresUrefurijh]h]h]h]h]Uinternaluh j"h]r"hXData structuresr"r"}r"(hXData structuresh j"ubah!jcubah!jdubjL)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"(jQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r"(U anchornameU #ready-queueUrefurijh]h]h]h]h]Uinternaluh j"h]r"hX ready_queuer"r"}r"(hX ready_queueh j"ubah!jcubah!jdubah!jubjQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r"(U anchornameU #eta-scheduleUrefurijh]h]h]h]h]Uinternaluh j"h]r"hX eta_scheduler"r"}r"(hX eta_scheduleh j"ubah!jcubah!jdubah!jubeh!jubeh!jubjQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"(jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r"(U anchornameU #componentsUrefurijh]h]h]h]h]Uinternaluh j"h]r"hX Componentsr"r"}r"(hX Componentsh j"ubah!jcubah!jdubjL)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"(jQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r"(U anchornameU#carrotlistenerUrefurijh]h]h]h]h]Uinternaluh j"h]r"hXCarrotListenerr"r"}r"(hXCarrotListenerh j"ubah!jcubah!jdubah!jubjQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r"(U anchornameU#schedulecontrollerUrefurijh]h]h]h]h]Uinternaluh j"h]r"hXScheduleControllerr"r"}r"(hXScheduleControllerh j"ubah!jcubah!jdubah!jubjQ)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"jV)r"}r"(hUh}r"(h]h]h]h]h]uh j"h]r"j[)r"}r"(hUh}r"(U anchornameU #mediatorUrefurijh]h]h]h]h]Uinternaluh j"h]r#hXMediatorr#r#}r#(hXMediatorh j"ubah!jcubah!jdubah!jubjQ)r#}r#(hUh}r#(h]h]h]h]h]uh j"h]r#jV)r#}r #(hUh}r #(h]h]h]h]h]uh j#h]r #j[)r #}r #(hUh}r#(U anchornameU #taskpoolUrefurijh]h]h]h]h]Uinternaluh j#h]r#hXTaskPoolr#r#}r#(hXTaskPoolh j #ubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubjjL)r#}r#(hUh}r#(h]h]h]h]h]uh]r#jQ)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#jV)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#j[)r#}r #(hUh}r!#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j#h]r"#hX,Task Information and Utilities - celery.taskr##r$#}r%#(hjh j#ubah!jcubah!jdubah!jubah!jubjjL)r&#}r'#(hUh}r(#(h]h]h]h]h]uh]r)#jQ)r*#}r+#(hUh}r,#(h]h]h]h]h]uh j&#h]r-#jV)r.#}r/#(hUh}r0#(h]h]h]h]h]uh j*#h]r1#j[)r2#}r3#(hUh}r4#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j.#h]r5#hX'Signal Dispatch - celery.utils.dispatchr6#r7#}r8#(hjh j2#ubah!jcubah!jdubah!jubah!jubjjL)r9#}r:#(hUh}r;#(h]h]h]h]h]uh]r<#jQ)r=#}r>#(hUh}r?#(h]h]h]h]h]uh j9#h]r@#jV)rA#}rB#(hUh}rC#(h]h]h]h]h]uh j=#h]rD#j[)rE#}rF#(hUh}rG#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jA#h]rH#hX)Backend: Memcache - celery.backends.cacherI#rJ#}rK#(hjh jE#ubah!jcubah!jdubah!jubah!jubjjL)rL#}rM#(hUh}rN#(h]h]h]h]h]uh]rO#jQ)rP#}rQ#(hUh}rR#(h]h]h]h]h]uh jL#h]rS#jV)rT#}rU#(hUh}rV#(h]h]h]h]h]uh jP#h]rW#j[)rX#}rY#(hUh}rZ#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jT#h]r[#hXEvents - celery.eventsr\#r]#}r^#(hjh jX#ubah!jcubah!jdubah!jubah!jubjjL)r_#}r`#(hUh}ra#(h]h]h]h]h]uh]rb#jQ)rc#}rd#(hUh}re#(h]h]h]h]h]uh j_#h]rf#jV)rg#}rh#(hUh}ri#(h]h]h]h]h]uh jc#h]rj#j[)rk#}rl#(hUh}rm#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jg#h]rn#hX&Worker Control - celery.worker.controlro#rp#}rq#(hjh jk#ubah!jcubah!jdubah!jubah!jubjjL)rr#}rs#(hUh}rt#(h]h]h]h]h]uh]ru#jQ)rv#}rw#(hUh}rx#(h]h]h]h]h]uh jr#h]ry#(jV)rz#}r{#(hUh}r|#(h]h]h]h]h]uh jv#h]r}#j[)r~#}r#(hUh}r#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jz#h]r#hXInteresting Linksr#r#}r#(hjh j~#ubah!jcubah!jdubjL)r#}r#(hUh}r#(h]h]h]h]h]uh jv#h]r#(jQ)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#jV)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#j[)r#}r#(hUh}r#(U anchornameU#celeryUrefurijh]h]h]h]h]Uinternaluh j#h]r#hXceleryr#r#}r#(hXceleryh j#ubah!jcubah!jdubah!jubjQ)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#jV)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#j[)r#}r#(hUh}r#(U anchornameU#amqpUrefurijh]h]h]h]h]Uinternaluh j#h]r#hXAMQPr#r#}r#(hXAMQPh j#ubah!jcubah!jdubah!jubjQ)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#jV)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#j[)r#}r#(hUh}r#(U anchornameU #rabbitmqUrefurijh]h]h]h]h]Uinternaluh j#h]r#hXRabbitMQr#r#}r#(hXRabbitMQh j#ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)r#}r#(hUh}r#(h]h]h]h]h]uh]r#jQ)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#jV)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#j[)r#}r#(hUh}r#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j#h]r#hX7Backend: SQLAlchemy Database - celery.backends.databaser#r#}r#(hjh j#ubah!jcubah!jdubah!jubah!jubjjL)r#}r#(hUh}r#(h]h]h]h]h]uh]r#jQ)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#(jV)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#j[)r#}r#(hUh}r#(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j#h]r#hXInternal Module Referencer#r#}r#(hjh j#ubah!jcubah!jdubjL)r#}r#(hUh}r#(h]h]h]h]h]uh j#h]r#ju)r#}r#(hUh}r#(UnumberedKUparentjU titlesonlyUglobh]h]h]h]h]Uentries]r#(Njr#Njr#Njr#Njr#Njr#Njr#Njr#Njr#Nj r#Nj!r#Nj"r#Nj#r#Nj$r#Nj%r#Nj&r#Nj'r#Nj(r#Nj)r#Nj*r#Nj+r#Nj,r#Nj-r#Nj.r#Nj/r#Nj0r#Nj1r#Nj2r#Nj3r#Nj4r$Nj5r$Nj6r$Nj7r$Nj8r$Nj9r$Nj:r$Nj;r$Nj<r$Nj=r $Nj>r $Nj?r $Nj@r $NjAr $eUhiddenUmaxdepthKU includefiles]r$(jjjjjjjjj j!j"j#j$j%j&j'j(j)j*j+j,j-j.j/j0j1j2j3j4j5j6j7j8j9j:j;j<j=j>j?j@jAeU includehiddenuh j#h]h!j}ubah!jubeh!jubah!jubjjL)r$}r$(hUh}r$(h]h]h]h]h]uh]r$jQ)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$jV)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$j[)r$}r$(hUh}r$(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j$h]r$hX*Compatibility Patches - celery.utils.patchr$r $}r!$(hj h j$ubah!jcubah!jdubah!jubah!jubjjL)r"$}r#$(hUh}r$$(h]h]h]h]h]uh]r%$jQ)r&$}r'$(hUh}r($(h]h]h]h]h]uh j"$h]r)$jV)r*$}r+$(hUh}r,$(h]h]h]h]h]uh j&$h]r-$j[)r.$}r/$(hUh}r0$(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j*$h]r1$hX.Backend: Cassandra - celery.backends.cassandrar2$r3$}r4$(hjh j.$ubah!jcubah!jdubah!jubah!jubjjL)r5$}r6$(hUh}r7$(h]h]h]h]h]uh]r8$jQ)r9$}r:$(hUh}r;$(h]h]h]h]h]uh j5$h]r<$jV)r=$}r>$(hUh}r?$(h]h]h]h]h]uh j9$h]r@$j[)rA$}rB$(hUh}rC$(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j=$h]rD$hX$Backend: AMQP - celery.backends.amqprE$rF$}rG$(hjh jA$ubah!jcubah!jdubah!jubah!jubj jL)rH$}rI$(hUh}rJ$(h]h]h]h]h]uh]rK$jQ)rL$}rM$(hUh}rN$(h]h]h]h]h]uh jH$h]rO$jV)rP$}rQ$(hUh}rR$(h]h]h]h]h]uh jL$h]rS$j[)rT$}rU$(hUh}rV$(U anchornameUUrefurij h]h]h]h]h]Uinternaluh jP$h]rW$hX.Backend: Tokyo Tyrant - celery.backends.tyrantrX$rY$}rZ$(hj(h jT$ubah!jcubah!jdubah!jubah!jubj)jL)r[$}r\$(hUh}r]$(h]h]h]h]h]uh]r^$jQ)r_$}r`$(hUh}ra$(h]h]h]h]h]uh j[$h]rb$(jV)rc$}rd$(hUh}re$(h]h]h]h]h]uh j_$h]rf$j[)rg$}rh$(hUh}ri$(U anchornameUUrefurij)h]h]h]h]h]Uinternaluh jc$h]rj$hXGetting Startedrk$rl$}rm$(hj1h jg$ubah!jcubah!jdubjL)rn$}ro$(hUh}rp$(h]h]h]h]h]uh j_$h]rq$ju)rr$}rs$(hUh}rt$(UnumberedKUparentj)U titlesonlyUglobh]h]h]h]h]Uentries]ru$(Njrv$Njrw$Njrx$Njry$Njrz$eUhiddenUmaxdepthKU includefiles]r{$(jjjjjeU includehiddenuh jn$h]h!j}ubah!jubeh!jubah!jubj2jL)r|$}r}$(hUh}r~$(h]h]h]h]h]uh]r$jQ)r$}r$(hUh}r$(h]h]h]h]h]uh j|$h]r$jV)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$j[)r$}r$(hUh}r$(U anchornameUUrefurij2h]h]h]h]h]Uinternaluh j$h]r$hX"Worker State - celery.worker.stater$r$}r$(hj:h j$ubah!jcubah!jdubah!jubah!jubj;jL)r$}r$(hUh}r$(h]h]h]h]h]uh]r$jQ)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$jV)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$j[)r$}r$(hUh}r$(U anchornameUUrefurij;h]h]h]h]h]Uinternaluh j$h]r$hX@Remote Control Command Registry - celery.worker.control.registryr$r$}r$(hjCh j$ubah!jcubah!jdubah!jubah!jubjDjL)r$}r$(hUh}r$(h]h]h]h]h]uh]r$jQ)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$(jV)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$j[)r$}r$(hUh}r$(U anchornameUUrefurijDh]h]h]h]h]Uinternaluh j$h]r$hX8Using Celery with Redis/Database as the messaging queue.r$r$}r$(hjLh j$ubah!jcubah!jdubjL)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$(jQ)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$jV)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$j[)r$}r$(hUh}r$(U anchornameU #installationUrefurijDh]h]h]h]h]Uinternaluh j$h]r$hX Installationr$r$}r$(hX Installationr$h j$ubah!jcubah!jdubah!jubjQ)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$(jV)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$j[)r$}r$(hUh}r$(U anchornameU#redisUrefurijDh]h]h]h]h]Uinternaluh j$h]r$hXRedisr$r$}r$(hXRedisr$h j$ubah!jcubah!jdubjL)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$jQ)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$jV)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$j[)r$}r$(hUh}r$(U anchornameU#configurationUrefurijDh]h]h]h]h]Uinternaluh j$h]r$hX Configurationr$r$}r$(hX Configurationr$h j$ubah!jcubah!jdubah!jubah!jubeh!jubjQ)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$(jV)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$j[)r$}r$(hUh}r$(U anchornameU #databaseUrefurijDh]h]h]h]h]Uinternaluh j$h]r$hXDatabaser$r$}r$(hXDatabaseh j$ubah!jcubah!jdubjL)r$}r$(hUh}r$(h]h]h]h]h]uh j$h]r$(jQ)r%}r%(hUh}r%(h]h]h]h]h]uh j$h]r%jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r %(hUh}r %(U anchornameU#id1UrefurijDh]h]h]h]h]Uinternaluh j%h]r %hX Configurationr %r %}r%(hX Configurationh j%ubah!jcubah!jdubah!jubjQ)r%}r%(hUh}r%(h]h]h]h]h]uh j$h]r%jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r%(hUh}r%(U anchornameU#important-notesUrefurijDh]h]h]h]h]Uinternaluh j%h]r%hXImportant notesr%r%}r%(hXImportant notesh j%ubah!jcubah!jdubah!jubeh!jubeh!jubeh!jubeh!jubah!jubjMjL)r%}r%(hUh}r %(h]h]h]h]h]uh]r!%jQ)r"%}r#%(hUh}r$%(h]h]h]h]h]uh j%h]r%%jV)r&%}r'%(hUh}r(%(h]h]h]h]h]uh j"%h]r)%j[)r*%}r+%(hUh}r,%(U anchornameUUrefurijMh]h]h]h]h]Uinternaluh j&%h]r-%hX$Backend: Base - celery.backends.baser.%r/%}r0%(hjUh j*%ubah!jcubah!jdubah!jubah!jubjVjL)r1%}r2%(hUh}r3%(h]h]h]h]h]uh]r4%jQ)r5%}r6%(hUh}r7%(h]h]h]h]h]uh j1%h]r8%jV)r9%}r:%(hUh}r;%(h]h]h]h]h]uh j5%h]r<%j[)r=%}r>%(hUh}r?%(U anchornameUUrefurijVh]h]h]h]h]Uinternaluh j9%h]r@%hXClock Service - celery.beatrA%rB%}rC%(hj^h j=%ubah!jcubah!jdubah!jubah!jubj_jL)rD%}rE%(hUh}rF%(h]h]h]h]h]uh]rG%jQ)rH%}rI%(hUh}rJ%(h]h]h]h]h]uh jD%h]rK%jV)rL%}rM%(hUh}rN%(h]h]h]h]h]uh jH%h]rO%j[)rP%}rQ%(hUh}rR%(U anchornameUUrefurij_h]h]h]h]h]Uinternaluh jL%h]rS%(hXThread Pool Support rT%rU%}rV%(hjgh jP%ubjh)rW%}rX%(hjkh}rY%(h]h]h]h]h]uh jP%h]rZ%hX EXPERIMENTALr[%r\%}r]%(hUh jW%ubah!jqubhX - celery.concurrency.threadsr^%r_%}r`%(hjuh jP%ubeh!jcubah!jdubah!jubah!jubjvjL)ra%}rb%(hUh}rc%(h]h]h]h]h]uh]rd%jQ)re%}rf%(hUh}rg%(h]h]h]h]h]uh ja%h]rh%jV)ri%}rj%(hUh}rk%(h]h]h]h]h]uh je%h]rl%j[)rm%}rn%(hUh}ro%(U anchornameUUrefurijvh]h]h]h]h]Uinternaluh ji%h]rp%hX*Backend: MongoDB - celery.backends.mongodbrq%rr%}rs%(hj~h jm%ubah!jcubah!jdubah!jubah!jubjjL)rt%}ru%(hUh}rv%(h]h]h]h]h]uh]rw%jQ)rx%}ry%(hUh}rz%(h]h]h]h]h]uh jt%h]r{%(jV)r|%}r}%(hUh}r~%(h]h]h]h]h]uh jx%h]r%j[)r%}r%(hUh}r%(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j|%h]r%hXCreating Tasksr%r%}r%(hjh j%ubah!jcubah!jdubjL)r%}r%(hUh}r%(h]h]h]h]h]uh jx%h]r%jQ)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r%(hUh}r%(U anchornameU/#ensuring-a-task-is-only-executed-one-at-a-timeUrefurijh]h]h]h]h]Uinternaluh j%h]r%hX.Ensuring a task is only executed one at a timer%r%}r%(hX.Ensuring a task is only executed one at a timeh j%ubah!jcubah!jdubah!jubah!jubeh!jubah!jubjjL)r%}r%(hUh}r%(h]h]h]h]h]uh]r%jQ)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r%(hUh}r%(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j%h]r%hXUtilities - celery.utilsr%r%}r%(hjh j%ubah!jcubah!jdubah!jubah!jubjjL)r%}r%(hUh}r%(h]h]h]h]h]uh]r%jQ)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r%(hUh}r%(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j%h]r%hX+Worker Heartbeats - celery.worker.heartbeatr%r%}r%(hjh j%ubah!jcubah!jdubah!jubah!jubjjL)r%}r%(hUh}r%(h]h]h]h]h]uh]r%jQ)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%(jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r%(hUh}r%(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j%h]r%hXExecuting Tasksr%r%}r%(hjh j%ubah!jcubah!jdubjL)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%(jQ)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r%(hUh}r%(U anchornameU#basicsUrefurijh]h]h]h]h]Uinternaluh j%h]r%hXBasicsr%r%}r%(hXBasicsh j%ubah!jcubah!jdubah!jubjQ)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r%(hUh}r%(U anchornameU#eta-and-countdownUrefurijh]h]h]h]h]Uinternaluh j%h]r%hXETA and countdownr%r%}r%(hXETA and countdownh j%ubah!jcubah!jdubah!jubjQ)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%jV)r%}r%(hUh}r%(h]h]h]h]h]uh j%h]r%j[)r%}r%(hUh}r%(U anchornameU #serializersUrefurijh]h]h]h]h]Uinternaluh j%h]r&hX Serializersr&r&}r&(hX Serializersh j%ubah!jcubah!jdubah!jubjQ)r&}r&(hUh}r&(h]h]h]h]h]uh j%h]r&jV)r&}r &(hUh}r &(h]h]h]h]h]uh j&h]r &j[)r &}r &(hUh}r&(U anchornameU$#connections-and-connection-timeoutsUrefurijh]h]h]h]h]Uinternaluh j&h]r&hX$Connections and connection timeouts.r&r&}r&(hX$Connections and connection timeouts.h j &ubah!jcubah!jdubah!jubjQ)r&}r&(hUh}r&(h]h]h]h]h]uh j%h]r&jV)r&}r&(hUh}r&(h]h]h]h]h]uh j&h]r&j[)r&}r&(hUh}r&(U anchornameU#routing-optionsUrefurijh]h]h]h]h]Uinternaluh j&h]r&hXRouting optionsr&r &}r!&(hXRouting optionsh j&ubah!jcubah!jdubah!jubjQ)r"&}r#&(hUh}r$&(h]h]h]h]h]uh j%h]r%&jV)r&&}r'&(hUh}r(&(h]h]h]h]h]uh j"&h]r)&j[)r*&}r+&(hUh}r,&(U anchornameU #amqp-optionsUrefurijh]h]h]h]h]Uinternaluh j&&h]r-&hX AMQP optionsr.&r/&}r0&(hX AMQP optionsh j*&ubah!jcubah!jdubah!jubeh!jubeh!jubah!jubjjL)r1&}r2&(hUh}r3&(h]h]h]h]h]uh]r4&jQ)r5&}r6&(hUh}r7&(h]h]h]h]h]uh j1&h]r8&jV)r9&}r:&(hUh}r;&(h]h]h]h]h]uh j5&h]r<&j[)r=&}r>&(hUh}r?&(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j9&h]r@&hXLoaders - celery.loadersrA&rB&}rC&(hjh j=&ubah!jcubah!jdubah!jubah!jubjjL)rD&}rE&(hUh}rF&(h]h]h]h]h]uh]rG&jQ)rH&}rI&(hUh}rJ&(h]h]h]h]h]uh jD&h]rK&jV)rL&}rM&(hUh}rN&(h]h]h]h]h]uh jH&h]rO&j[)rP&}rQ&(hUh}rR&(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jL&h]rS&hX9caqmadm: AMQP API Command-line Shell - celery.bin.camqadmrT&rU&}rV&(hjh jP&ubah!jcubah!jdubah!jubah!jubjjL)rW&}rX&(hUh}rY&(h]h]h]h]h]uh]rZ&jQ)r[&}r\&(hUh}r]&(h]h]h]h]h]uh jW&h]r^&jV)r_&}r`&(hUh}ra&(h]h]h]h]h]uh j[&h]rb&j[)rc&}rd&(hUh}re&(U anchornameUUrefurijh]h]h]h]h]Uinternaluh j_&h]rf&hX8Periodic Task Schedule Behaviors - celery.task.schedulesrg&rh&}ri&(hjh jc&ubah!jcubah!jdubah!jubah!jubjjL)rj&}rk&(hUh}rl&(h]h]h]h]h]uh]rm&jQ)rn&}ro&(hUh}rp&(h]h]h]h]h]uh jj&h]rq&jV)rr&}rs&(hUh}rt&(h]h]h]h]h]uh jn&h]ru&j[)rv&}rw&(hUh}rx&(U anchornameUUrefurijh]h]h]h]h]Uinternaluh jr&h]ry&hX#Task Decorators - celery.decoratorsrz&r{&}r|&(hjh jv&ubah!jcubah!jdubah!jubah!jubuU indexentriesr}&}r~&(h ]h#]h,]h5]r&(Usingler&Xcelery.task.base (module)Xmodule-celery.task.baseUtr&ah>]hG]hP]hY]hb]r&(j&X celery.utils.functional (module)Xmodule-celery.utils.functionalUtr&ahk]r&((j&Xcelery.states (module)Xmodule-celery.statesUtr&(j&X!PENDING (in module celery.states)jUtr&(j&X!STARTED (in module celery.states)jUtr&(j&X!SUCCESS (in module celery.states)jUtr&(j&X!FAILURE (in module celery.states)jUtr&(j&XRETRY (in module celery.states)j)Utr&(j&X!REVOKED (in module celery.states)jAUtr&(j&X&READY_STATES (in module celery.states)jUtr&(j&X(UNREADY_STATES (in module celery.states)jUtr&(j&X*EXCEPTION_STATES (in module celery.states)j2Utr&(j&X*PROPAGATE_STATES (in module celery.states)jUtr&(j&X$ALL_STATES (in module celery.states)jYUtr&eht]h}]h]h]h]h]h]r&((j&Xcelery.utils.mail (module)Xmodule-celery.utils.mailUtr&(j&X#Mailer (class in celery.utils.mail)jUtr&(j&X(send() (celery.utils.mail.Mailer method)j Utr&(j&X$Message (class in celery.utils.mail)j#Utr&(j&XSendmailWarningjUtr&(j&X+mail_admins() (in module celery.utils.mail)jUtr&eh]h]r&(j&Xcelery.task.base (module)Xmodule-celery.task.baseUtr&ah]r&(j&Xcelery.task.http (module)Xmodule-celery.task.httpUtr&ah]h]h]r&((j&X$task_sent (in module celery.signals)jUtr&(j&X&task_prerun (in module celery.signals)jUtr&(j&X'task_postrun (in module celery.signals)jCUtr&(j&X&worker_init (in module celery.signals)jyUtr&(j&X'worker_ready (in module celery.signals)j Utr&(j&X.worker_process_init (in module celery.signals)j Utr&(j&X*worker_shutdown (in module celery.signals)j6Utr&eh]h]h]r&((j&X CELERY_LOADERr&Uindex-0r&Utr&(j&X#environment variable; CELERY_LOADERj&Utr&(j&X NOSE_VERBOSEr&Uindex-1r&Utr&(j&X"environment variable; NOSE_VERBOSEj&Utr&ej]j ]j]r&((j&XQUEUES (in module celery.conf)jUtr&(j&X%DEFAULT_QUEUE (in module celery.conf)jUtr&(j&X(DEFAULT_EXCHANGE (in module celery.conf)j\Utr&(j&X-DEFAULT_EXCHANGE_TYPE (in module celery.conf)jUtr&(j&X-DEFAULT_DELIVERY_MODE (in module celery.conf)jUtr&(j&X+DEFAULT_ROUTING_KEY (in module celery.conf)jWUtr&(j&X1BROKER_CONNECTION_TIMEOUT (in module celery.conf)j(Utr&(j&X'BROADCAST_QUEUE (in module celery.conf)j~Utr&(j&X*BROADCAST_EXCHANGE (in module celery.conf)jUtr&(j&X/BROADCAST_EXCHANGE_TYPE (in module celery.conf)jUtr&(j&X#EVENT_QUEUE (in module celery.conf)jUtr&(j&X&EVENT_EXCHANGE (in module celery.conf)jUtr&(j&X+EVENT_EXCHANGE_TYPE (in module celery.conf)jUtr&(j&X)EVENT_ROUTING_KEY (in module celery.conf)jUtr&(j&X(EVENT_SERIALIZER (in module celery.conf)jUtr&(j&X'RESULT_EXCHANGE (in module celery.conf)jUtr&(j&X5CELERY_SEND_TASK_ERROR_EMAILS (in module celery.conf)jUtr&(j&XADMINS (in module celery.conf)j0Utr&(j&X$SERVER_EMAIL (in module celery.conf)jUtr&(j&X!MAIL_HOST (in module celery.conf)jUtr&(j&X&MAIL_HOST_USER (in module celery.conf)jUtr&(j&X*MAIL_HOST_PASSWORD (in module celery.conf)jUtr&(j&X!MAIL_PORT (in module celery.conf)jUtr&(j&X$ALWAYS_EAGER (in module celery.conf)jUtr&(j&X3EAGER_PROPAGATES_EXCEPTIONS (in module celery.conf)jUtr&(j&X+TASK_RESULT_EXPIRES (in module celery.conf)jUtr&(j&X%IGNORE_RESULT (in module celery.conf)j|Utr&(j&X%TRACK_STARTED (in module celery.conf)jUtr&(j&X!ACKS_LATE (in module celery.conf)jUtr&(j&X4STORE_ERRORS_EVEN_IF_IGNORED (in module celery.conf)jUtr&(j&X*MAX_CACHED_RESULTS (in module celery.conf)jQUtr&(j&X'TASK_SERIALIZER (in module celery.conf)jUtr&(j&X&RESULT_BACKEND (in module celery.conf)jUtr&(j&X,CELERY_CACHE_BACKEND (in module celery.conf)jUtr&(j&X#SEND_EVENTS (in module celery.conf)jUtr&(j&X*DEFAULT_RATE_LIMIT (in module celery.conf)jUtr&(j&X+DISABLE_RATE_LIMITS (in module celery.conf)jUtr&(j&X/BROKER_CONNECTION_RETRY (in module celery.conf)jUtr&(j&X5BROKER_CONNECTION_MAX_RETRIES (in module celery.conf)jUtr&(j&X,CELERYBEAT_LOG_LEVEL (in module celery.conf)jUtr&(j&X+CELERYBEAT_LOG_FILE (in module celery.conf)jUtr&(j&X4CELERYBEAT_SCHEDULE_FILENAME (in module celery.conf)jUtr&(j&X4CELERYBEAT_MAX_LOOP_INTERVAL (in module celery.conf)jUtr&(j&X+CELERYMON_LOG_LEVEL (in module celery.conf)jaUtr&(j&X*CELERYMON_LOG_FILE (in module celery.conf)jUtr&(j&X"LOG_LEVELS (in module celery.conf)jUtr&(j&X*CELERYD_LOG_FORMAT (in module celery.conf)jUtr&(j&X/CELERYD_TASK_LOG_FORMAT (in module celery.conf)j{Utr&(j&X(CELERYD_LOG_FILE (in module celery.conf)j!Utr&(j&X)CELERYD_LOG_LEVEL (in module celery.conf)j>Utr&(j&X+CELERYD_CONCURRENCY (in module celery.conf)jUtr&(j&X3CELERYD_PREFETCH_MULTIPLIER (in module celery.conf)jUtr&(j&X$CELERYD_POOL (in module celery.conf)jUtr&(j&X(CELERYD_LISTENER (in module celery.conf)j<Utr&(j&X(CELERYD_MEDIATOR (in module celery.conf)jUtr&(j&X-CELERYD_ETA_SCHEDULER (in module celery.conf)jUtr&ej]j(]j1]j:]r&((j&Xcelery.datastructures (module)Xmodule-celery.datastructuresUtr&(j&X.AttributeDict (class in celery.datastructures)jUtr&(j&X.ExceptionInfo (class in celery.datastructures)jUtr&(j&X9exception (celery.datastructures.ExceptionInfo attribute)jUtr&(j&X9traceback (celery.datastructures.ExceptionInfo attribute)jUtr&(j&X+LimitedSet (class in celery.datastructures)jUtr&(j&X/add() (celery.datastructures.LimitedSet method)j Utr&(j&X3as_dict() (celery.datastructures.LimitedSet method)jxUtr&(j&X<chronologically (celery.datastructures.LimitedSet attribute)jUtr&(j&X2first (celery.datastructures.LimitedSet attribute)j=Utr&(j&X5pop_value() (celery.datastructures.LimitedSet method)jUtr&(j&X2update() (celery.datastructures.LimitedSet method)jUtr&(j&X+LocalCache (class in celery.datastructures)jUtr&(j&X.PositionQueue (class in celery.datastructures)jiUtr&(j&X6length (celery.datastructures.PositionQueue attribute)jfUtr&(j&X?PositionQueue.UnfilledPosition (class in celery.datastructures)jUtr&(j&X6filled (celery.datastructures.PositionQueue attribute)jUtr&(j&X3full() (celery.datastructures.PositionQueue method)jUtr&(j&X.SharedCounter (class in celery.datastructures)jkUtr&(j&X8decrement() (celery.datastructures.SharedCounter method)jUtr&(j&X8increment() (celery.datastructures.SharedCounter method)jUtr&(j&X1consume_queue() (in module celery.datastructures)jUtr&ejC]jL]jU]r&((j&Xcelery.exceptions (module)Xmodule-celery.exceptionsUtr&(j&XAlreadyRegisteredjvUtr&(j&XImproperlyConfiguredj"Utr'(j&XMaxRetriesExceededErrorjUtr'(j&X NotRegisteredjGUtr'(j&X QueueNotFoundjUtr'(j&XRetryTaskErrorjUtr'(j&XSoftTimeLimitExceededj1Utr'(j&XTaskRevokedErrorjUtr'(j&XTimeLimitExceededjEUtr'(j&X TimeoutErrorjUtr'(j&XWorkerLostErrorjUtr 'ej^]jg]jp]jy]j]j]r '((j&Xcelery.serialization (module)Xmodule-celery.serializationUtr '(j&XUnpickleableExceptionWrapperjUtr '(j&XHexc_module (celery.serialization.UnpickleableExceptionWrapper attribute)jUtr '(j&XJexc_cls_name (celery.serialization.UnpickleableExceptionWrapper attribute)jUtr'(j&XFexc_args (celery.serialization.UnpickleableExceptionWrapper attribute)jUtr'(j&XQfrom_exception() (celery.serialization.UnpickleableExceptionWrapper class method)jtUtr'(j&XDrestore() (celery.serialization.UnpickleableExceptionWrapper method)jUtr'(j&X7create_exception_cls() (in module celery.serialization)jUtr'(j&XDfind_nearest_pickleable_exception() (in module celery.serialization)jUtr'(j&X;get_pickleable_exception() (in module celery.serialization)j5Utr'(j&X8get_pickled_exception() (in module celery.serialization)jVUtr'(j&X5subclass_exception() (in module celery.serialization)jUtr'ej]j]j]j]r'((j&Xcelery.utils.compat (module)Xmodule-celery.utils.compatUtr'(j&X*OrderedDict (class in celery.utils.compat)jUtr'(j&X0clear() (celery.utils.compat.OrderedDict method)jUtr'(j&X/copy() (celery.utils.compat.OrderedDict method)jUtr'(j&X9fromkeys() (celery.utils.compat.OrderedDict class method)jUtr'(j&X0items() (celery.utils.compat.OrderedDict method)jUtr'(j&X4iteritems() (celery.utils.compat.OrderedDict method)jUtr'(j&X3iterkeys() (celery.utils.compat.OrderedDict method)j.Utr'(j&X5itervalues() (celery.utils.compat.OrderedDict method)j,Utr '(j&X/keys() (celery.utils.compat.OrderedDict method)jUtr!'(j&X.pop() (celery.utils.compat.OrderedDict method)jXUtr"'(j&X2popitem() (celery.utils.compat.OrderedDict method)j Utr#'(j&X5setdefault() (celery.utils.compat.OrderedDict method)jRUtr$'(j&X1update() (celery.utils.compat.OrderedDict method)jUtr%'(j&X1values() (celery.utils.compat.OrderedDict method)j;Utr&'(j&X5chain_from_iterable() (in module celery.utils.compat)jUUtr''ej]j]r('((j&Xcelery.registry (module)Xmodule-celery.registryUtr)'(j&X'TaskRegistry (class in celery.registry)jUtr*'(j&XTaskRegistry.NotRegisteredj%Utr+'(j&X4filter_types() (celery.registry.TaskRegistry method)jUtr,'(j&X0periodic() (celery.registry.TaskRegistry method)jUtr-'(j&X+pop() (celery.registry.TaskRegistry method)j Utr.'(j&X0register() (celery.registry.TaskRegistry method)jUtr/'(j&X/regular() (celery.registry.TaskRegistry method)jUtr0'(j&X2unregister() (celery.registry.TaskRegistry method)jUtr1'ej]j]j]j]j]j]j]r2'((j&Xcelery.loaders.base (module)Xmodule-celery.loaders.baseUtr3'(j&X)BaseLoader (class in celery.loaders.base)jUtr4'(j&X/conf (celery.loaders.base.BaseLoader attribute)jUtr5'(j&X5configured (celery.loaders.base.BaseLoader attribute)jUtr6'(j&X@import_default_modules() (celery.loaders.base.BaseLoader method)jUtr7'(j&X<import_task_module() (celery.loaders.base.BaseLoader method)jUtr8'(j&X5init_worker() (celery.loaders.base.BaseLoader method)jqUtr9'(j&X<on_process_cleanup() (celery.loaders.base.BaseLoader method)jUtr:'(j&X6on_task_init() (celery.loaders.base.BaseLoader method)jUtr;'(j&X8on_worker_init() (celery.loaders.base.BaseLoader method)j Utr<'(j&X<override_backends (celery.loaders.base.BaseLoader attribute)jUtr='(j&X=worker_initialized (celery.loaders.base.BaseLoader attribute)jNUtr>'ej ]j]j]r?'((j&Xcelery.loaders.default (module)Xmodule-celery.loaders.defaultUtr@'(j&X(Loader (class in celery.loaders.default)jUtrA'(j&X8import_from_cwd() (celery.loaders.default.Loader method)j_UtrB'(j&X7on_worker_init() (celery.loaders.default.Loader method)jKUtrC'(j&X;read_configuration() (celery.loaders.default.Loader method)jUtrD'(j&X7setup_settings() (celery.loaders.default.Loader method)jUtrE'(j&X NotConfiguredjUtrF'(j&X*Settings (class in celery.loaders.default)jgUtrG'(j&X7wanted_module_item() (in module celery.loaders.default)jUtrH'ej$]j-]j6]j?]jH]rI'((j&X&celery.utils.dispatch.saferef (module)X$module-celery.utils.dispatch.saferefUtrJ'(j&X;BoundMethodWeakref (class in celery.utils.dispatch.saferef)jUtrK'(j&X@key (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)jUtrL'(j&XMdeletion_methods (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)jUtrM'(j&XFweak_self (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)j UtrN'(j&XFweak_func (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)jUtrO'(j&XK_all_instances (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)jUtrP'(j&XOcalculate_key() (celery.utils.dispatch.saferef.BoundMethodWeakref class method)j%UtrQ'(j&XHBoundNonDescriptorMethodWeakref (class in celery.utils.dispatch.saferef)jUtrR'(j&XDget_bound_method_weakref() (in module celery.utils.dispatch.saferef)jUtrS'(j&X4safe_ref() (in module celery.utils.dispatch.saferef)jUtrT'ejQ]jZ]jc]rU'((j&Xcelery.utils.timeutils (module)Xmodule-celery.utils.timeutilsUtrV'(j&X5delta_resolution() (in module celery.utils.timeutils)jUtrW'(j&X)rate() (in module celery.utils.timeutils)jUtrX'(j&X.remaining() (in module celery.utils.timeutils)j^UtrY'(j&X6timedelta_seconds() (in module celery.utils.timeutils)jUtrZ'(j&X,weekday() (in module celery.utils.timeutils)j+Utr['ejl]ju]r\'((j&X%celery.utils.dispatch.signal (module)X#module-celery.utils.dispatch.signalUtr]'(j&X.Signal (class in celery.utils.dispatch.signal)jUtr^'(j&X9receivers (celery.utils.dispatch.signal.Signal attribute)jUtr_'(j&X6connect() (celery.utils.dispatch.signal.Signal method)jUtr`'(j&X9disconnect() (celery.utils.dispatch.signal.Signal method)jUtra'(j&X3send() (celery.utils.dispatch.signal.Signal method)j4Utrb'(j&X:send_robust() (celery.utils.dispatch.signal.Signal method)jUtrc'ej~]rd'((j&X!celery.bin.celeryd_multi (module)Xmodule-celery.bin.celeryd_multiUtre'(j&X-MultiTool (class in celery.bin.celeryd_multi)juUtrf'(j&X4expand() (celery.bin.celeryd_multi.MultiTool method)jUtrg'(j&X1get() (celery.bin.celeryd_multi.MultiTool method)jwUtrh'(j&X2help() (celery.bin.celeryd_multi.MultiTool method)j Utri'(j&X3names() (celery.bin.celeryd_multi.MultiTool method)jUtrj'(j&X3start() (celery.bin.celeryd_multi.MultiTool method)j]Utrk'(j&X3usage() (celery.bin.celeryd_multi.MultiTool method)jUtrl'(j&X:NamespacedOptionParser (class in celery.bin.celeryd_multi)jnUtrm'(j&XEadd_option() (celery.bin.celeryd_multi.NamespacedOptionParser method)jUtrn'(j&XCoptmerge() (celery.bin.celeryd_multi.NamespacedOptionParser method)jUtro'(j&X@parse() (celery.bin.celeryd_multi.NamespacedOptionParser method)jUtrp'(j&XKprocess_long_opt() (celery.bin.celeryd_multi.NamespacedOptionParser method)jUtrq'(j&XLprocess_short_opt() (celery.bin.celeryd_multi.NamespacedOptionParser method)j"Utrr'(j&X4abbreviations() (in module celery.bin.celeryd_multi)j Utrs'(j&X1format_opt() (in module celery.bin.celeryd_multi)jUtrt'(j&X+main() (in module celery.bin.celeryd_multi)jUtru'(j&X1multi_args() (in module celery.bin.celeryd_multi)jUtrv'(j&X5parse_ns_range() (in module celery.bin.celeryd_multi)jPUtrw'(j&X,quote() (in module celery.bin.celeryd_multi)jMUtrx'(j&X*say() (in module celery.bin.celeryd_multi)jUtry'ej]j]j]rz'((j&Xcelery.platform (module)Xmodule-celery.platformUtr{'(j&X+ignore_signal() (in module celery.platform)jlUtr|'(j&X4install_signal_handler() (in module celery.platform)joUtr}'(j&X*reset_signal() (in module celery.platform)jUtr~'(j&X2set_mp_process_title() (in module celery.platform)jUtr'(j&X/set_process_title() (in module celery.platform)jUtr'ej]r'((j&Xcelery.routes (module)Xmodule-celery.routesUtr'(j&X!MapRoute (class in celery.routes)j-Utr'(j&X0route_for_task() (celery.routes.MapRoute method)jUtr'(j&XRouter (class in celery.routes)jpUtr'(j&X)add_queue() (celery.routes.Router method)jjUtr'(j&X2expand_destination() (celery.routes.Router method)j Utr'(j&X,lookup_route() (celery.routes.Router method)jUtr'(j&X%route() (celery.routes.Router method)jSUtr'(j&X#prepare() (in module celery.routes)jbUtr'ej]j]j]j]r'(j&Xcelery.utils.dispatch (module)Xmodule-celery.utils.dispatchUtr'aj]j]j]j]j]j]j]r'((j&Xcelery.utils.patch (module)Xmodule-celery.utils.patchUtr'(j&X<ensure_process_aware_logger() (in module celery.utils.patch)jUtr'ej]j]j ]j)]j2]j;]jD]jM]jV]j_]jv]j]j]r'((j&Xcelery.utils (module)Xmodule-celery.utilsUtr'(j&X!chunks() (in module celery.utils)j9Utr'(j&X first() (in module celery.utils)jUtr'(j&X&firstmethod() (in module celery.utils)jUtr'(j&X+fun_takes_kwargs() (in module celery.utils)jIUtr'(j&X(gen_unique_id() (in module celery.utils)j?Utr'(j&X*get_cls_by_name() (in module celery.utils)jUtr'(j&X,get_full_cls_name() (in module celery.utils)j[Utr'(j&X&instantiate() (in module celery.utils)jJUtr'(j&X&is_iterable() (in module celery.utils)jUtr'(j&X!kwdict() (in module celery.utils)jmUtr'(j&X&mattrgetter() (in module celery.utils)jUtr'(j&X(maybe_promise() (in module celery.utils)jUtr'(j&X&mitemgetter() (in module celery.utils)j:Utr'(j&X mpromise (class in celery.utils)jUtr'(j&X+evaluated (celery.utils.mpromise attribute)jUtr'(j&X)evaluate() (celery.utils.mpromise method)jUtr'(j&X+evaluated (celery.utils.mpromise attribute)Xcelery.utils.mpromise.evaluatedUtr'(j&Xnoop() (in module celery.utils)jUtr'(j&X"padlist() (in module celery.utils)jUtr'(j&Xpromise (class in celery.utils)j@Utr'(j&X(evaluate() (celery.utils.promise method)jdUtr'(j&X%repeatlast() (in module celery.utils)jHUtr'(j&X*retry_over_time() (in module celery.utils)jUtr'ej]j]j]r'((j&Xcelery.loaders (module)Xmodule-celery.loadersUtr'(j&X+current_loader() (in module celery.loaders)jUtr'(j&X+get_loader_cls() (in module celery.loaders)jUtr'(j&X*load_settings() (in module celery.loaders)jTUtr'(j&X)setup_loader() (in module celery.loaders)jUtr'ej]j]j]uUall_docsr'}r'(h GAԼ@hgAh#GAԼ@hBh,GAԼ@gʲhh5GAԼ@iGAԼ@gqhGGAԼ@gۭhPGAԼ@hَhYGAԼ@hhbGAԼ@hqhkGAԼ@hE1htGAԼ@h6h}GAԼ@h<hGAԼ@h~5hGAԼ@hphGAԼ@hhGAԼ@hhGAԼ@hw8hGAԼ@h;-hGAԼ@gؔhGAԼ@hhGAԼ@hhGAԼ@gѿhGAԼ@hҦhGAԼ@iphGAԼ@hrhGAԼ@gjGAԼ@hοj GAԼ@hV;jGAԼ@hWjGAԼ@h؞j(GAԼ@hj1GAԼ@huj:GAԼ@h.jCGAԼ@g酝jLGAԼ@gkLjUGAԼ@hj^GAԼ@hjgGAԼ@hjpGAԼ@gjGAԼ@hBjGAԼ@g;jGAԼ@h&jGAԼ@h8jGAԼ@h^\jGAԼ@hXCjGAԼ@h׀jGAԼ@hQjGAԼ@hjGAԼ@hjGAԼ@hhjGAԼ@hyD1jGAԼ@h&JjGAԼ@hj GAԼ@h |j)GAԼ@gNj2GAԼ@hij;GAԼ@hjDGAԼ@hEjMGAԼ@hjVGAԼ@h oj_GAԼ@h "jvGAԼ@hjGAԼ@g˗JjGAԼ@hRjGAԼ@hDjGAԼ@h[hjGAԼ@hjGAԼ@h/{jGAԼ@h` jGAԼ@hMuUsettingsr'}r'(Ucloak_email_addressesr'Utrim_footnote_reference_spacer'U halt_levelr'KUsectsubtitle_xformr'Uembed_stylesheetr'U pep_base_urlr'Uhttp://www.python.org/dev/peps/r'Udoctitle_xformr'Uwarning_streamr'csphinx.util.nodes WarningStream r')r'}r'(U_rer'cre _compile r'U+\((DEBUG|INFO|WARNING|ERROR|SEVERE)/[0-4]\)r'KRr'Uwarnfuncr'NubUenvr'hU rfc_base_urlr'Uhttp://tools.ietf.org/html/r'Ufile_insertion_enabledr'Ugettext_compactr'Uinput_encodingr'U utf-8-sigr'uUfiles_to_rebuildr'}r'(jh]r'jaRr'jh]r'jCaRr'j h]r'jaRr'jh]r'jCaRr'jEh]r'h>aRr'jh]r'haRr'jh]r'jaRr'j=h]r'jaRr'jh]r'haRr'j h]r'jaRr'j4h]r'jaRr'jh]r'jaRr'jh]r'jCaRr'jh]r'jaRr'jh]r'haRr'j;h]r'jaRr'j0h]r'jaRr'jh]r'jCaRr'jh]r'jaRr'j+h]r'jaRr'jh]r'j)aRr'jh]r'haRr'jh]r'jaRr'jh]r'haRr'jh]r'jCaRr'jh]r'haRr(jh]r(jgaRr(jh]r(haRr(jh]r(haRr(j'h]r(jaRr(jh]r (haRr (j2h]r (jaRr (jh]r (j)aRr(jh]r(haRr(jh]r(haRr(jh]r(jCaRr(jGh]r(h>aRr(j-h]r(jaRr(jh]r(jaRr(jh]r(haRr(j1h]r(jaRr(jh]r(haRr (jh]r!(jaRr"(jh]r#(jCaRr$(j:h]r%(jaRr&(j6h]r'(jaRr((jh]r)(haRr*(j h]r+(h,aRr,(j5h]r-(jaRr.(jh]r/(jgaRr0(jh]r1(haRr2(jh]r3(jaRr4(j9h]r5(jaRr6(jh]r7(haRr8(jh]r9(haRr:(jCh]r;(h>aRr<(jh]r=(haRr>(jh]r?(haRr@(jh]rA(j)aRrB(j$h]rC(jaRrD(jh]rE(jaRrF(j@h]rG(jaRrH(jh]rI(haRrJ(jh]rK(j)aRrL(j8h]rM(jaRrN(jh]rO(j)aRrP(j?h]rQ(jaRrR(jh]rS(haRrT(j#h]rU(jaRrV(jh]rW(jCaRrX(jAh]rY(jaRrZ(j3h]r[(jaRr\(jFh]r](h>aRr^(jDh]r_(h>aRr`(jh]ra(haRrb(j>h]rc(jaRrd(j*h]re(jaRrf(jh]rg(haRrh(jh]ri(jaRrj(jh]rk(jCaRrl(j)h]rm(jaRrn(jHh]ro(h>aRrp(j<h]rq(jaRrr(j.h]rs(jaRrt(j/h]ru(jaRrv(jh]rw(jCaRrx(j"h]ry(jaRrz(j!h]r{(jaRr|(jh]r}(jgaRr~(j(h]r(jaRr(j&h]r(jaRr(j%h]r(jaRr(j,h]r(jaRr(j h]r(h,aRr(j7h]r(jaRr(jh]r(jaRr(jh]r(jaRr(jh]r(haRr(jh]r(haRr(jh]r(haRr(jh]r(haRr(uUtoc_secnumbersr(}U_nitpick_ignorer(h]Rr(ub.PKHDD7>//+celery-2.0-archived/.doctrees/links.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xrabbitmq munin plug-insqXshovelqXamqpqNXinteresting linksq NXconyq Xrabbitmqq Xceleryq NXmuninq XtrixxqXrabbitmq-shovelquUsubstitution_defsq}qUparse_messagesq]qcdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUU referencedqKhh)q}q(hUhhUsourceqcdocutils.nodes reprunicode q XC/var/build/user_builds/celery/checkouts/2.0-archived/docs/links.rstq!q"}q#bUtagnameq$Usectionq%U attributesq&}q'(Udupnamesq(]Uclassesq)]Ubackrefsq*]Uidsq+]q,Uinteresting-linksq-aUnamesq.]q/h auUlineq0KUdocumentq1hUchildrenq2]q3(cdocutils.nodes title q4)q5}q6(hXInteresting Linksq7hhhh"h$Utitleq8h&}q9(h(]h)]h*]h+]h.]uh0Kh1hh2]q:cdocutils.nodes Text q;XInteresting Linksq(hh7hh5ubaubh)q?}q@(hUhhhh"h$h%h&}qA(h(]h)]h*]h+]qBUceleryqCah.]qDh auh0Kh1hh2]qE(h4)qF}qG(hXceleryqHhh?hh"h$h8h&}qI(h(]h)]h*]h+]h.]uh0Kh1hh2]qJh;XceleryqKqL}qM(hhHhhFubaubcdocutils.nodes bullet_list qN)qO}qP(hUhh?hh"h$U bullet_listqQh&}qR(UbulletqSX*h+]h*]h(]h)]h.]uh0K h1hh2]qTcdocutils.nodes list_item qU)qV}qW(hXRIRC logs from ``#celery`` (Freenode): http://botland.oebfare.com/logger/celery/ hhOhNh$U list_itemqXh&}qY(h(]h)]h*]h+]h.]uh0Nh1hh2]qZcdocutils.nodes definition_list q[)q\}q](hUh&}q^(h(]h)]h*]h+]h.]uhhVh2]q_cdocutils.nodes definition_list_item q`)qa}qb(hXPIRC logs from ``#celery`` (Freenode): http://botland.oebfare.com/logger/celery/ hh\hh"h$Udefinition_list_itemqch&}qd(h(]h)]h*]h+]h.]uh0K h2]qe(cdocutils.nodes term qf)qg}qh(hX%IRC logs from ``#celery`` (Freenode):hhahh"h$Utermqih&}qj(h(]h)]h*]h+]h.]uh0K h2]qk(h;XIRC logs from qlqm}qn(hXIRC logs from hhgubcdocutils.nodes literal qo)qp}qq(hX ``#celery``h&}qr(h(]h)]h*]h+]h.]uhhgh2]qsh;X#celeryqtqu}qv(hUhhpubah$Uliteralqwubh;X (Freenode):qxqy}qz(hX (Freenode):hhgubeubcdocutils.nodes definition q{)q|}q}(hUh&}q~(h(]h)]h*]h+]h.]uhhah2]qcdocutils.nodes paragraph q)q}q(hX)http://botland.oebfare.com/logger/celery/qhh|hh"h$U paragraphqh&}q(h(]h)]h*]h+]h.]uh0K h2]qcdocutils.nodes reference q)q}q(hhh&}q(Urefurihh+]h*]h(]h)]h.]uhhh2]qh;X)http://botland.oebfare.com/logger/celery/qq}q(hUhhubah$U referencequbaubah$U definitionqubeubah$Udefinition_listqubaubaubeubh)q}q(hUhhhh"h$h%h&}q(h(]h)]h*]h+]qUamqpqah.]qhauh0K h1hh2]q(h4)q}q(hXAMQPqhhhh"h$h8h&}q(h(]h)]h*]h+]h.]uh0K h1hh2]qh;XAMQPqq}q(hhhhubaubhN)q}q(hUhhhh"h$hQh&}q(hSX*h+]h*]h(]h)]h.]uh0Kh1hh2]q(hU)q}q(hXK`RabbitMQ-shovel`: Message Relocation Equipment (as a plug-in to RabbitMQ) hhhh"h$hXh&}q(h(]h)]h*]h+]h.]uh0Nh1hh2]qh)q}q(hXJ`RabbitMQ-shovel`: Message Relocation Equipment (as a plug-in to RabbitMQ)hhhh"h$hh&}q(h(]h)]h*]h+]h.]uh0Kh2]q(cdocutils.nodes title_reference q)q}q(hX`RabbitMQ-shovel`h&}q(h(]h)]h*]h+]h.]uhhh2]qh;XRabbitMQ-shovelqq}q(hUhhubah$Utitle_referencequbh;X9: Message Relocation Equipment (as a plug-in to RabbitMQ)qq}q(hX9: Message Relocation Equipment (as a plug-in to RabbitMQ)hhubeubaubhU)q}q(hX/`Shovel`_: An AMQP Relay (generic AMQP shovel) hhhh"h$hXh&}q(h(]h)]h*]h+]h.]uh0Nh1hh2]qh)q}q(hX.`Shovel`_: An AMQP Relay (generic AMQP shovel)hhhh"h$hh&}q(h(]h)]h*]h+]h.]uh0Kh2]q(h)q}q(hX `Shovel`_UresolvedqKhhh$hh&}q(UnameXShovelUrefuriqXhttp://bit.ly/xFEdeqh+]h*]h(]h)]h.]uh2]qh;XShovelqȅq}q(hUhhubaubh;X%: An AMQP Relay (generic AMQP shovel)q˅q}q(hX%: An AMQP Relay (generic AMQP shovel)hhubeubaubeubcdocutils.nodes target q)q}q(hX+.. _`RabbitMQ-shovel`: http://bit.ly/b1hVW2hhhh"h$Utargetqh&}q(hXhttp://bit.ly/b1hVW2h+]qUrabbitmq-shovelqah*]h(]h)]h.]qhauh0Kh1hh2]ubh)q}q(hX!.. _`Shovel`: http://bit.ly/xFEdehKhhhh"h$hh&}q(hhh+]qUshovelqah*]h(]h)]h.]qhauh0Kh1hh2]ubeubheubhh"h$h%h&}q(h(]qXrabbitmqqah)]h*]h+]qUrabbitmqqah.]uh0Kh1hh2]q(h4)q}q(hXRabbitMQqhhhh"h$h8h&}q(h(]h)]h*]h+]h.]uh0Kh1hh2]qh;XRabbitMQq煁q}q(hhhhubaubhN)q}q(hUhhhh"h$hQh&}q(hSX*h+]h*]h(]h)]h.]uh0Kh1hh2]q(hU)q}q(hXQ`Trixx`_: Administration and Monitoring tool for `RabbitMQ`_ (in development). hhhNh$hXh&}q(h(]h)]h*]h+]h.]uh0Nh1hh2]qh[)q}q(hUh&}q(h(]h)]h*]h+]h.]uhhh2]qh`)q}q(hXO`Trixx`_: Administration and Monitoring tool for `RabbitMQ`_ (in development). hhhh"h$hch&}q(h(]h)]h*]h+]h.]uh0Kh2]q(hf)q}q(hX@`Trixx`_: Administration and Monitoring tool for `RabbitMQ`_ (inhhhh"h$hih&}q(h(]h)]h*]h+]h.]uh0Kh2]q(h)q}q(hX`Trixx`_hKhhh$hh&}r(UnameXTrixxhX-http://github.com/aaronfeng/trixx/tree/masterrh+]h*]h(]h)]h.]uh2]rh;XTrixxrr}r(hUhhubaubh;X): Administration and Monitoring tool for rr}r(hX): Administration and Monitoring tool for hhubh)r }r (hX `RabbitMQ`_hKhhh$hh&}r (UnameXRabbitMQhXhttp://rabbitmq.com/r h+]h*]h(]h)]h.]uh2]r h;XRabbitMQrr}r(hUhj ubaubh;X (inrr}r(hX (inhhubeubh{)r}r(hUh&}r(h(]h)]h*]h+]h.]uhhh2]rh)r}r(hX development).rhjhh"h$hh&}r(h(]h)]h*]h+]h.]uh0Kh2]rh;X development).rr}r(hjhjubaubah$hubeubah$hubaubhU)r }r!(hXX`Cony`_: HTTP based service for providing insight into running `RabbitMQ`_ processes. hhhNh$hXh&}r"(h(]h)]h*]h+]h.]uh0Nh1hh2]r#h[)r$}r%(hUh&}r&(h(]h)]h*]h+]h.]uhj h2]r'h`)r(}r)(hXV`Cony`_: HTTP based service for providing insight into running `RabbitMQ`_ processes. hj$hh"h$hch&}r*(h(]h)]h*]h+]h.]uh0Kh2]r+(hf)r,}r-(hX>`Cony`_: HTTP based service for providing insight into runninghj(hh"h$hih&}r.(h(]h)]h*]h+]h.]uh0Kh2]r/(h)r0}r1(hX`Cony`_hKhj,h$hh&}r2(UnameXConyhX&http://github.com/gmr/Cony/tree/masterr3h+]h*]h(]h)]h.]uh2]r4h;XConyr5r6}r7(hUhj0ubaubh;X7: HTTP based service for providing insight into runningr8r9}r:(hX7: HTTP based service for providing insight into runninghj,ubeubh{)r;}r<(hUh&}r=(h(]h)]h*]h+]h.]uhj(h2]r>h)r?}r@(hX`RabbitMQ`_ processes.hj;hh"h$hh&}rA(h(]h)]h*]h+]h.]uh0Kh2]rB(h)rC}rD(hX `RabbitMQ`_hKhj?h$hh&}rE(UnameXRabbitMQhj h+]h*]h(]h)]h.]uh2]rFh;XRabbitMQrGrH}rI(hUhjCubaubh;X processes.rJrK}rL(hX processes.hj?ubeubah$hubeubah$hubaubhU)rM}rN(hXa`RabbitMQ Munin Plug-ins`_: Use `Munin`_ to monitor `RabbitMQ`_, and alert on critical events. hhhNh$hXh&}rO(h(]h)]h*]h+]h.]uh0Nh1hh2]rPh[)rQ}rR(hUh&}rS(h(]h)]h*]h+]h.]uhjMh2]rTh`)rU}rV(hX_`RabbitMQ Munin Plug-ins`_: Use `Munin`_ to monitor `RabbitMQ`_, and alert on critical events. hjQhh"h$hch&}rW(h(]h)]h*]h+]h.]uh0K!h2]rX(hf)rY}rZ(hXJ`RabbitMQ Munin Plug-ins`_: Use `Munin`_ to monitor `RabbitMQ`_, and alertr[hjUhh"h$hih&}r\(h(]h)]h*]h+]h.]uh0K!h2]r](h)r^}r_(hX`RabbitMQ Munin Plug-ins`_hKhjYh$hh&}r`(UnameXRabbitMQ Munin Plug-inshX%http://github.com/ask/rabbitmq-munin/rah+]h*]h(]h)]h.]uh2]rbh;XRabbitMQ Munin Plug-insrcrd}re(hUhj^ubaubh;X: Use rfrg}rh(hX: Use hjYubh)ri}rj(hX`Munin`_hKhjYh$hh&}rk(UnameXMuninhX http://munin.projects.linpro.no/rlh+]h*]h(]h)]h.]uh2]rmh;XMuninrnro}rp(hUhjiubaubh;X to monitor rqrr}rs(hX to monitor hjYubh)rt}ru(hX `RabbitMQ`_hKhjYh$hh&}rv(UnameXRabbitMQhj h+]h*]h(]h)]h.]uh2]rwh;XRabbitMQrxry}rz(hUhjtubaubh;X , and alertr{r|}r}(hX , and alerthjYubeubh{)r~}r(hUh&}r(h(]h)]h*]h+]h.]uhjUh2]rh)r}r(hXon critical events.rhj~hh"h$hh&}r(h(]h)]h*]h+]h.]uh0K!h2]rh;Xon critical events.rr}r(hjhjubaubah$hubeubah$hubaubeubh)r}r(hX:.. _`Trixx`: http://github.com/aaronfeng/trixx/tree/masterhKhhhh"h$hh&}r(hjh+]rUtrixxrah*]h(]h)]h.]rhauh0K#h1hh2]ubh)r}r(hX2.. _`Cony`: http://github.com/gmr/Cony/tree/masterhKhhhh"h$hh&}r(hj3h+]rUconyrah*]h(]h)]h.]rh auh0K$h1hh2]ubh)r}r(hX$.. _`RabbitMQ`: http://rabbitmq.com/hKhhhh"h$hh&}r(hj h+]rUid1rah*]h(]h)]h.]rhauh0K%h1hh2]ubh)r}r(hXD.. _`RabbitMQ Munin Plug-ins`: http://github.com/ask/rabbitmq-munin/hKhhhh"h$hh&}r(hjah+]rUrabbitmq-munin-plug-insrah*]h(]h)]h.]rhauh0K&h1hh2]ubh)r}r(hX-.. _`Munin`: http://munin.projects.linpro.no/hKhhhh"h$hh&}r(hjlh+]rUmuninrah*]h(]h)]h.]rh auh0K'h1hh2]ubeubhh"h$Usystem_messagerh&}r(h(]UlevelKh+]h*]rjaUsourceh"h)]h.]UlineK%UtypeUINFOruh0K%h1hh2]rh)r}r(hUh&}r(h(]h)]h*]h+]h.]uhhh2]rh;X+Duplicate implicit target name: "rabbitmq".rr}r(hUhjubah$hubaubaUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hjhhhhh h-h jh jh hCh jhjhhuh2]rhahUU transformerrNU footnote_refsr}rUrefnamesr}r(Xrabbitmq munin plug-ins]rj^aXshovel]rhaXmunin]rjiaXcony]rj0aXrabbitmq]r(j jCjteXtrixx]rhauUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh1hU current_linerNUtransform_messagesr]rh)r}r(hUh&}r(h(]UlevelKh+]h*]Usourceh"h)]h.]UlineKUtypejuh2]rh)r}r(hUh&}r(h(]h)]h*]h+]h.]uhjh2]rh;X5Hyperlink target "rabbitmq-shovel" is not referenced.rr}r(hUhjubah$hubah$jubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh8NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformr U source_linkr NUrfc_referencesr NUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUC/var/build/user_builds/celery/checkouts/2.0-archived/docs/links.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightr Ulongr!Uinput_encoding_error_handlerr"jUauto_id_prefixr#Uidr$Udoctitle_xformr%Ustrip_elements_with_classesr&NU _config_filesr']r(Ufile_insertion_enabledr)U raw_enabledr*KU dump_settingsr+NubUsymbol_footnote_startr,KUidsr-}r.(hhhhjjjjhhjjhCh?jjh-hjjhhuUsubstitution_namesr/}r0h$h1h&}r1(h(]h+]h*]Usourceh"h)]h.]uU footnotesr2]r3Urefidsr4}r5ub.PKHDDTθ)celery-2.0-archived/.doctrees/faq.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X8can i change the interval of a periodic task at runtime?qNX4how can i run a task once another task has finished?qNXtasksqNX9what features are not supported when using ghettoq/stomp?q NX%queue everything and delight everyoneq X5how do i run celeryd in the background on [platform]?q NX+can i send some tasks to only some servers?q NXresultsq NXgeneralqNX5i'm having integrityerror: duplicate key errors. why?qNXuser guide: remote tasksqXtroubleshootingqNX$does celery support task priorities?qNX-what kinds of things should i use celery for?qNUcontentsqNXis celery multi-lingual?qNXcan i use natural task ids?qNX8how can i reuse the same connection when applying tasks?qNX3can i schedule tasks to execute at a specific time?qNXwhy won't my periodic task run?qNX+celeryd is not doing anything, just hangingqNX should i use retry or acks_late?qNX/the -b / --beat option to celeryd doesn't work?qNX.how can i get the task id of the current task?qNXis celery dependent on pickle?qNX!why won't celeryd run on freebsd?qNXmisconceptionsq NXis celery for django only?q!NXusing other queuesq"Xwhy aren't my tasks processed?q#NX%can i use celery with activemq/stomp?q$NX%can i cancel the execution of a task?q%NX>why aren't my remote control commands received by all workers?q&NXHi've discarded messages, but there are still messages left in the queue?q'NX#how do i discard all waiting tasks?q(NXdo i have to use amqp/rabbitmq?q)NX"how do i shut down celeryd safely?q*NXcan i execute a task by name?q+NXstompyq,Xbrokersq-NXEhow do i get the result of a task if i have the id that points there?q.NXfrequently asked questionsq/NXwindowsq0NX+celeryd keeps spawning processes at startupq1NX1mysql is throwing deadlock errors, what can i do?q2NX$django-celery can’t find settings?q3NXwhy is rabbitmq crashing?q4NXwhy won't my task run?q5NX.why is task.delay/apply*/celeryd just hanging?q6NX django-celeryq7Xcan i specify a custom task_id?q8NX0mysql - the innodb transaction model and lockingq9uUsubstitution_defsq:}q;Uparse_messagesq<]q=Ucurrent_sourceq>NU decorationq?NUautofootnote_startq@KUnameidsqA}qB(hU7can-i-change-the-interval-of-a-periodic-task-at-runtimeqChU3how-can-i-run-a-task-once-another-task-has-finishedqDhUtasksqEh U8what-features-are-not-supported-when-using-ghettoq-stompqFh U%queue-everything-and-delight-everyoneqGh U2how-do-i-run-celeryd-in-the-background-on-platformqHh U*can-i-send-some-tasks-to-only-some-serversqIh UresultsqJhUgeneralqKhU2i-m-having-integrityerror-duplicate-key-errors-whyqLhUuser-guide-remote-tasksqMhUtroubleshootingqNhU#does-celery-support-task-prioritiesqOhU,what-kinds-of-things-should-i-use-celery-forqPhUcontentsqQhUis-celery-multi-lingualqRhUcan-i-use-natural-task-idsqShU7how-can-i-reuse-the-same-connection-when-applying-tasksqThU2can-i-schedule-tasks-to-execute-at-a-specific-timeqUhUwhy-won-t-my-periodic-task-runqVhU*celeryd-is-not-doing-anything-just-hangingqWhUshould-i-use-retry-or-acks-lateqXhU)the-b-beat-option-to-celeryd-doesn-t-workqYhU-how-can-i-get-the-task-id-of-the-current-taskqZhUis-celery-dependent-on-pickleq[hU why-won-t-celeryd-run-on-freebsdq\h Umisconceptionsq]h!Uis-celery-for-django-onlyq^h"Uusing-other-queuesq_h#Uwhy-aren-t-my-tasks-processedq`h$U$can-i-use-celery-with-activemq-stompqah%U$can-i-cancel-the-execution-of-a-taskqbh&U=why-aren-t-my-remote-control-commands-received-by-all-workersqch'UFi-ve-discarded-messages-but-there-are-still-messages-left-in-the-queueqdh(U"how-do-i-discard-all-waiting-tasksqeh)Udo-i-have-to-use-amqp-rabbitmqqfh*U!how-do-i-shut-down-celeryd-safelyqgh+Ucan-i-execute-a-task-by-nameqhh,Ustompyqih-Ubrokersqjh.UDhow-do-i-get-the-result-of-a-task-if-i-have-the-id-that-points-thereqkh/Ufrequently-asked-questionsqlh0Uwindowsqmh1U+celeryd-keeps-spawning-processes-at-startupqnh2U/mysql-is-throwing-deadlock-errors-what-can-i-doqoh3U django-celery-cant-find-settingsqph4Uwhy-is-rabbitmq-crashingqqh5Uwhy-won-t-my-task-runqrh6U,why-is-task-delay-apply-celeryd-just-hangingqsh7U django-celeryqth8Ucan-i-specify-a-custom-task-idquh9U.mysql-the-innodb-transaction-model-and-lockingqvuUchildrenqw]qxcdocutils.nodes section qy)qz}q{(U rawsourceq|UUparentq}hUsourceq~cdocutils.nodes reprunicode qXA/var/build/user_builds/celery/checkouts/2.0-archived/docs/faq.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq]qhlaUnamesq]qh/auUlineqKUdocumentqhhw]q(cdocutils.nodes title q)q}q(h|XFrequently Asked Questionsqh}hzh~hhUtitleqh}q(h]h]h]h]h]uhKhhhw]qcdocutils.nodes Text qXFrequently Asked Questionsqq}q(h|hh}hubaubcdocutils.nodes topic q)q}q(h|Uh}hzh~hhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h]qhQah]qhauhKhhhw]qcdocutils.nodes bullet_list q)q}q(h|Uh}hh~NhU bullet_listqh}q(h]h]h]h]h]uhNhhhw]q(cdocutils.nodes list_item q)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]q(cdocutils.nodes paragraph q)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]qcdocutils.nodes reference q)q}q(h|Uh}q(h]qUid1qah]h]h]h]UrefidhKuh}hhw]qhXGeneralqq}q(h|XGeneralqh}hubahU referencequbahU paragraphqubh)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]qh)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]qh)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]qh)q}q(h|Uh}q(h]qUid2qah]h]h]h]UrefidhPuh}hhw]qhX-What kinds of things should I use celery for?qօq}q(h|X-What kinds of things should I use celery for?qh}hubahhubahhubahU list_itemqubahhubehhubh)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]q(h)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]qh)q}q(h|Uh}q(h]qUid3qah]h]h]h]Urefidh]uh}hhw]qhXMisconceptionsq酁q}q(h|XMisconceptionsqh}hubahhubahhubh)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]q(h)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]qh)q}q(h|Uh}q(h]h]h]h]h]uh}hhw]qh)q}q(h|Uh}q(h]qUid4qah]h]h]h]Urefidh[uh}hhw]qhXIs celery dependent on pickle?qr}r(h|XIs celery dependent on pickle?rh}hubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}hhw]rh)r}r(h|Uh}r (h]h]h]h]h]uh}jhw]r h)r }r (h|Uh}r (h]rUid5rah]h]h]h]Urefidh^uh}jhw]rhXIs celery for Django only?rr}r(h|XIs celery for Django only?rh}j ubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}hhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]r Uid6r!ah]h]h]h]Urefidhfuh}jhw]r"hXDo I have to use AMQP/RabbitMQ?r#r$}r%(h|XDo I have to use AMQP/RabbitMQ?r&h}jubahhubahhubahhubh)r'}r((h|Uh}r)(h]h]h]h]h]uh}hhw]r*h)r+}r,(h|Uh}r-(h]h]h]h]h]uh}j'hw]r.h)r/}r0(h|Uh}r1(h]r2Uid7r3ah]h]h]h]UrefidhRuh}j+hw]r4hXIs celery multi-lingual?r5r6}r7(h|XIs celery multi-lingual?r8h}j/ubahhubahhubahhubehhubehhubh)r9}r:(h|Uh}r;(h]h]h]h]h]uh}hhw]r<(h)r=}r>(h|Uh}r?(h]h]h]h]h]uh}j9hw]r@h)rA}rB(h|Uh}rC(h]rDUid8rEah]h]h]h]UrefidhNuh}j=hw]rFhXTroubleshootingrGrH}rI(h|XTroubleshootingrJh}jAubahhubahhubh)rK}rL(h|Uh}rM(h]h]h]h]h]uh}j9hw]rN(h)rO}rP(h|Uh}rQ(h]h]h]h]h]uh}jKhw]rRh)rS}rT(h|Uh}rU(h]h]h]h]h]uh}jOhw]rVh)rW}rX(h|Uh}rY(h]rZUid9r[ah]h]h]h]Urefidhouh}jShw]r\hX1MySQL is throwing deadlock errors, what can I do?r]r^}r_(h|X1MySQL is throwing deadlock errors, what can I do?r`h}jWubahhubahhubahhubh)ra}rb(h|Uh}rc(h]h]h]h]h]uh}jKhw]rdh)re}rf(h|Uh}rg(h]h]h]h]h]uh}jahw]rhh)ri}rj(h|Uh}rk(h]rlUid10rmah]h]h]h]UrefidhWuh}jehw]rnhX+celeryd is not doing anything, just hangingrorp}rq(h|X+celeryd is not doing anything, just hangingrrh}jiubahhubahhubahhubh)rs}rt(h|Uh}ru(h]h]h]h]h]uh}jKhw]rvh)rw}rx(h|Uh}ry(h]h]h]h]h]uh}jshw]rzh)r{}r|(h|Uh}r}(h]r~Uid11rah]h]h]h]Urefidhsuh}jwhw]rhX.Why is Task.delay/apply*/celeryd just hanging?rr}r(h|X/Why is Task.delay/apply\*/celeryd just hanging?rh}j{ubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jKhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid12rah]h]h]h]Urefidh\uh}jhw]rhX!Why won't celeryd run on FreeBSD?rr}r(h|X!Why won't celeryd run on FreeBSD?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jKhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid13rah]h]h]h]UrefidhLuh}jhw]r(hX I'm having rr}r(h|X I'm having rh}jubcdocutils.nodes literal r)r}r(h|X!``IntegrityError: Duplicate Key``rh}r(h]h]h]h]h]uh}jhw]rhXIntegrityError: Duplicate Keyrr}r(h|Uh}jubahUliteralrubhX errors. Why?rr}r(h|X errors. Why?rh}jubehhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jKhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid14rah]h]h]h]Urefidh`uh}jhw]rhXWhy aren't my tasks processed?rr}r(h|XWhy aren't my tasks processed?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jKhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid15rah]h]h]h]Urefidhruh}jhw]rhXWhy won't my Task run?rr}r(h|XWhy won't my Task run?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jKhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid16rah]h]h]h]UrefidhVuh}jhw]rhXWhy won't my Periodic Task run?rr}r(h|XWhy won't my Periodic Task run?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jKhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid17rah]h]h]h]Urefidheuh}jhw]rhX#How do I discard all waiting tasks?rr}r(h|X#How do I discard all waiting tasks?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jKhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r (h]r Uid18r ah]h]h]h]Urefidhduh}jhw]r hXHI've discarded messages, but there are still messages left in the queue?r r}r(h|XHI've discarded messages, but there are still messages left in the queue?rh}jubahhubahhubahhubehhubehhubh)r}r(h|Uh}r(h]h]h]h]h]uh}hhw]r(h)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid19rah]h]h]h]UrefidhJuh}jhw]rhXResultsrr }r!(h|XResultsr"h}jubahhubahhubh)r#}r$(h|Uh}r%(h]h]h]h]h]uh}jhw]r&h)r'}r((h|Uh}r)(h]h]h]h]h]uh}j#hw]r*h)r+}r,(h|Uh}r-(h]h]h]h]h]uh}j'hw]r.h)r/}r0(h|Uh}r1(h]r2Uid20r3ah]h]h]h]Urefidhkuh}j+hw]r4hXEHow do I get the result of a task if I have the ID that points there?r5r6}r7(h|XEHow do I get the result of a task if I have the ID that points there?r8h}j/ubahhubahhubahhubahhubehhubh)r9}r:(h|Uh}r;(h]h]h]h]h]uh}hhw]r<(h)r=}r>(h|Uh}r?(h]h]h]h]h]uh}j9hw]r@h)rA}rB(h|Uh}rC(h]rDUid21rEah]h]h]h]Urefidhjuh}j=hw]rFhXBrokersrGrH}rI(h|XBrokersrJh}jAubahhubahhubh)rK}rL(h|Uh}rM(h]h]h]h]h]uh}j9hw]rN(h)rO}rP(h|Uh}rQ(h]h]h]h]h]uh}jKhw]rRh)rS}rT(h|Uh}rU(h]h]h]h]h]uh}jOhw]rVh)rW}rX(h|Uh}rY(h]rZUid22r[ah]h]h]h]Urefidhquh}jShw]r\hXWhy is RabbitMQ crashing?r]r^}r_(h|XWhy is RabbitMQ crashing?r`h}jWubahhubahhubahhubh)ra}rb(h|Uh}rc(h]h]h]h]h]uh}jKhw]rdh)re}rf(h|Uh}rg(h]h]h]h]h]uh}jahw]rhh)ri}rj(h|Uh}rk(h]rlUid23rmah]h]h]h]Urefidhauh}jehw]rnhX%Can I use celery with ActiveMQ/STOMP?rorp}rq(h|X%Can I use celery with ActiveMQ/STOMP?rrh}jiubahhubahhubahhubh)rs}rt(h|Uh}ru(h]h]h]h]h]uh}jKhw]rvh)rw}rx(h|Uh}ry(h]h]h]h]h]uh}jshw]rzh)r{}r|(h|Uh}r}(h]r~Uid24rah]h]h]h]UrefidhFuh}jwhw]rhX9What features are not supported when using ghettoq/STOMP?rr}r(h|X9What features are not supported when using ghettoq/STOMP?rh}j{ubahhubahhubahhubehhubehhubh)r}r(h|Uh}r(h]h]h]h]h]uh}hhw]r(h)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid25rah]h]h]h]UrefidhEuh}jhw]rhXTasksrr}r(h|XTasksrh}jubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]r(h)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid26rah]h]h]h]UrefidhTuh}jhw]rhX8How can I reuse the same connection when applying tasks?rr}r(h|X8How can I reuse the same connection when applying tasks?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid27rah]h]h]h]Urefidhhuh}jhw]rhXCan I execute a task by name?rr}r(h|XCan I execute a task by name?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid28rah]h]h]h]UrefidhZuh}jhw]rhX.How can I get the task id of the current task?rr}r(h|X.How can I get the task id of the current task?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid29rah]h]h]h]Urefidhuuh}jhw]rhXCan I specify a custom task_id?rr}r(h|XCan I specify a custom task_id?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid30rah]h]h]h]UrefidhSuh}jhw]rhXCan I use natural task ids?rr}r(h|XCan I use natural task ids?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid31rah]h]h]h]UrefidhDuh}jhw]rhX4How can I run a task once another task has finished?rr}r(h|X4How can I run a task once another task has finished?rh}jubahhubahhubahhubh)r}r(h|Uh}r (h]h]h]h]h]uh}jhw]r h)r }r (h|Uh}r (h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid32rah]h]h]h]Urefidhbuh}j hw]rhX%Can I cancel the execution of a task?rr}r(h|X%Can I cancel the execution of a task?rh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]r h)r!}r"(h|Uh}r#(h]r$Uid33r%ah]h]h]h]Urefidhcuh}jhw]r&hX>Why aren't my remote control commands received by all workers?r'r(}r)(h|X>Why aren't my remote control commands received by all workers?r*h}j!ubahhubahhubahhubh)r+}r,(h|Uh}r-(h]h]h]h]h]uh}jhw]r.h)r/}r0(h|Uh}r1(h]h]h]h]h]uh}j+hw]r2h)r3}r4(h|Uh}r5(h]r6Uid34r7ah]h]h]h]UrefidhIuh}j/hw]r8hX+Can I send some tasks to only some servers?r9r:}r;(h|X+Can I send some tasks to only some servers?r<h}j3ubahhubahhubahhubh)r=}r>(h|Uh}r?(h]h]h]h]h]uh}jhw]r@h)rA}rB(h|Uh}rC(h]h]h]h]h]uh}j=hw]rDh)rE}rF(h|Uh}rG(h]rHUid35rIah]h]h]h]UrefidhCuh}jAhw]rJhX8Can I change the interval of a periodic task at runtime?rKrL}rM(h|X8Can I change the interval of a periodic task at runtime?rNh}jEubahhubahhubahhubh)rO}rP(h|Uh}rQ(h]h]h]h]h]uh}jhw]rRh)rS}rT(h|Uh}rU(h]h]h]h]h]uh}jOhw]rVh)rW}rX(h|Uh}rY(h]rZUid36r[ah]h]h]h]UrefidhOuh}jShw]r\hX$Does celery support task priorities?r]r^}r_(h|X$Does celery support task priorities?r`h}jWubahhubahhubahhubh)ra}rb(h|Uh}rc(h]h]h]h]h]uh}jhw]rdh)re}rf(h|Uh}rg(h]h]h]h]h]uh}jahw]rhh)ri}rj(h|Uh}rk(h]rlUid37rmah]h]h]h]UrefidhXuh}jehw]rnhX Should I use retry or acks_late?rorp}rq(h|X Should I use retry or acks_late?rrh}jiubahhubahhubahhubh)rs}rt(h|Uh}ru(h]h]h]h]h]uh}jhw]rvh)rw}rx(h|Uh}ry(h]h]h]h]h]uh}jshw]rzh)r{}r|(h|Uh}r}(h]r~Uid38rah]h]h]h]UrefidXmodule-celery.task.baseruh}jwhw]rhX3Can I schedule tasks to execute at a specific time?rr}r(h|X3Can I schedule tasks to execute at a specific time?rh}j{ubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid39rah]h]h]h]Urefidhguh}jhw]r(hXHow do I shut down rr}r(h|XHow do I shut down rh}jubj)r}r(h|X ``celeryd``rh}r(h]h]h]h]h]uh}jhw]rhXcelerydrr}r(h|Uh}jubahjubhX safely?rr}r(h|X safely?rh}jubehhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid40rah]h]h]h]UrefidhHuh}jhw]rhX5How do I run celeryd in the background on [platform]?rr}r(h|X5How do I run celeryd in the background on [platform]?rh}jubahhubahhubahhubehhubehhubh)r}r(h|Uh}r(h]h]h]h]h]uh}hhw]r(h)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid41rah]h]h]h]Urefidhmuh}jhw]rhXWindowsrr}r(h|XWindowsrh}jubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]r(h)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid42rah]h]h]h]Urefidhnuh}jhw]rhX+celeryd keeps spawning processes at startuprr}r(h|X+celeryd keeps spawning processes at startuprh}jubahhubahhubahhubh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid43rah]h]h]h]UrefidhYuh}jhw]r(hXThe rr}r(h|XThe rh}jubj)r}r(h|X``-B``rh}r(h]h]h]h]h]uh}jhw]rhX-Brr}r(h|Uh}jubahjubhX / rr}r(h|X / rh}jubj)r}r(h|X ``--beat``rh}r(h]h]h]h]h]uh}jhw]rhX--beatrr}r(h|Uh}jubahjubhX option to celeryd doesn't work?rr}r(h|X option to celeryd doesn't work?rh}jubehhubahhubahhubh)r}r (h|Uh}r (h]h]h]h]h]uh}jhw]r h)r }r (h|Uh}r(h]h]h]h]h]uh}jhw]rh)r}r(h|Uh}r(h]rUid44rah]h]h]h]Urefidhpuh}j hw]r(j)r}r(h|X``django-celery``rh}r(h]h]h]h]h]uh}jhw]rhX django-celeryrr}r(h|Uh}jubahjubhX can’t find settings?rr}r (h|X can’t find settings?r!h}jubehhubahhubahhubehhubehhubeubaubhy)r"}r#(h|Uh}hzh~hhhh}r$(h]h]h]h]r%hKah]r&hauhK hhhw]r'(h)r(}r)(h|hh}j"h~hhhh}r*(h]h]h]h]h]Urefidr+huhK hhhw]r,hXGeneralr-r.}r/(h|hh}j(ubaubhy)r0}r1(h|Uh}j"h~hhhh}r2(h]h]h]h]r3hPah]r4hauhK hhhw]r5(h)r6}r7(h|hh}j0h~hhhh}r8(h]h]h]h]h]j+huhK hhhw]r9hX-What kinds of things should I use celery for?r:r;}r<(h|hh}j6ubaubh)r=}r>(h|X}**Answer:** `Queue everything and delight everyone`_ is a good article describing why you would use a queue in a web context.h}j0h~hhhh}r?(h]h]h]h]h]uhKhhhw]r@(cdocutils.nodes strong rA)rB}rC(h|X **Answer:**h}rD(h]h]h]h]h]uh}j=hw]rEhXAnswer:rFrG}rH(h|Uh}jBubahUstrongrIubhX rJ}rK(h|X h}j=ubh)rL}rM(h|X(`Queue everything and delight everyone`_UresolvedrNKh}j=hhh}rO(UnameX%Queue everything and delight everyoneUrefurirPXIhttp://decafbad.com/blog/2008/07/04/queue-everything-and-delight-everyonerQh]h]h]h]h]uhw]rRhX%Queue everything and delight everyonerSrT}rU(h|Uh}jLubaubhXI is a good article describing why you would use a queue in a web context.rVrW}rX(h|XI is a good article describing why you would use a queue in a web context.h}j=ubeubcdocutils.nodes target rY)rZ}r[(h|Xz.. _`Queue everything and delight everyone`: http://decafbad.com/blog/2008/07/04/queue-everything-and-delight-everyoneU referencedr\Kh}j0h~hhUtargetr]h}r^(jPjQh]r_hGah]h]h]h]r`h auhKhhhw]ubh)ra}rb(h|X These are some common use cases:rch}j0h~hhhh}rd(h]h]h]h]h]uhKhhhw]rehX These are some common use cases:rfrg}rh(h|jch}jaubaubh)ri}rj(h|Uh}j0h~hhhh}rk(UbulletrlX*h]h]h]h]h]uhKhhhw]rm(h)rn}ro(h|X Running something in the background. For example, to finish the web request as soon as possible, then update the users page incrementally. This gives the user the impression of good performane and "snappiness", even though the real work might actually take some time. h}jih~hhhh}rp(h]h]h]h]h]uhNhhhw]rqh)rr}rs(h|X Running something in the background. For example, to finish the web request as soon as possible, then update the users page incrementally. This gives the user the impression of good performane and "snappiness", even though the real work might actually take some time.rth}jnh~hhhh}ru(h]h]h]h]h]uhKhw]rvhX Running something in the background. For example, to finish the web request as soon as possible, then update the users page incrementally. This gives the user the impression of good performane and "snappiness", even though the real work might actually take some time.rwrx}ry(h|jth}jrubaubaubh)rz}r{(h|X6Running something after the web request has finished. h}jih~hhhh}r|(h]h]h]h]h]uhNhhhw]r}h)r~}r(h|X5Running something after the web request has finished.rh}jzh~hhhh}r(h]h]h]h]h]uhKhw]rhX5Running something after the web request has finished.rr}r(h|jh}j~ubaubaubh)r}r(h|XQMaking sure something is done, by executing it asynchronously and using retries. h}jih~hhhh}r(h]h]h]h]h]uhNhhhw]rh)r}r(h|XPMaking sure something is done, by executing it asynchronously and using retries.rh}jh~hhhh}r(h]h]h]h]h]uhKhw]rhXPMaking sure something is done, by executing it asynchronously and using retries.rr}r(h|jh}jubaubaubh)r}r(h|XScheduling periodic work. h}jih~hhhh}r(h]h]h]h]h]uhNhhhw]rh)r}r(h|XScheduling periodic work.rh}jh~hhhh}r(h]h]h]h]h]uhK hw]rhXScheduling periodic work.rr}r(h|jh}jubaubaubeubh)r}r(h|XAnd to some degree:rh}j0h~hhhh}r(h]h]h]h]h]uhK"hhhw]rhXAnd to some degree:rr}r(h|jh}jubaubh)r}r(h|Uh}j0h~hhhh}r(jlX*h]h]h]h]h]uhK$hhhw]r(h)r}r(h|XDistributed computing. h}jh~hhhh}r(h]h]h]h]h]uhNhhhw]rh)r}r(h|XDistributed computing.rh}jh~hhhh}r(h]h]h]h]h]uhK$hw]rhXDistributed computing.rr}r(h|jh}jubaubaubh)r}r(h|XParallel execution. h}jh~hhhh}r(h]h]h]h]h]uhNhhhw]rh)r}r(h|XParallel execution.rh}jh~hhhh}r(h]h]h]h]h]uhK&hw]rhXParallel execution.rr}r(h|jh}jubaubaubeubeubeubhy)r}r(h|Uh}hzh~hhhh}r(h]h]h]h]rh]ah]rh auhK*hhhw]r(h)r}r(h|hh}jh~hhhh}r(h]h]h]h]h]j+huhK*hhhw]rhXMisconceptionsrr}r(h|hh}jubaubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rh[ah]rhauhK-hhhw]r(h)r}r(h|jh}jh~hhhh}r(h]h]h]h]h]j+huhK-hhhw]rhXIs celery dependent on pickle?rr}r(h|jh}jubaubh)r}r(h|X**Answer:** No.rh}jh~hhhh}r(h]h]h]h]h]uhK/hhhw]r(jA)r}r(h|X **Answer:**h}r(h]h]h]h]h]uh}jhw]rhXAnswer:rr}r(h|Uh}jubahjIubhX No.rr}r(h|X No.h}jubeubh)r}r(h|XvCelery can support any serialization scheme and has support for JSON/YAML and Pickle by default. You can even send one task using pickle, and another one with JSON seamlessly, this is because every task is associated with a content-type. The default serialization scheme is pickle because it's the most used, and it has support for sending complex objects as task arguments.rh}jh~hhhh}r(h]h]h]h]h]uhK1hhhw]rhXvCelery can support any serialization scheme and has support for JSON/YAML and Pickle by default. You can even send one task using pickle, and another one with JSON seamlessly, this is because every task is associated with a content-type. The default serialization scheme is pickle because it's the most used, and it has support for sending complex objects as task arguments.rr}r(h|jh}jubaubh)r}r(h|XYou can set a global default serializer, the default serializer for a particular Task, or even what serializer to use when sending a single task instance.rh}jh~hhhh}r(h]h]h]h]h]uhK7hhhw]rhXYou can set a global default serializer, the default serializer for a particular Task, or even what serializer to use when sending a single task instance.rr}r(h|jh}jubaubeubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rh^ah]rh!auhKhhhw]r (jA)r }r(h|X **Answer:**h}r(h]h]h]h]h]uh}jhw]rhXAnswer:rr}r(h|Uh}j ubahjIubhX No.rr}r(h|X No.h}jubeubh)r}r(h|XqCelery does not depend on Django anymore. To use Celery with Django you have to use the `django-celery`_ package.h}jh~hhhh}r(h]h]h]h]h]uhK@hhhw]r(hXXCelery does not depend on Django anymore. To use Celery with Django you have to use the rr}r(h|XXCelery does not depend on Django anymore. To use Celery with Django you have to use the h}jubh)r}r(h|X`django-celery`_jNKh}jhhh}r (UnameX django-celeryr!jPX)http://pypi.python.org/pypi/django-celeryr"h]h]h]h]h]uhw]r#hX django-celeryr$r%}r&(h|Uh}jubaubhX package.r'r(}r)(h|X package.h}jubeubjY)r*}r+(h|X>.. _`django-celery`: http://pypi.python.org/pypi/django-celeryj\Kh}jh~hhj]h}r,(jPj"h]r-htah]h]h]h]r.h7auhKChhhw]ubeubhy)r/}r0(h|Uh}jh~hhhh}r1(h]h]h]h]r2hfah]r3h)auhKFhhhw]r4(h)r5}r6(h|j&h}j/h~hhhh}r7(h]h]h]h]h]j+j!uhKFhhhw]r8hXDo I have to use AMQP/RabbitMQ?r9r:}r;(h|j&h}j5ubaubh)r<}r=(h|X**Answer**: No.r>h}j/h~hhhh}r?(h]h]h]h]h]uhKHhhhw]r@(jA)rA}rB(h|X **Answer**h}rC(h]h]h]h]h]uh}j<hw]rDhXAnswerrErF}rG(h|Uh}jAubahjIubhX: No.rHrI}rJ(h|X: No.h}j<ubeubh)rK}rL(h|XEYou can also use Redis or an SQL database, see `Using other queues`_.h}j/h~hhhh}rM(h]h]h]h]h]uhKJhhhw]rN(hX/You can also use Redis or an SQL database, see rOrP}rQ(h|X/You can also use Redis or an SQL database, see h}jKubh)rR}rS(h|X`Using other queues`_jNKh}jKhhh}rT(UnameXUsing other queuesjPX7http://ask.github.com/celery/tutorials/otherqueues.htmlrUh]h]h]h]h]uhw]rVhXUsing other queuesrWrX}rY(h|Uh}jRubaubhX.rZ}r[(h|X.h}jKubeubjY)r\}r](h|XU.. _`Using other queues`: http://ask.github.com/celery/tutorials/otherqueues.htmlj\Kh}j/h~hhj]h}r^(jPjUh]r_h_ah]h]h]h]r`h"auhKMhhhw]ubh)ra}rb(h|X?Redis or a database won't perform as well as an AMQP broker. If you have strict reliability requirements you are encouraged to use RabbitMQ or another AMQP broker. Redis/database also use polling, so they are likely to consume more resources. However, if you for some reason are not able to use AMQP, feel free to use these alternatives. They will probably work fine for most use cases, and note that the above points are not specific to celery; If using Redis/database as a queue worked fine for you before, it probably will now. You can always upgrade later if you need to.rch}j/h~hhhh}rd(h]h]h]h]h]uhKPhhhw]rehX?Redis or a database won't perform as well as an AMQP broker. If you have strict reliability requirements you are encouraged to use RabbitMQ or another AMQP broker. Redis/database also use polling, so they are likely to consume more resources. However, if you for some reason are not able to use AMQP, feel free to use these alternatives. They will probably work fine for most use cases, and note that the above points are not specific to celery; If using Redis/database as a queue worked fine for you before, it probably will now. You can always upgrade later if you need to.rfrg}rh(h|jch}jaubaubeubhy)ri}rj(h|Uh}jh~hhhh}rk(h]h]h]h]rlhRah]rmhauhK[hhhw]rn(h)ro}rp(h|j8h}jih~hhhh}rq(h]h]h]h]h]j+j3uhK[hhhw]rrhXIs celery multi-lingual?rsrt}ru(h|j8h}joubaubh)rv}rw(h|X**Answer:** Yes.rxh}jih~hhhh}ry(h]h]h]h]h]uhK]hhhw]rz(jA)r{}r|(h|X **Answer:**h}r}(h]h]h]h]h]uh}jvhw]r~hXAnswer:rr}r(h|Uh}j{ubahjIubhX Yes.rr}r(h|X Yes.h}jvubeubh)r}r(h|Xceleryd is an implementation of celery in python. If the language has an AMQP client, there shouldn't be much work to create a worker in your language. A celery worker is just a program connecting to the broker to consume messages. There's no other communication involved.rh}jih~hhhh}r(h]h]h]h]h]uhK_hhhw]rhXceleryd is an implementation of celery in python. If the language has an AMQP client, there shouldn't be much work to create a worker in your language. A celery worker is just a program connecting to the broker to consume messages. There's no other communication involved.rr}r(h|jh}jubaubh)r}r(h|XAlso, there's another way to be language indepedent, and that is to use REST tasks, instead of your tasks being functions, they're URLs. With this information you can even create simple web servers that enable preloading of code. See: `User Guide: Remote Tasks`_.h}jih~hhhh}r(h]h]h]h]h]uhKdhhhw]r(hXAlso, there's another way to be language indepedent, and that is to use REST tasks, instead of your tasks being functions, they're URLs. With this information you can even create simple web servers that enable preloading of code. See: rr}r(h|XAlso, there's another way to be language indepedent, and that is to use REST tasks, instead of your tasks being functions, they're URLs. With this information you can even create simple web servers that enable preloading of code. See: h}jubh)r}r(h|X`User Guide: Remote Tasks`_jNKh}jhhh}r(UnameXUser Guide: Remote TasksjPX8http://ask.github.com/celery/userguide/remote-tasks.htmlrh]h]h]h]h]uhw]rhXUser Guide: Remote Tasksrr}r(h|Uh}jubaubhX.r}r(h|X.h}jubeubjY)r}r(h|X\.. _`User Guide: Remote Tasks`: http://ask.github.com/celery/userguide/remote-tasks.htmlj\Kh}jih~hhj]h}r(jPjh]rhMah]h]h]h]rhauhKihhhw]ubeubeubhy)r}r(h|Uh}hzh~hhhh}r(h]h]h]h]rhNah]rhauhKnhhhw]r(h)r}r(h|jJh}jh~hhhh}r(h]h]h]h]h]j+jEuhKnhhhw]rhXTroubleshootingrr}r(h|jJh}jubaubhy)r}r(h|Uj\Kh}jh~hhhh}r(h]h]h]h]rhoah]rh2auhKqhhhw]r(h)r}r(h|j`h}jh~hhhh}r(h]h]h]h]h]j+j[uhKqhhhw]rhX1MySQL is throwing deadlock errors, what can I do?rr}r(h|j`h}jubaubh)r}r(h|X**Answer:** MySQL has default isolation level set to ``REPEATABLE-READ``, if you don't really need that, set it to ``READ-COMMITTED``. You can do that by adding the following to your ``my.cnf``::h}jh~hhhh}r(h]h]h]h]h]uhKshhhw]r(jA)r}r(h|X **Answer:**h}r(h]h]h]h]h]uh}jhw]rhXAnswer:rr}r(h|Uh}jubahjIubhX* MySQL has default isolation level set to rr}r(h|X* MySQL has default isolation level set to h}jubj)r}r(h|X``REPEATABLE-READ``h}r(h]h]h]h]h]uh}jhw]rhXREPEATABLE-READrr}r(h|Uh}jubahjubhX+, if you don't really need that, set it to rr}r(h|X+, if you don't really need that, set it to h}jubj)r}r(h|X``READ-COMMITTED``h}r(h]h]h]h]h]uh}jhw]rhXREAD-COMMITTEDrr}r(h|Uh}jubahjubhX2. You can do that by adding the following to your rr}r(h|X2. You can do that by adding the following to your h}jubj)r}r(h|X ``my.cnf``h}r(h]h]h]h]h]uh}jhw]rhXmy.cnfrr}r(h|Uh}jubahjubhX:r}r(h|X:h}jubeubcdocutils.nodes literal_block r)r}r(h|X/[mysqld] transaction-isolation = READ-COMMITTEDh}jh~hhU literal_blockrh}r(U xml:spacerUpreserverh]h]h]h]h]uhKwhhhw]rhX/[mysqld] transaction-isolation = READ-COMMITTEDrr}r(h|Uh}jubaubh)r}r(h|XFor more information about InnoDBs transaction model see `MySQL - The InnoDB Transaction Model and Locking`_ in the MySQL user manual.h}jh~hhhh}r(h]h]h]h]h]uhKzhhhw]r(hX9For more information about InnoDBs transaction model see rr}r(h|X9For more information about InnoDBs transaction model see h}jubh)r}r(h|X3`MySQL - The InnoDB Transaction Model and Locking`_jNKh}jhhh}r(UnameX0MySQL - The InnoDB Transaction Model and LockingjPXDhttp://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.htmlrh]h]h]h]h]uhw]rhX0MySQL - The InnoDB Transaction Model and Lockingrr}r(h|Uh}jubaubhX in the MySQL user manual.rr}r(h|X in the MySQL user manual.h}jubeubh)r}r(h|X=(Thanks to Honza Kral and Anton Tsigularov for this solution)rh}jh~hhhh}r(h]h]h]h]h]uhK}hhhw]r hX=(Thanks to Honza Kral and Anton Tsigularov for this solution)r r }r (h|jh}jubaubjY)r }r(h|X|.. _`MySQL - The InnoDB Transaction Model and Locking`: http://dev.mysql.com/doc/refman/5.1/en/innodb-transaction-model.htmlj\Kh}jh~hhj]h}r(jPjh]rhvah]h]h]h]rh9auhKhhhw]ubeubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rhWah]rhauhKhhhw]r(h)r}r(h|jrh}jh~hhhh}r(h]h]h]h]h]j+jmuhKhhhw]rhX+celeryd is not doing anything, just hangingrr}r(h|jrh}jubaubcdocutils.nodes definition_list r)r }r!(h|Uh}jh~hhUdefinition_listr"h}r#(h]h]h]h]h]uhNhhhw]r$cdocutils.nodes definition_list_item r%)r&}r'(h|Xt**Answer:** See `MySQL is throwing deadlock errors, what can I do?`_. or `Why is Task.delay/apply\* just hanging?`. h}j h~hhUdefinition_list_itemr(h}r)(h]h]h]h]h]uhKhw]r*(cdocutils.nodes term r+)r,}r-(h|XE**Answer:** See `MySQL is throwing deadlock errors, what can I do?`_.r.h}j&h~hhUtermr/h}r0(h]h]h]h]h]uhKhw]r1(jA)r2}r3(h|X **Answer:**h}r4(h]h]h]h]h]uh}j,hw]r5hXAnswer:r6r7}r8(h|Uh}j2ubahjIubhX See r9r:}r;(h|X See h}j,ubh)r<}r=(h|X4`MySQL is throwing deadlock errors, what can I do?`_jNKh}j,hhh}r>(UnameX1MySQL is throwing deadlock errors, what can I do?h]h]h]h]h]j+houhw]r?hX1MySQL is throwing deadlock errors, what can I do?r@rA}rB(h|Uh}j<ubaubhX.rC}rD(h|X.h}j,ubeubcdocutils.nodes definition rE)rF}rG(h|Uh}rH(h]h]h]h]h]uh}j&hw]rIh)rJ}rK(h|X-or `Why is Task.delay/apply\* just hanging?`.h}jFh~hhhh}rL(h]h]h]h]h]uhKhw]rM(hXor rNrO}rP(h|Xor h}jJubcdocutils.nodes title_reference rQ)rR}rS(h|X)`Why is Task.delay/apply\* just hanging?`h}rT(h]h]h]h]h]uh}jJhw]rUhX&Why is Task.delay/apply* just hanging?rVrW}rX(h|Uh}jRubahUtitle_referencerYubhX.rZ}r[(h|X.h}jJubeubahU definitionr\ubeubaubeubhy)r]}r^(h|Uh}jh~hhhh}r_(h]h]h]h]r`hsah]rah6auhKhhhw]rb(h)rc}rd(h|X/Why is Task.delay/apply\*/celeryd just hanging?reh}j]h~hhhh}rf(h]h]h]h]h]j+juhKhhhw]rghX.Why is Task.delay/apply*/celeryd just hanging?rhri}rj(h|jh}jcubaubh)rk}rl(h|Xt**Answer:** There is a bug in some AMQP clients that will make it hang if it's not able to authenticate the current user, the password doesn't match or the user does not have access to the virtual host specified. Be sure to check your broker logs (for RabbitMQ that is ``/var/log/rabbitmq/rabbit.log`` on most systems), it usually contains a message describing the reason.h}j]h~hhhh}rm(h]h]h]h]h]uhKhhhw]rn(jA)ro}rp(h|X **Answer:**h}rq(h]h]h]h]h]uh}jkhw]rrhXAnswer:rsrt}ru(h|Uh}joubahjIubhX There is a bug in some AMQP clients that will make it hang if it's not able to authenticate the current user, the password doesn't match or the user does not have access to the virtual host specified. Be sure to check your broker logs (for RabbitMQ that is rvrw}rx(h|X There is a bug in some AMQP clients that will make it hang if it's not able to authenticate the current user, the password doesn't match or the user does not have access to the virtual host specified. Be sure to check your broker logs (for RabbitMQ that is h}jkubj)ry}rz(h|X ``/var/log/rabbitmq/rabbit.log``h}r{(h]h]h]h]h]uh}jkhw]r|hX/var/log/rabbitmq/rabbit.logr}r~}r(h|Uh}jyubahjubhXG on most systems), it usually contains a message describing the reason.rr}r(h|XG on most systems), it usually contains a message describing the reason.h}jkubeubeubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rh\ah]rhauhKhhhw]r(h)r}r(h|jh}jh~hhhh}r(h]h]h]h]h]j+juhKhhhw]rhX!Why won't celeryd run on FreeBSD?rr}r(h|jh}jubaubh)r}r(h|X**Answer:** multiprocessing.Pool requires a working POSIX semaphore implementation which isn't enabled in FreeBSD by default. You have to enable POSIX semaphores in the kernel and manually recompile multiprocessing.h}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(jA)r}r(h|X **Answer:**h}r(h]h]h]h]h]uh}jhw]rhXAnswer:rr}r(h|Uh}jubahjIubhX multiprocessing.Pool requires a working POSIX semaphore implementation which isn't enabled in FreeBSD by default. You have to enable POSIX semaphores in the kernel and manually recompile multiprocessing.rr}r(h|X multiprocessing.Pool requires a working POSIX semaphore implementation which isn't enabled in FreeBSD by default. You have to enable POSIX semaphores in the kernel and manually recompile multiprocessing.h}jubeubh)r}r(h|XLuckily, Viktor Petersson has written a tutorial to get you started with Celery on FreeBSD here: http://www.playingwithwire.com/2009/10/how-to-get-celeryd-to-work-on-freebsd/h}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(hXaLuckily, Viktor Petersson has written a tutorial to get you started with Celery on FreeBSD here: rr}r(h|XaLuckily, Viktor Petersson has written a tutorial to get you started with Celery on FreeBSD here: h}jubh)r}r(h|XMhttp://www.playingwithwire.com/2009/10/how-to-get-celeryd-to-work-on-freebsd/rh}r(Urefurijh]h]h]h]h]uh}jhw]rhXMhttp://www.playingwithwire.com/2009/10/how-to-get-celeryd-to-work-on-freebsd/rr}r(h|Uh}jubahhubeubeubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rhLah]rhauhKhhhw]r(h)r}r(h|X9I'm having ``IntegrityError: Duplicate Key`` errors. Why?rh}jh~hhhh}r(h]h]h]h]h]j+juhKhhhw]r(hX I'm having rr}r(h|jh}jubj)r}r(h|jh}r(h]h]h]h]h]uh}jhw]rhXIntegrityError: Duplicate Keyrr}r(h|Uh}jubahjubhX errors. Why?rr}r(h|jh}jubeubh)r}r(h|X^**Answer:** See `MySQL is throwing deadlock errors, what can I do?`_. Thanks to howsthedotcom.h}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(jA)r}r(h|X **Answer:**h}r(h]h]h]h]h]uh}jhw]rhXAnswer:rr}r(h|Uh}jubahjIubhX See rr}r(h|X See h}jubh)r}r(h|X4`MySQL is throwing deadlock errors, what can I do?`_jNKh}jhhh}r(UnameX1MySQL is throwing deadlock errors, what can I do?h]h]h]h]h]j+houhw]rhX1MySQL is throwing deadlock errors, what can I do?rr}r(h|Uh}jubaubhX. Thanks to howsthedotcom.rr}r(h|X. Thanks to howsthedotcom.h}jubeubeubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rh`ah]rh#auhKhhhw]r(h)r}r(h|jh}jh~hhhh}r(h]h]h]h]h]j+juhKhhhw]rhXWhy aren't my tasks processed?rr}r(h|jh}jubaubh)r}r(h|Xy**Answer:** With RabbitMQ you can see how many consumers are currently receiving tasks by running the following command::h}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(jA)r}r(h|X **Answer:**h}r(h]h]h]h]h]uh}jhw]rhXAnswer:rr}r(h|Uh}jubahjIubhXm With RabbitMQ you can see how many consumers are currently receiving tasks by running the following command:rr}r(h|Xm With RabbitMQ you can see how many consumers are currently receiving tasks by running the following command:h}jubeubj)r}r(h|Xf$ rabbitmqctl list_queues -p name messages consumers Listing queues ... celery 2891 2h}jh~hhjh}r(jjh]h]h]h]h]uhKhhhw]rhXf$ rabbitmqctl list_queues -p name messages consumers Listing queues ... celery 2891 2rr}r(h|Uh}jubaubh)r}r(h|X}This shows that there's 2891 messages waiting to be processed in the task queue, and there are two consumers processing them.rh}jh~hhhh}r(h]h]h]h]h]uhKhhhw]rhX}This shows that there's 2891 messages waiting to be processed in the task queue, and there are two consumers processing them.rr}r(h|jh}jubaubh)r}r(h|XOne reason that the queue is never emptied could be that you have a stale celery process taking the messages hostage. This could happen if celeryd wasn't properly shut down.r h}jh~hhhh}r (h]h]h]h]h]uhKhhhw]r hXOne reason that the queue is never emptied could be that you have a stale celery process taking the messages hostage. This could happen if celeryd wasn't properly shut down.r r }r(h|j h}jubaubh)r}r(h|XWhen a message is recieved by a worker the broker waits for it to be acknowledged before marking the message as processed. The broker will not re-send that message to another consumer until the consumer is shut down properly.rh}jh~hhhh}r(h]h]h]h]h]uhKhhhw]rhXWhen a message is recieved by a worker the broker waits for it to be acknowledged before marking the message as processed. The broker will not re-send that message to another consumer until the consumer is shut down properly.rr}r(h|jh}jubaubh)r}r(h|XPIf you hit this problem you have to kill all workers manually and restart them::h}jh~hhhh}r(h]h]h]h]h]uhKhhhw]rhXOIf you hit this problem you have to kill all workers manually and restart them:rr}r(h|XOIf you hit this problem you have to kill all workers manually and restart them:h}jubaubj)r}r(h|X7ps auxww | grep celeryd | awk '{print $2}' | xargs killh}jh~hhjh}r (jjh]h]h]h]h]uhKhhhw]r!hX7ps auxww | grep celeryd | awk '{print $2}' | xargs killr"r#}r$(h|Uh}jubaubh)r%}r&(h|XYou might have to wait a while until all workers have finished the work they're doing. If it's still hanging after a long time you can kill them by force with::h}jh~hhhh}r'(h]h]h]h]h]uhKhhhw]r(hXYou might have to wait a while until all workers have finished the work they're doing. If it's still hanging after a long time you can kill them by force with:r)r*}r+(h|XYou might have to wait a while until all workers have finished the work they're doing. If it's still hanging after a long time you can kill them by force with:h}j%ubaubj)r,}r-(h|X:ps auxww | grep celeryd | awk '{print $2}' | xargs kill -9h}jh~hhjh}r.(jjh]h]h]h]h]uhKhhhw]r/hX:ps auxww | grep celeryd | awk '{print $2}' | xargs kill -9r0r1}r2(h|Uh}j,ubaubeubhy)r3}r4(h|Uj\Kh}jh~hhhh}r5(h]h]h]h]r6hrah]r7h5auhKhhhw]r8(h)r9}r:(h|jh}j3h~hhhh}r;(h]h]h]h]h]j+juhKhhhw]r<hXWhy won't my Task run?r=r>}r?(h|jh}j9ubaubh)r@}rA(h|XT**Answer:** There might be syntax errors preventing the tasks module being imported.rBh}j3h~hhhh}rC(h]h]h]h]h]uhKhhhw]rD(jA)rE}rF(h|X **Answer:**h}rG(h]h]h]h]h]uh}j@hw]rHhXAnswer:rIrJ}rK(h|Uh}jEubahjIubhXI There might be syntax errors preventing the tasks module being imported.rLrM}rN(h|XI There might be syntax errors preventing the tasks module being imported.h}j@ubeubh)rO}rP(h|XRYou can find out if celery is able to run the task by executing the task manually:rQh}j3h~hhhh}rR(h]h]h]h]h]uhKhhhw]rShXRYou can find out if celery is able to run the task by executing the task manually:rTrU}rV(h|jQh}jOubaubcdocutils.nodes doctest_block rW)rX}rY(h|XE>>> from myapp.tasks import MyPeriodicTask >>> MyPeriodicTask.delay()h}j3h~NhU doctest_blockrZh}r[(jjh]h]h]h]h]uhNhhhw]r\hXE>>> from myapp.tasks import MyPeriodicTask >>> MyPeriodicTask.delay()r]r^}r_(h|Uh}jXubaubh)r`}ra(h|XaWatch celeryds logfile to see if it's able to find the task, or if some other error is happening.rbh}j3h~hhhh}rc(h]h]h]h]h]uhKhhhw]rdhXaWatch celeryds logfile to see if it's able to find the task, or if some other error is happening.rerf}rg(h|jbh}j`ubaubeubhy)rh}ri(h|Uh}jh~hhhh}rj(h]h]h]h]rkhVah]rlhauhKhhhw]rm(h)rn}ro(h|jh}jhh~hhhh}rp(h]h]h]h]h]j+juhKhhhw]rqhXWhy won't my Periodic Task run?rrrs}rt(h|jh}jnubaubh)ru}rv(h|X***Answer:** See `Why won't my Task run?`_.rwh}jhh~hhhh}rx(h]h]h]h]h]uhKhhhw]ry(jA)rz}r{(h|X **Answer:**h}r|(h]h]h]h]h]uh}juhw]r}hXAnswer:r~r}r(h|Uh}jzubahjIubhX See rr}r(h|X See h}juubh)r}r(h|X`Why won't my Task run?`_jNKh}juhhh}r(UnameXWhy won't my Task run?h]h]h]h]h]j+hruhw]rhXWhy won't my Task run?rr}r(h|Uh}jubaubhX.r}r(h|X.h}juubeubeubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rheah]rh(auhKhhhw]r(h)r}r(h|jh}jh~hhhh}r(h]h]h]h]h]j+juhKhhhw]rhX#How do I discard all waiting tasks?rr}r(h|jh}jubaubh)r}r(h|X9**Answer:** Use ``celery.task.discard_all()``, like this:rh}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(jA)r}r(h|X **Answer:**h}r(h]h]h]h]h]uh}jhw]rhXAnswer:rr}r(h|Uh}jubahjIubhX Use rr}r(h|X Use h}jubj)r}r(h|X``celery.task.discard_all()``h}r(h]h]h]h]h]uh}jhw]rhXcelery.task.discard_all()rr}r(h|Uh}jubahjubhX , like this:rr}r(h|X , like this:h}jubeubjW)r}r(h|X>>>> from celery.task import discard_all >>> discard_all() 1753h}jh~NhjZh}r(jjh]h]h]h]h]uhNhhhw]rhX>>>> from celery.task import discard_all >>> discard_all() 1753rr}r(h|Uh}jubaubh)r}r(h|X6The number ``1753`` is the number of messages deleted.rh}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(hX The number rr}r(h|X The number h}jubj)r}r(h|X``1753``h}r(h]h]h]h]h]uh}jhw]rhX1753rr}r(h|Uh}jubahjubhX# is the number of messages deleted.rr}r(h|X# is the number of messages deleted.h}jubeubh)r}r(h|X`You can also start celeryd with the ``--discard`` argument which will accomplish the same thing.h}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(hX$You can also start celeryd with the rr}r(h|X$You can also start celeryd with the h}jubj)r}r(h|X ``--discard``h}r(h]h]h]h]h]uh}jhw]rhX --discardrr}r(h|Uh}jubahjubhX/ argument which will accomplish the same thing.rr}r(h|X/ argument which will accomplish the same thing.h}jubeubeubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rhdah]rh'auhKhhhw]r(h)r}r(h|jh}jh~hhhh}r(h]h]h]h]h]j+j uhKhhhw]rhXHI've discarded messages, but there are still messages left in the queue?rr}r(h|jh}jubaubh)r}r(h|X**Answer:** Tasks are acknowledged (removed from the queue) as soon as they are actually executed. After the worker has received a task, it will take some time until it is actually executed, especially if there are a lot of tasks already waiting for execution. Messages that are not acknowledged are hold on to by the worker until it closes the connection to the broker (AMQP server). When that connection is closed (e.g because the worker was stopped) the tasks will be re-sent by the broker to the next available worker (or the same worker when it has been restarted), so to properly purge the queue of waiting tasks you have to stop all the workers, and then discard the tasks using ``discard_all``.h}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(jA)r}r(h|X **Answer:**h}r(h]h]h]h]h]uh}jhw]rhXAnswer:rr}r(h|Uh}jubahjIubhX Tasks are acknowledged (removed from the queue) as soon as they are actually executed. After the worker has received a task, it will take some time until it is actually executed, especially if there are a lot of tasks already waiting for execution. Messages that are not acknowledged are hold on to by the worker until it closes the connection to the broker (AMQP server). When that connection is closed (e.g because the worker was stopped) the tasks will be re-sent by the broker to the next available worker (or the same worker when it has been restarted), so to properly purge the queue of waiting tasks you have to stop all the workers, and then discard the tasks using rr}r(h|X Tasks are acknowledged (removed from the queue) as soon as they are actually executed. After the worker has received a task, it will take some time until it is actually executed, especially if there are a lot of tasks already waiting for execution. Messages that are not acknowledged are hold on to by the worker until it closes the connection to the broker (AMQP server). When that connection is closed (e.g because the worker was stopped) the tasks will be re-sent by the broker to the next available worker (or the same worker when it has been restarted), so to properly purge the queue of waiting tasks you have to stop all the workers, and then discard the tasks using h}jubj)r}r(h|X``discard_all``h}r(h]h]h]h]h]uh}jhw]rhX discard_allrr}r(h|Uh}jubahjubhX.r}r(h|X.h}jubeubeubeubhy)r}r(h|Uh}hzh~hhhh}r(h]h]h]h]rhJah]rh auhKhhhw]r(h)r}r(h|j"h}jh~hhhh}r (h]h]h]h]h]j+juhKhhhw]r hXResultsr r }r (h|j"h}jubaubhy)r}r(h|Uh}jh~hhhh}r(h]h]h]h]rhkah]rh.auhKhhhw]r(h)r}r(h|j8h}jh~hhhh}r(h]h]h]h]h]j+j3uhKhhhw]rhXEHow do I get the result of a task if I have the ID that points there?rr}r(h|j8h}jubaubh)r}r(h|X&**Answer**: Use ``Task.AsyncResult``::rh}jh~hhhh}r(h]h]h]h]h]uhKhhhw]r(jA)r }r!(h|X **Answer**h}r"(h]h]h]h]h]uh}jhw]r#hXAnswerr$r%}r&(h|Uh}j ubahjIubhX: Use r'r(}r)(h|X: Use h}jubj)r*}r+(h|X``Task.AsyncResult``h}r,(h]h]h]h]h]uh}jhw]r-hXTask.AsyncResultr.r/}r0(h|Uh}j*ubahjubhX:r1}r2(h|X:h}jubeubj)r3}r4(h|X9>>> result = MyTask.AsyncResult(task_id) >>> result.get()h}jh~hhjh}r5(jjh]h]h]h]h]uhKhhhw]r6hX9>>> result = MyTask.AsyncResult(task_id) >>> result.get()r7r8}r9(h|Uh}j3ubaubh)r:}r;(h|XlThis will give you a :class:`celery.result.BaseAsyncResult` instance using the tasks current result backend.h}jh~hhhh}r<(h]h]h]h]h]uhKhhhw]r=(hXThis will give you a r>r?}r@(h|XThis will give you a h}j:ubcsphinx.addnodes pending_xref rA)rB}rC(h|X&:class:`celery.result.BaseAsyncResult`rDh}j:h~hhU pending_xrefrEh}rF(UreftypeXclassUrefwarnrGU reftargetrHXcelery.result.BaseAsyncResultU refdomainXpyrIh]h]U refexplicith]h]h]UrefdocrJXfaqrKUpy:classrLNU py:modulerMNuhKhw]rNj)rO}rP(h|jDh}rQ(h]h]rR(UxrefrSjIXpy-classrTeh]h]h]uh}jBhw]rUhXcelery.result.BaseAsyncResultrVrW}rX(h|Uh}jOubahjubaubhX1 instance using the tasks current result backend.rYrZ}r[(h|X1 instance using the tasks current result backend.h}j:ubeubh)r\}r](h|XoIf you need to specify a custom result backend you should use :class:`celery.result.BaseAsyncResult` directly::h}jh~hhhh}r^(h]h]h]h]h]uhMhhhw]r_(hX>If you need to specify a custom result backend you should use r`ra}rb(h|X>If you need to specify a custom result backend you should use h}j\ubjA)rc}rd(h|X&:class:`celery.result.BaseAsyncResult`reh}j\h~hhjEh}rf(UreftypeXclassjGjHXcelery.result.BaseAsyncResultU refdomainXpyrgh]h]U refexplicith]h]h]jJjKjLNjMNuhMhw]rhj)ri}rj(h|jeh}rk(h]h]rl(jSjgXpy-classrmeh]h]h]uh}jchw]rnhXcelery.result.BaseAsyncResultrorp}rq(h|Uh}jiubahjubaubhX directly:rrrs}rt(h|X directly:h}j\ubeubj)ru}rv(h|Xq>>> from celery.result import BaseAsyncResult >>> result = BaseAsyncResult(task_id, backend=...) >>> result.get()h}jh~hhjh}rw(jjh]h]h]h]h]uhMhhhw]rxhXq>>> from celery.result import BaseAsyncResult >>> result = BaseAsyncResult(task_id, backend=...) >>> result.get()ryrz}r{(h|Uh}juubaubeubeubhy)r|}r}(h|Uh}hzh~hhhh}r~(h]h]h]h]rhjah]rh-auhMhhhw]r(h)r}r(h|jJh}j|h~hhhh}r(h]h]h]h]h]j+jEuhMhhhw]rhXBrokersrr}r(h|jJh}jubaubhy)r}r(h|Uh}j|h~hhhh}r(h]h]h]h]rhqah]rh4auhM hhhw]r(h)r}r(h|j`h}jh~hhhh}r(h]h]h]h]h]j+j[uhM hhhw]rhXWhy is RabbitMQ crashing?rr}r(h|j`h}jubaubh)r}r(h|XRabbitMQ will crash if it runs out of memory. This will be fixed in a future release of RabbitMQ. please refer to the RabbitMQ FAQ: http://www.rabbitmq.com/faq.html#node-runs-out-of-memoryh}jh~hhhh}r(h]h]h]h]h]uhM hhhw]r(hXRabbitMQ will crash if it runs out of memory. This will be fixed in a future release of RabbitMQ. please refer to the RabbitMQ FAQ: rr}r(h|XRabbitMQ will crash if it runs out of memory. This will be fixed in a future release of RabbitMQ. please refer to the RabbitMQ FAQ: h}jubh)r}r(h|X8http://www.rabbitmq.com/faq.html#node-runs-out-of-memoryrh}r(Urefurijh]h]h]h]h]uh}jhw]rhX8http://www.rabbitmq.com/faq.html#node-runs-out-of-memoryrr}r(h|Uh}jubahhubeubh)r}r(h|X8Some common Celery misconfigurations can crash RabbitMQ:rh}jh~hhhh}r(h]h]h]h]h]uhMhhhw]rhX8Some common Celery misconfigurations can crash RabbitMQ:rr}r(h|jh}jubaubh)r}r(h|Uh}jh~hhhh}r(jlX*h]h]h]h]h]uhMhhhw]rh)r}r(h|XEvents. h}jh~hhhh}r(h]h]h]h]h]uhNhhhw]rh)r}r(h|XEvents.rh}jh~hhhh}r(h]h]h]h]h]uhMhw]rhXEvents.rr}r(h|jh}jubaubaubaubh)r}r(h|XRunning ``celeryd`` with the ``-E``/``--events`` option will send messages for events happening inside of the worker. If these event messages are not consumed, you will eventually run out of memory.h}jh~hhhh}r(h]h]h]h]h]uhMhhhw]r(hXRunning rr}r(h|XRunning h}jubj)r}r(h|X ``celeryd``h}r(h]h]h]h]h]uh}jhw]rhXcelerydrr}r(h|Uh}jubahjubhX with the rr}r(h|X with the h}jubj)r}r(h|X``-E``h}r(h]h]h]h]h]uh}jhw]rhX-Err}r(h|Uh}jubahjubhX/r}r(h|X/h}jubj)r}r(h|X ``--events``h}r(h]h]h]h]h]uh}jhw]rhX--eventsrr}r(h|Uh}jubahjubhX option will send messages for events happening inside of the worker. If these event messages are not consumed, you will eventually run out of memory.rr}r(h|X option will send messages for events happening inside of the worker. If these event messages are not consumed, you will eventually run out of memory.h}jubeubh)r}r(h|XKEvents should only be enabled if you have an active monitor consuming them.rh}jh~hhhh}r(h]h]h]h]h]uhMhhhw]rhXKEvents should only be enabled if you have an active monitor consuming them.rr}r(h|jh}jubaubh)r}r(h|Uh}jh~hhhh}r(jlX*h]h]h]h]h]uhMhhhw]rh)r}r(h|XAMQP backend results. h}jh~hhhh}r(h]h]h]h]h]uhNhhhw]rh)r}r(h|XAMQP backend results.rh}jh~hhhh}r(h]h]h]h]h]uhMhw]rhXAMQP backend results.rr}r(h|jh}jubaubaubaubh)r}r(h|XWhen running with the AMQP result backend, every task result will be sent as a message. If you don't collect these results, they will build up and RabbitMQ will eventually run out of memory.rh}jh~hhhh}r(h]h]h]h]h]uhMhhhw]rhXWhen running with the AMQP result backend, every task result will be sent as a message. If you don't collect these results, they will build up and RabbitMQ will eventually run out of memory.rr}r (h|jh}jubaubh)r }r (h|XXIf you don't use the results for a task, make sure you set the ``ignore_result`` option:h}jh~hhhh}r (h]h]h]h]h]uhM!hhhw]r (hX?If you don't use the results for a task, make sure you set the r r }r (h|X?If you don't use the results for a task, make sure you set the h}j ubj)r }r (h|X``ignore_result``h}r (h]h]h]h]h]uh}j hw]r hX ignore_resultr r }r (h|Uh}j ubahjubhX option:r r }r (h|X option:h}j ubeubcdocutils.nodes comment r )r }r (h|Xpcode-block python @task(ignore_result=True) def mytask(): ... class MyTask(Task): ignore_result = Trueh}jh~hhUcommentr h}r (jjh]h]h]h]h]uhM,hhhw]r hXpcode-block python @task(ignore_result=True) def mytask(): ... class MyTask(Task): ignore_result = Truer r }r (h|Uh}j ubaubh)r }r (h|XQResults can also be disabled globally using the ``CELERY_IGNORE_RESULT`` setting.h}jh~hhhh}r (h]h]h]h]h]uhM-hhhw]r (hX0Results can also be disabled globally using the r r }r! (h|X0Results can also be disabled globally using the h}j ubj)r" }r# (h|X``CELERY_IGNORE_RESULT``h}r$ (h]h]h]h]h]uh}j hw]r% hXCELERY_IGNORE_RESULTr& r' }r( (h|Uh}j" ubahjubhX setting.r) r* }r+ (h|X setting.h}j ubeubeubhy)r, }r- (h|Uh}j|h~hhhh}r. (h]h]h]h]r/ haah]r0 h$auhM1hhhw]r1 (h)r2 }r3 (h|jrh}j, h~hhhh}r4 (h]h]h]h]h]j+jmuhM1hhhw]r5 hX%Can I use celery with ActiveMQ/STOMP?r6 r7 }r8 (h|jrh}j2 ubaubh)r9 }r: (h|X**Answer**: Yes, but this is somewhat experimental for now. It is working ok in a test configuration, but it has not been tested in production. If you have any problems using STOMP with celery, please report an issue here::h}j, h~hhhh}r; (h]h]h]h]h]uhM3hhhw]r< (jA)r= }r> (h|X **Answer**h}r? (h]h]h]h]h]uh}j9 hw]r@ hXAnswerrA rB }rC (h|Uh}j= ubahjIubhX: Yes, but this is somewhat experimental for now. It is working ok in a test configuration, but it has not been tested in production. If you have any problems using STOMP with celery, please report an issue here:rD rE }rF (h|X: Yes, but this is somewhat experimental for now. It is working ok in a test configuration, but it has not been tested in production. If you have any problems using STOMP with celery, please report an issue here:h}j9 ubeubj)rG }rH (h|X$http://github.com/ask/celery/issues/h}j, h~hhjh}rI (jjh]h]h]h]h]uhM8hhhw]rJ hX$http://github.com/ask/celery/issues/rK rL }rM (h|Uh}jG ubaubh)rN }rO (h|X9The STOMP carrot backend requires the `stompy`_ library::rP h}j, h~hhhh}rQ (h]h]h]h]h]uhM:hhhw]rR (hX&The STOMP carrot backend requires the rS rT }rU (h|X&The STOMP carrot backend requires the h}jN ubh)rV }rW (h|X `stompy`_jNKh}jN hhh}rX (UnameXstompyrY jPX"http://pypi.python.org/pypi/stompyrZ h]h]h]h]h]uhw]r[ hXstompyr\ r] }r^ (h|Uh}jV ubaubhX library:r_ r` }ra (h|X library:h}jN ubeubj)rb }rc (h|XM$ pip install stompy $ cd python-stomp $ sudo python setup.py install $ cd ..h}j, h~hhjh}rd (jjh]h]h]h]h]uhM<hhhw]re hXM$ pip install stompy $ cd python-stomp $ sudo python setup.py install $ cd ..rf rg }rh (h|Uh}jb ubaubjY)ri }rj (h|X0.. _`stompy`: http://pypi.python.org/pypi/stompyj\Kh}j, h~hhj]h}rk (jPjZ h]rl hiah]h]h]h]rm h,auhMAhhhw]ubh)rn }ro (h|XkIn this example we will use a queue called ``celery`` which we created in the ActiveMQ web admin interface.h}j, h~hhhh}rp (h]h]h]h]h]uhMChhhw]rq (hX+In this example we will use a queue called rr rs }rt (h|X+In this example we will use a queue called h}jn ubj)ru }rv (h|X ``celery``h}rw (h]h]h]h]h]uh}jn hw]rx hXceleryry rz }r{ (h|Uh}ju ubahjubhX6 which we created in the ActiveMQ web admin interface.r| r} }r~ (h|X6 which we created in the ActiveMQ web admin interface.h}jn ubeubh)r }r (h|X**Note**: When using ActiveMQ the queue name needs to have ``"/queue/"`` prepended to it. i.e. the queue ``celery`` becomes ``/queue/celery``.h}j, h~hhhh}r (h]h]h]h]h]uhMFhhhw]r (jA)r }r (h|X**Note**h}r (h]h]h]h]h]uh}j hw]r hXNoter r }r (h|Uh}j ubahjIubhX3: When using ActiveMQ the queue name needs to have r r }r (h|X3: When using ActiveMQ the queue name needs to have h}j ubj)r }r (h|X ``"/queue/"``h}r (h]h]h]h]h]uh}j hw]r hX "/queue/"r r }r (h|Uh}j ubahjubhX! prepended to it. i.e. the queue r r }r (h|X! prepended to it. i.e. the queue h}j ubj)r }r (h|X ``celery``h}r (h]h]h]h]h]uh}j hw]r hXceleryr r }r (h|Uh}j ubahjubhX becomes r r }r (h|X becomes h}j ubj)r }r (h|X``/queue/celery``h}r (h]h]h]h]h]uh}j hw]r hX /queue/celeryr r }r (h|Uh}j ubahjubhX.r }r (h|X.h}j ubeubh)r }r (h|XSince STOMP doesn't have exchanges and the routing capabilities of AMQP, you need to set ``exchange`` name to the same as the queue name. This is a minor inconvenience since carrot needs to maintain the same interface for both AMQP and STOMP.h}j, h~hhhh}r (h]h]h]h]h]uhMIhhhw]r (hXYSince STOMP doesn't have exchanges and the routing capabilities of AMQP, you need to set r r }r (h|XYSince STOMP doesn't have exchanges and the routing capabilities of AMQP, you need to set h}j ubj)r }r (h|X ``exchange``h}r (h]h]h]h]h]uh}j hw]r hXexchanger r }r (h|Uh}j ubahjubhX name to the same as the queue name. This is a minor inconvenience since carrot needs to maintain the same interface for both AMQP and STOMP.r r }r (h|X name to the same as the queue name. This is a minor inconvenience since carrot needs to maintain the same interface for both AMQP and STOMP.h}j ubeubh)r }r (h|XNUse the following settings in your ``celeryconfig.py``/django ``settings.py``:r h}j, h~hhhh}r (h]h]h]h]h]uhMNhhhw]r (hX#Use the following settings in your r r }r (h|X#Use the following settings in your h}j ubj)r }r (h|X``celeryconfig.py``h}r (h]h]h]h]h]uh}j hw]r hXceleryconfig.pyr r }r (h|Uh}j ubahjubhX/django r r }r (h|X/django h}j ubj)r }r (h|X``settings.py``h}r (h]h]h]h]h]uh}j hw]r hX settings.pyr r }r (h|Uh}j ubahjubhX:r }r (h|X:h}j ubeubj)r }r (h|X# Use the stomp carrot backend. CARROT_BACKEND = "stomp" # STOMP hostname and port settings. BROKER_HOST = "localhost" BROKER_PORT = 61613 # The queue name to use (the exchange *must* be set to the # same as the queue name when using STOMP) CELERY_DEFAULT_QUEUE = "/queue/celery" CELERY_DEFAULT_EXCHANGE = "/queue/celery" CELERY_QUEUES = { "/queue/celery": {"exchange": "/queue/celery"} }h}j, h~hhjh}r (Ulinenosr Ulanguager Xpythonjjh]h]h]h]h]uhMPhhhw]r hX# Use the stomp carrot backend. CARROT_BACKEND = "stomp" # STOMP hostname and port settings. BROKER_HOST = "localhost" BROKER_PORT = 61613 # The queue name to use (the exchange *must* be set to the # same as the queue name when using STOMP) CELERY_DEFAULT_QUEUE = "/queue/celery" CELERY_DEFAULT_EXCHANGE = "/queue/celery" CELERY_QUEUES = { "/queue/celery": {"exchange": "/queue/celery"} }r r }r (h|Uh}j ubaubeubhy)r }r (h|Uh}j|h~hhhh}r (h]h]h]h]r hFah]r h auhMchhhw]r (h)r }r (h|jh}j h~hhhh}r (h]h]h]h]h]j+juhMchhhw]r hX9What features are not supported when using ghettoq/STOMP?r r }r (h|jh}j ubaubh)r }r (h|X\This is a (possible incomplete) list of features not available when using the STOMP backend:r h}j h~hhhh}r (h]h]h]h]h]uhMehhhw]r hX\This is a (possible incomplete) list of features not available when using the STOMP backend:r r }r (h|j h}j ubaubcdocutils.nodes block_quote r )r }r (h|Uh}j h~NhU block_quoter h}r (h]h]h]h]h]uhNhhhw]r h)r }r (h|Uh}r (jlX*h]h]h]h]h]uh}j hw]r (h)r }r (h|X routing keys h}r (h]h]h]h]h]uh}j hw]r h)r }r (h|X routing keysr h}j h~hhhh}r (h]h]h]h]h]uhMhhw]r hX routing keysr r }r (h|j h}j ubaubahhubh)r }r (h|X-exchange types (direct, topic, headers, etc) h}r (h]h]h]h]h]uh}j hw]r h)r }r (h|X,exchange types (direct, topic, headers, etc)r h}j h~hhhh}r (h]h]h]h]h]uhMjhw]r hX,exchange types (direct, topic, headers, etc)r r }r (h|j h}j ubaubahhubh)r }r (h|X immediate h}r (h]h]h]h]h]uh}j hw]r h)r }r (h|X immediater h}j h~hhhh}r (h]h]h]h]h]uhMlhw]r hX immediater r }r! (h|j h}j ubaubahhubh)r" }r# (h|X mandatory h}r$ (h]h]h]h]h]uh}j hw]r% h)r& }r' (h|X mandatoryr( h}j" h~hhhh}r) (h]h]h]h]h]uhMnhw]r* hX mandatoryr+ r, }r- (h|j( h}j& ubaubahhubehhubaubeubeubhy)r. }r/ (h|Uh}hzh~hhhh}r0 (h]h]h]h]r1 hEah]r2 hauhMqhhhw]r3 (h)r4 }r5 (h|jh}j. h~hhhh}r6 (h]h]h]h]h]j+juhMqhhhw]r7 hXTasksr8 r9 }r: (h|jh}j4 ubaubhy)r; }r< (h|Uh}j. h~hhhh}r= (h]h]h]h]r> hTah]r? hauhMthhhw]r@ (h)rA }rB (h|jh}j; h~hhhh}rC (h]h]h]h]h]j+juhMthhhw]rD hX8How can I reuse the same connection when applying tasks?rE rF }rG (h|jh}jA ubaubh)rH }rI (h|X+**Answer**: See :doc:`userguide/executing`.rJ h}j; h~hhhh}rK (h]h]h]h]h]uhMvhhhw]rL (jA)rM }rN (h|X **Answer**h}rO (h]h]h]h]h]uh}jH hw]rP hXAnswerrQ rR }rS (h|Uh}jM ubahjIubhX: See rT rU }rV (h|X: See h}jH ubjA)rW }rX (h|X:doc:`userguide/executing`rY h}jH h~hhjEh}rZ (UreftypeXdocr[ jGjHXuserguide/executingU refdomainUh]h]U refexplicith]h]h]jJjKuhMvhw]r\ j)r] }r^ (h|jY h}r_ (h]h]r` (jSj[ eh]h]h]uh}jW hw]ra hXuserguide/executingrb rc }rd (h|Uh}j] ubahjubaubhX.re }rf (h|X.h}jH ubeubeubhy)rg }rh (h|Uh}j. h~hhhh}ri (h]h]h]h]rj hhah]rk h+auhMyhhhw]rl (h)rm }rn (h|jh}jg h~hhhh}ro (h]h]h]h]h]j+juhMyhhhw]rp hXCan I execute a task by name?rq rr }rs (h|jh}jm ubaubh)rt }ru (h|X**Answer**: Yes. Use :func:`celery.execute.send_task`. You can also execute a task by name from any language that has an AMQP client.h}jg h~hhhh}rv (h]h]h]h]h]uhM{hhhw]rw (jA)rx }ry (h|X **Answer**h}rz (h]h]h]h]h]uh}jt hw]r{ hXAnswerr| r} }r~ (h|Uh}jx ubahjIubhX : Yes. Use r r }r (h|X : Yes. Use h}jt ubjA)r }r (h|X :func:`celery.execute.send_task`r h}jt h~hhjEh}r (UreftypeXfuncjGjHXcelery.execute.send_taskU refdomainXpyr h]h]U refexplicith]h]h]jJjKjLNjMNuhM{hw]r j)r }r (h|j h}r (h]h]r (jSj Xpy-funcr eh]h]h]uh}j hw]r hXcelery.execute.send_task()r r }r (h|Uh}j ubahjubaubhXP. You can also execute a task by name from any language that has an AMQP client.r r }r (h|XP. You can also execute a task by name from any language that has an AMQP client.h}jt ubeubjW)r }r (h|X>>> from celery.execute import send_task >>> send_task("tasks.add", args=[2, 2], kwargs={}) h}jg h~NhjZh}r (jjh]h]h]h]h]uhNhhhw]r hX>>> from celery.execute import send_task >>> send_task("tasks.add", args=[2, 2], kwargs={}) r r }r (h|Uh}j ubaubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r hZah]r hauhMhhhw]r (h)r }r (h|jh}j h~hhhh}r (h]h]h]h]h]j+juhMhhhw]r hX.How can I get the task id of the current task?r r }r (h|jh}j ubaubh)r }r (h|X**Answer**: Celery does set some default keyword arguments if the task accepts them (you can accept them by either using ``**kwargs``, or list them specifically)::h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (jA)r }r (h|X **Answer**h}r (h]h]h]h]h]uh}j hw]r hXAnswerr r }r (h|Uh}j ubahjIubhXo: Celery does set some default keyword arguments if the task accepts them (you can accept them by either using r r }r (h|Xo: Celery does set some default keyword arguments if the task accepts them (you can accept them by either using h}j ubj)r }r (h|X ``**kwargs``h}r (h]h]h]h]h]uh}j hw]r hX**kwargsr r }r (h|Uh}j ubahjubhX, or list them specifically):r r }r (h|X, or list them specifically):h}j ubeubj)r }r (h|XA@task def mytask(task_id=None): cache.set(task_id, "Running")h}j h~hhjh}r (jjh]h]h]h]h]uhMhhhw]r hXA@task def mytask(task_id=None): cache.set(task_id, "Running")r r }r (h|Uh}j ubaubh)r }r (h|XyThe default keyword arguments are documented here: http://celeryq.org/docs/userguide/tasks.html#default-keyword-argumentsh}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (hX3The default keyword arguments are documented here: r r }r (h|X3The default keyword arguments are documented here: h}j ubh)r }r (h|XFhttp://celeryq.org/docs/userguide/tasks.html#default-keyword-argumentsr h}r (Urefurij h]h]h]h]h]uh}j hw]r hXFhttp://celeryq.org/docs/userguide/tasks.html#default-keyword-argumentsr r }r (h|Uh}j ubahhubeubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r huah]r h8auhMhhhw]r (h)r }r (h|jh}j h~hhhh}r (h]h]h]h]h]j+juhMhhhw]r hXCan I specify a custom task_id?r r }r (h|jh}j ubaubh)r }r (h|XV**Answer**: Yes. Use the ``task_id`` argument to :meth:`~celery.execute.apply_async`::h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (jA)r }r (h|X **Answer**h}r (h]h]h]h]h]uh}j hw]r hXAnswerr r }r (h|Uh}j ubahjIubhX: Yes. Use the r r }r (h|X: Yes. Use the h}j ubj)r }r (h|X ``task_id``h}r (h]h]h]h]h]uh}j hw]r hXtask_idr r }r (h|Uh}j ubahjubhX argument to r r }r (h|X argument to h}j ubjA)r }r (h|X#:meth:`~celery.execute.apply_async`r h}j h~hhjEh}r (UreftypeXmethjGjHXcelery.execute.apply_asyncU refdomainXpyr h]h]U refexplicith]h]h]jJjKjLNjMNuhMhw]r j)r }r (h|j h}r (h]h]r (jSj Xpy-methr eh]h]h]uh}j hw]r hX apply_async()r r }r (h|Uh}j ubahjubaubhX:r }r (h|X:h}j ubeubj)r }r (h|X1>>> task.apply_async(args, kwargs, task_id="...")h}j h~hhjh}r (jjh]h]h]h]h]uhMhhhw]r hX1>>> task.apply_async(args, kwargs, task_id="...")r r }r (h|Uh}j ubaubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r hSah]r hauhMhhhw]r (h)r }r (h|jh}j h~hhhh}r (h]h]h]h]h]j+juhMhhhw]r hXCan I use natural task ids?r r }r (h|jh}j ubaubh)r }r! (h|Xr**Answer**: Yes, but make sure it is unique, as the behavior for two tasks existing with the same id is undefined.h}j h~hhhh}r" (h]h]h]h]h]uhMhhhw]r# (jA)r$ }r% (h|X **Answer**h}r& (h]h]h]h]h]uh}j hw]r' hXAnswerr( r) }r* (h|Uh}j$ ubahjIubhXh: Yes, but make sure it is unique, as the behavior for two tasks existing with the same id is undefined.r+ r, }r- (h|Xh: Yes, but make sure it is unique, as the behavior for two tasks existing with the same id is undefined.h}j ubeubh)r. }r/ (h|X]The world will probably not explode, but at the worst they can overwrite each others results.r0 h}j h~hhhh}r1 (h]h]h]h]h]uhMhhhw]r2 hX]The world will probably not explode, but at the worst they can overwrite each others results.r3 r4 }r5 (h|j0 h}j. ubaubeubhy)r6 }r7 (h|Uh}j. h~hhhh}r8 (h]h]h]h]r9 hDah]r: hauhMhhhw]r; (h)r< }r= (h|jh}j6 h~hhhh}r> (h]h]h]h]h]j+juhMhhhw]r? hX4How can I run a task once another task has finished?r@ rA }rB (h|jh}j< ubaubh)rC }rD (h|Xh**Answer**: You can safely launch a task inside a task. Also, a common pattern is to use callback tasks:h}j6 h~hhhh}rE (h]h]h]h]h]uhMhhhw]rF (jA)rG }rH (h|X **Answer**h}rI (h]h]h]h]h]uh}jC hw]rJ hXAnswerrK rL }rM (h|Uh}jG ubahjIubhX^: You can safely launch a task inside a task. Also, a common pattern is to use callback tasks:rN rO }rP (h|X^: You can safely launch a task inside a task. Also, a common pattern is to use callback tasks:h}jC ubeubj)rQ }rR (h|X!@task() def add(x, y, callback=None): result = x + y if callback: subtask(callback).delay(result) return result @task(ignore_result=True) def log_result(result, **kwargs): logger = log_result.get_logger(**kwargs) logger.info("log_result got: %s" % (result, ))h}j6 h~hhjh}rS (j j Xpythonjjh]h]h]h]h]uhMhhhw]rT hX!@task() def add(x, y, callback=None): result = x + y if callback: subtask(callback).delay(result) return result @task(ignore_result=True) def log_result(result, **kwargs): logger = log_result.get_logger(**kwargs) logger.info("log_result got: %s" % (result, ))rU rV }rW (h|Uh}jQ ubaubh)rX }rY (h|X Invocation::rZ h}j6 h~hhhh}r[ (h]h]h]h]h]uhMhhhw]r\ hX Invocation:r] r^ }r_ (h|X Invocation:h}jX ubaubj)r` }ra (h|X2>>> add.delay(2, 2, callback=log_result.subtask())h}j6 h~hhjh}rb (jjh]h]h]h]h]uhMhhhw]rc hX2>>> add.delay(2, 2, callback=log_result.subtask())rd re }rf (h|Uh}j` ubaubh)rg }rh (h|X3See :doc:`userguide/tasksets` for more information.ri h}j6 h~hhhh}rj (h]h]h]h]h]uhMhhhw]rk (hXSee rl rm }rn (h|XSee h}jg ubjA)ro }rp (h|X:doc:`userguide/tasksets`rq h}jg h~hhjEh}rr (UreftypeXdocrs jGjHXuserguide/tasksetsU refdomainUh]h]U refexplicith]h]h]jJjKuhMhw]rt j)ru }rv (h|jq h}rw (h]h]rx (jSjs eh]h]h]uh}jo hw]ry hXuserguide/tasksetsrz r{ }r| (h|Uh}ju ubahjubaubhX for more information.r} r~ }r (h|X for more information.h}jg ubeubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r hbah]r h%auhMhhhw]r (h)r }r (h|jh}j h~hhhh}r (h]h]h]h]h]j+juhMhhhw]r hX%Can I cancel the execution of a task?r r }r (h|jh}j ubaubh)r }r (h|X(**Answer**: Yes. Use ``result.revoke``::r h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (jA)r }r (h|X **Answer**h}r (h]h]h]h]h]uh}j hw]r hXAnswerr r }r (h|Uh}j ubahjIubhX : Yes. Use r r }r (h|X : Yes. Use h}j ubj)r }r (h|X``result.revoke``h}r (h]h]h]h]h]uh}j hw]r hX result.revoker r }r (h|Uh}j ubahjubhX:r }r (h|X:h}j ubeubj)r }r (h|XL>>> result = add.apply_async(args=[2, 2], countdown=120) >>> result.revoke()h}j h~hhjh}r (jjh]h]h]h]h]uhMhhhw]r hXL>>> result = add.apply_async(args=[2, 2], countdown=120) >>> result.revoke()r r }r (h|Uh}j ubaubh)r }r (h|X!or if you only have the task id::r h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r hX or if you only have the task id:r r }r (h|X or if you only have the task id:h}j ubaubj)r }r (h|X>>>> from celery.task.control import revoke >>> revoke(task_id)h}j h~hhjh}r (jjh]h]h]h]h]uhMhhhw]r hX>>>> from celery.task.control import revoke >>> revoke(task_id)r r }r (h|Uh}j ubaubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r hcah]r h&auhMhhhw]r (h)r }r (h|j*h}j h~hhhh}r (h]h]h]h]h]j+j%uhMhhhw]r hX>Why aren't my remote control commands received by all workers?r r }r (h|j*h}j ubaubh)r }r (h|X**Answer**: To receive broadcast remote control commands, every ``celeryd`` uses its hostname to create a unique queue name to listen to, so if you have more than one worker with the same hostname, the control commands will be recieved in round-robin between them.h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (jA)r }r (h|X **Answer**h}r (h]h]h]h]h]uh}j hw]r hXAnswerr r }r (h|Uh}j ubahjIubhX6: To receive broadcast remote control commands, every r r }r (h|X6: To receive broadcast remote control commands, every h}j ubj)r }r (h|X ``celeryd``h}r (h]h]h]h]h]uh}j hw]r hXcelerydr r }r (h|Uh}j ubahjubhX uses its hostname to create a unique queue name to listen to, so if you have more than one worker with the same hostname, the control commands will be recieved in round-robin between them.r r }r (h|X uses its hostname to create a unique queue name to listen to, so if you have more than one worker with the same hostname, the control commands will be recieved in round-robin between them.h}j ubeubh)r }r (h|X{To work around this you can explicitly set the hostname for every worker using the ``--hostname`` argument to ``celeryd``::h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (hXSTo work around this you can explicitly set the hostname for every worker using the r r }r (h|XSTo work around this you can explicitly set the hostname for every worker using the h}j ubj)r }r (h|X``--hostname``h}r (h]h]h]h]h]uh}j hw]r hX --hostnamer r }r (h|Uh}j ubahjubhX argument to r r }r (h|X argument to h}j ubj)r }r (h|X ``celeryd``h}r (h]h]h]h]h]uh}j hw]r hXcelerydr r }r (h|Uh}j ubahjubhX:r }r (h|X:h}j ubeubj)r }r (h|XE$ celeryd --hostname=$(hostname).1 $ celeryd --hostname=$(hostname).2h}j h~hhjh}r (jjh]h]h]h]h]uhMhhhw]r hXE$ celeryd --hostname=$(hostname).1 $ celeryd --hostname=$(hostname).2r r }r (h|Uh}j ubaubh)r }r (h|X etc, etc.r h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r hX etc, etc.r r }r (h|j h}j ubaubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r hIah]r h auhMhhhw]r (h)r }r (h|j<h}j h~hhhh}r (h]h]h]h]h]j+j7uhMhhhw]r hX+Can I send some tasks to only some servers?r r }r (h|j<h}j ubaubh)r }r (h|X|**Answer:** Yes. You can route tasks to an arbitrary server using AMQP, and a worker can bind to as many queues as it wants.h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (jA)r }r (h|X **Answer:**h}r (h]h]h]h]h]uh}j hw]r hXAnswer:r r }r (h|Uh}j ubahjIubhXq Yes. You can route tasks to an arbitrary server using AMQP, and a worker can bind to as many queues as it wants.r! r" }r# (h|Xq Yes. You can route tasks to an arbitrary server using AMQP, and a worker can bind to as many queues as it wants.h}j ubeubh)r$ }r% (h|X2See :doc:`userguide/routing` for more information.r& h}j h~hhhh}r' (h]h]h]h]h]uhMhhhw]r( (hXSee r) r* }r+ (h|XSee h}j$ ubjA)r, }r- (h|X:doc:`userguide/routing`r. h}j$ h~hhjEh}r/ (UreftypeXdocr0 jGjHXuserguide/routingU refdomainUh]h]U refexplicith]h]h]jJjKuhMhw]r1 j)r2 }r3 (h|j. h}r4 (h]h]r5 (jSj0 eh]h]h]uh}j, hw]r6 hXuserguide/routingr7 r8 }r9 (h|Uh}j2 ubahjubaubhX for more information.r: r; }r< (h|X for more information.h}j$ ubeubeubhy)r= }r> (h|Uh}j. h~hhhh}r? (h]h]h]h]r@ hCah]rA hauhMhhhw]rB (h)rC }rD (h|jNh}j= h~hhhh}rE (h]h]h]h]h]j+jIuhMhhhw]rF hX8Can I change the interval of a periodic task at runtime?rG rH }rI (h|jNh}jC ubaubh)rJ }rK (h|Xm**Answer**: Yes. You can override ``PeriodicTask.is_due`` or turn ``PeriodicTask.run_every`` into a property:h}j= h~hhhh}rL (h]h]h]h]h]uhMhhhw]rM (jA)rN }rO (h|X **Answer**h}rP (h]h]h]h]h]uh}jJ hw]rQ hXAnswerrR rS }rT (h|Uh}jN ubahjIubhX: Yes. You can override rU rV }rW (h|X: Yes. You can override h}jJ ubj)rX }rY (h|X``PeriodicTask.is_due``h}rZ (h]h]h]h]h]uh}jJ hw]r[ hXPeriodicTask.is_duer\ r] }r^ (h|Uh}jX ubahjubhX or turn r_ r` }ra (h|X or turn h}jJ ubj)rb }rc (h|X``PeriodicTask.run_every``h}rd (h]h]h]h]h]uh}jJ hw]re hXPeriodicTask.run_everyrf rg }rh (h|Uh}jb ubahjubhX into a property:ri rj }rk (h|X into a property:h}jJ ubeubj)rl }rm (h|Xclass MyPeriodic(PeriodicTask): def run(self): # ... @property def run_every(self): return get_interval_from_database(...)h}j= h~hhjh}rn (j j Xpythonjjh]h]h]h]h]uhMhhhw]ro hXclass MyPeriodic(PeriodicTask): def run(self): # ... @property def run_every(self): return get_interval_from_database(...)rp rq }rr (h|Uh}jl ubaubeubhy)rs }rt (h|Uh}j. h~hhhh}ru (h]h]h]h]rv hOah]rw hauhMhhhw]rx (h)ry }rz (h|j`h}js h~hhhh}r{ (h]h]h]h]h]j+j[uhMhhhw]r| hX$Does celery support task priorities?r} r~ }r (h|j`h}jy ubaubh)r }r (h|Xi**Answer**: No. In theory, yes, as AMQP supports priorities. However RabbitMQ doesn't implement them yet.h}js h~hhhh}r (h]h]h]h]h]uhMhhhw]r (jA)r }r (h|X **Answer**h}r (h]h]h]h]h]uh}j hw]r hXAnswerr r }r (h|Uh}j ubahjIubhX_: No. In theory, yes, as AMQP supports priorities. However RabbitMQ doesn't implement them yet.r r }r (h|X_: No. In theory, yes, as AMQP supports priorities. However RabbitMQ doesn't implement them yet.h}j ubeubh)r }r (h|XThe usual way to prioritize work in celery, is to route high priority tasks to different servers. In the real world this may actually work better than per message priorities. You can use this in combination with rate limiting to achieve a highly performant system.r h}js h~hhhh}r (h]h]h]h]h]uhMhhhw]r hXThe usual way to prioritize work in celery, is to route high priority tasks to different servers. In the real world this may actually work better than per message priorities. You can use this in combination with rate limiting to achieve a highly performant system.r r }r (h|j h}j ubaubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r hXah]r hauhMhhhw]r (h)r }r (h|jrh}j h~hhhh}r (h]h]h]h]h]j+jmuhMhhhw]r hX Should I use retry or acks_late?r r }r (h|jrh}j ubaubh)r }r (h|XU**Answer**: Depends. It's not necessarily one or the other, you may want to use both.h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (jA)r }r (h|X **Answer**h}r (h]h]h]h]h]uh}j hw]r hXAnswerr r }r (h|Uh}j ubahjIubhXK: Depends. It's not necessarily one or the other, you may want to use both.r r }r (h|XK: Depends. It's not necessarily one or the other, you may want to use both.h}j ubeubh)r }r (h|X``Task.retry`` is used to retry tasks, notably for expected errors that is catchable with the ``try:`` block. The AMQP transaction is not used for these errors: **if the task raises an exception it is still acked!**.h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r (j)r }r (h|X``Task.retry``h}r (h]h]h]h]h]uh}j hw]r hX Task.retryr r }r (h|Uh}j ubahjubhXP is used to retry tasks, notably for expected errors that is catchable with the r r }r (h|XP is used to retry tasks, notably for expected errors that is catchable with the h}j ubj)r }r (h|X``try:``h}r (h]h]h]h]h]uh}j hw]r hXtry:r r }r (h|Uh}j ubahjubhX; block. The AMQP transaction is not used for these errors: r r }r (h|X; block. The AMQP transaction is not used for these errors: h}j ubjA)r }r (h|X6**if the task raises an exception it is still acked!**h}r (h]h]h]h]h]uh}j hw]r hX2if the task raises an exception it is still acked!r r }r (h|Uh}j ubahjIubhX.r }r (h|X.h}j ubeubh)r }r (h|X@The ``acks_late`` setting would be used when you need the task to be executed again if the worker (for some reason) crashes mid-execution. It's important to note that the worker is not known to crash, and if it does it is usually an unrecoverable error that requires human intervention (bug in the worker, or task code).h}j h~hhhh}r (h]h]h]h]h]uhM hhhw]r (hXThe r r }r (h|XThe h}j ubj)r }r (h|X ``acks_late``h}r (h]h]h]h]h]uh}j hw]r hX acks_later r }r (h|Uh}j ubahjubhX/ setting would be used when you need the task to be executed again if the worker (for some reason) crashes mid-execution. It's important to note that the worker is not known to crash, and if it does it is usually an unrecoverable error that requires human intervention (bug in the worker, or task code).r r }r (h|X/ setting would be used when you need the task to be executed again if the worker (for some reason) crashes mid-execution. It's important to note that the worker is not known to crash, and if it does it is usually an unrecoverable error that requires human intervention (bug in the worker, or task code).h}j ubeubh)r }r (h|X{In an ideal world you could safely retry any task that has failed, but this is rarely the case. Imagine the following task:r h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r hX{In an ideal world you could safely retry any task that has failed, but this is rarely the case. Imagine the following task:r r }r (h|j h}j ubaubj)r }r (h|X@task() def process_upload(filename, tmpfile): # Increment a file count stored in a database increment_file_counter() add_file_metadata_to_db(filename, tmpfile) copy_file_to_destination(filename, tmpfile)h}j h~hhjh}r (j j Xpythonjjh]h]h]h]h]uhMhhhw]r hX@task() def process_upload(filename, tmpfile): # Increment a file count stored in a database increment_file_counter() add_file_metadata_to_db(filename, tmpfile) copy_file_to_destination(filename, tmpfile)r r }r (h|Uh}j ubaubh)r }r (h|XIf this crashed in the middle of copying the file to its destination the world would contain incomplete state. This is not a critical scenario of course, but you can probably imagine something far more sinister. So for ease of programming we have less reliability; It's a good default, users who require it and know what they are doing can still enable acks_late (and in the future hopefully use manual acknowledgement)r h}j h~hhhh}r (h]h]h]h]h]uhMhhhw]r hXIf this crashed in the middle of copying the file to its destination the world would contain incomplete state. This is not a critical scenario of course, but you can probably imagine something far more sinister. So for ease of programming we have less reliability; It's a good default, users who require it and know what they are doing can still enable acks_late (and in the future hopefully use manual acknowledgement)r r }r (h|j h}j ubaubh)r }r (h|XtIn addition ``Task.retry`` has features not available in AMQP transactions: delay between retries, max retries, etc.h}j h~hhhh}r (h]h]h]h]h]uhM#hhhw]r (hX In addition r r }r (h|X In addition h}j ubj)r }r (h|X``Task.retry``h}r (h]h]h]h]h]uh}j hw]r hX Task.retryr r }r (h|Uh}j ubahjubhXZ has features not available in AMQP transactions: delay between retries, max retries, etc.r r }r (h|XZ has features not available in AMQP transactions: delay between retries, max retries, etc.h}j ubeubh)r }r (h|XSo use retry for Python errors, and if your task is reentrant combine that with ``acks_late`` if that level of reliability is required.h}j h~hhhh}r (h]h]h]h]h]uhM&hhhw]r (hXPSo use retry for Python errors, and if your task is reentrant combine that with r r }r (h|XPSo use retry for Python errors, and if your task is reentrant combine that with h}j ubj)r }r (h|X ``acks_late``h}r (h]h]h]h]h]uh}j hw]r hX acks_later r }r (h|Uh}j ubahjubhX* if that level of reliability is required.r r }r (h|X* if that level of reliability is required.h}j ubeubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r (jhUeh]r hauhM,hhhw]r! (h)r" }r# (h|jh}j h~hhhh}r$ (h]h]h]h]h]j+juhM,hhhw]r% hX3Can I schedule tasks to execute at a specific time?r& r' }r( (h|jh}j" ubaubcsphinx.addnodes index r) )r* }r+ (h|Uh}j h~hhUindexr, h}r- (h]h]h]h]h]Uentries]r. (Usingler/ Xcelery.task.base (module)Xmodule-celery.task.baseUtr0 auhM/hhhw]ubh)r1 }r2 (h|XN**Answer**: Yes. You can use the ``eta`` argument of :meth:`Task.apply_async`.r3 h}j h~hhhh}r4 (h]h]h]h]h]uhM0hhhw]r5 (jA)r6 }r7 (h|X **Answer**h}r8 (h]h]h]h]h]uh}j1 hw]r9 hXAnswerr: r; }r< (h|Uh}j6 ubahjIubhX: Yes. You can use the r= r> }r? (h|X: Yes. You can use the h}j1 ubj)r@ }rA (h|X``eta``h}rB (h]h]h]h]h]uh}j1 hw]rC hXetarD rE }rF (h|Uh}j@ ubahjubhX argument of rG rH }rI (h|X argument of h}j1 ubjA)rJ }rK (h|X:meth:`Task.apply_async`rL h}j1 h~hhjEh}rM (UreftypeXmethjGjHXTask.apply_asyncU refdomainXpyrN h]h]U refexplicith]h]h]jJjKjLNjMXcelery.task.baserO uhM0hw]rP j)rQ }rR (h|jL h}rS (h]h]rT (jSjN Xpy-methrU eh]h]h]uh}jJ hw]rV hXTask.apply_async()rW rX }rY (h|Uh}jQ ubahjubaubhX.rZ }r[ (h|X.h}j1 ubeubh)r\ }r] (h|XtOr to schedule a periodic task at a specific time, use the :class:`celery.task.schedules.crontab` schedule behavior:h}j h~hhhh}r^ (h]h]h]h]h]uhM2hhhw]r_ (hX;Or to schedule a periodic task at a specific time, use the r` ra }rb (h|X;Or to schedule a periodic task at a specific time, use the h}j\ ubjA)rc }rd (h|X&:class:`celery.task.schedules.crontab`re h}j\ h~hhjEh}rf (UreftypeXclassjGjHXcelery.task.schedules.crontabU refdomainXpyrg h]h]U refexplicith]h]h]jJjKjLNjMjO uhM2hw]rh j)ri }rj (h|je h}rk (h]h]rl (jSjg Xpy-classrm eh]h]h]uh}jc hw]rn hXcelery.task.schedules.crontabro rp }rq (h|Uh}ji ubahjubaubhX schedule behavior:rr rs }rt (h|X schedule behavior:h}j\ ubeubj)ru }rv (h|Xfrom celery.task.schedules import crontab from celery.decorators import periodic_task @periodic_task(run_every=crontab(hours=7, minute=30, day_of_week="mon")) def every_monday_morning(): print("This is run every monday morning at 7:30")h}j h~hhjh}rw (j j Xpythonjjh]h]h]h]h]uhM6hhhw]rx hXfrom celery.task.schedules import crontab from celery.decorators import periodic_task @periodic_task(run_every=crontab(hours=7, minute=30, day_of_week="mon")) def every_monday_morning(): print("This is run every monday morning at 7:30")ry rz }r{ (h|Uh}ju ubaubeubhy)r| }r} (h|Uh}j. h~hhhh}r~ (h]h]h]h]r hgah]r h*auhM@hhhw]r (h)r }r (h|X&How do I shut down ``celeryd`` safely?r h}j| h~hhhh}r (h]h]h]h]h]j+juhM@hhhw]r (hXHow do I shut down r r }r (h|jh}j ubj)r }r (h|jh}r (h]h]h]h]h]uh}j hw]r hXcelerydr r }r (h|Uh}j ubahjubhX safely?r r }r (h|jh}j ubeubh)r }r (h|X**Answer**: Use the ``TERM`` signal, and celery will finish all currently executing jobs and shut down as soon as possible. No tasks should be lost.h}j| h~hhhh}r (h]h]h]h]h]uhMBhhhw]r (jA)r }r (h|X **Answer**h}r (h]h]h]h]h]uh}j hw]r hXAnswerr r }r (h|Uh}j ubahjIubhX : Use the r r }r (h|X : Use the h}j ubj)r }r (h|X``TERM``h}r (h]h]h]h]h]uh}j hw]r hXTERMr r }r (h|Uh}j ubahjubhXx signal, and celery will finish all currently executing jobs and shut down as soon as possible. No tasks should be lost.r r }r (h|Xx signal, and celery will finish all currently executing jobs and shut down as soon as possible. No tasks should be lost.h}j ubeubh)r }r (h|XVYou should never stop ``celeryd`` with the ``KILL`` signal (``-9``), unless you've tried ``TERM`` a few times and waited a few minutes to let it get a chance to shut down. As if you do tasks may be terminated mid-execution, and they will not be re-run unless you have the ``acks_late`` option set. (``Task.acks_late`` / ``CELERY_ACKS_LATE``).h}j| h~hhhh}r (h]h]h]h]h]uhMEhhhw]r (hXYou should never stop r r }r (h|XYou should never stop h}j ubj)r }r (h|X ``celeryd``h}r (h]h]h]h]h]uh}j hw]r hXcelerydr r }r (h|Uh}j ubahjubhX with the r r }r (h|X with the h}j ubj)r }r (h|X``KILL``h}r (h]h]h]h]h]uh}j hw]r hXKILLr r }r (h|Uh}j ubahjubhX signal (r r }r (h|X signal (h}j ubj)r }r (h|X``-9``h}r (h]h]h]h]h]uh}j hw]r hX-9r r }r (h|Uh}j ubahjubhX), unless you've tried r r }r (h|X), unless you've tried h}j ubj)r }r (h|X``TERM``h}r (h]h]h]h]h]uh}j hw]r hXTERMr r }r (h|Uh}j ubahjubhX a few times and waited a few minutes to let it get a chance to shut down. As if you do tasks may be terminated mid-execution, and they will not be re-run unless you have the r r }r (h|X a few times and waited a few minutes to let it get a chance to shut down. As if you do tasks may be terminated mid-execution, and they will not be re-run unless you have the h}j ubj)r }r (h|X ``acks_late``h}r (h]h]h]h]h]uh}j hw]r hX acks_later r }r (h|Uh}j ubahjubhX option set. (r r }r (h|X option set. (h}j ubj)r }r (h|X``Task.acks_late``h}r (h]h]h]h]h]uh}j hw]r hXTask.acks_later r }r (h|Uh}j ubahjubhX / r r }r (h|X / h}j ubj)r }r (h|X``CELERY_ACKS_LATE``h}r (h]h]h]h]h]uh}j hw]r hXCELERY_ACKS_LATEr r }r (h|Uh}j ubahjubhX).r r }r (h|X).h}j ubeubeubhy)r }r (h|Uh}j. h~hhhh}r (h]h]h]h]r hHah]r h auhMLhhhw]r (h)r }r(h|jh}j h~hhhh}r(h]h]h]h]h]j+juhMLhhhw]rhX5How do I run celeryd in the background on [platform]?rr}r(h|jh}j ubaubh)r}r(h|X3**Answer**: Please see :doc:`cookbook/daemonizing`.rh}j h~hhhh}r (h]h]h]h]h]uhMMhhhw]r (jA)r }r (h|X **Answer**h}r (h]h]h]h]h]uh}jhw]rhXAnswerrr}r(h|Uh}j ubahjIubhX : Please see rr}r(h|X : Please see h}jubjA)r}r(h|X:doc:`cookbook/daemonizing`rh}jh~hhjEh}r(UreftypeXdocrjGjHXcookbook/daemonizingU refdomainUh]h]U refexplicith]h]h]jJjKuhMMhw]rj)r}r(h|jh}r(h]h]r(jSjeh]h]h]uh}jhw]rhXcookbook/daemonizingr r!}r"(h|Uh}jubahjubaubhX.r#}r$(h|X.h}jubeubeubeubhy)r%}r&(h|Uh}hzh~hhhh}r'(h]h]h]h]r(hmah]r)h0auhMPhhhw]r*(h)r+}r,(h|jh}j%h~hhhh}r-(h]h]h]h]h]j+juhMPhhhw]r.hXWindowsr/r0}r1(h|jh}j+ubaubhy)r2}r3(h|Uh}j%h~hhhh}r4(h]h]h]h]r5hnah]r6h1auhMShhhw]r7(h)r8}r9(h|jh}j2h~hhhh}r:(h]h]h]h]h]j+juhMShhhw]r;hX+celeryd keeps spawning processes at startupr<r=}r>(h|jh}j8ubaubh)r?}r@(h|XZ**Answer**: This is a known issue on Windows. You have to start celeryd with the command::h}j2h~hhhh}rA(h]h]h]h]h]uhMUhhhw]rB(jA)rC}rD(h|X **Answer**h}rE(h]h]h]h]h]uh}j?hw]rFhXAnswerrGrH}rI(h|Uh}jCubahjIubhXO: This is a known issue on Windows. You have to start celeryd with the command:rJrK}rL(h|XO: This is a known issue on Windows. You have to start celeryd with the command:h}j?ubeubj)rM}rN(h|X$ python -m celeryd.bin.celerydh}j2h~hhjh}rO(jjh]h]h]h]h]uhMXhhhw]rPhX$ python -m celeryd.bin.celerydrQrR}rS(h|Uh}jMubaubh)rT}rU(h|X9Any additional arguments can be appended to this command.rVh}j2h~hhhh}rW(h]h]h]h]h]uhMZhhhw]rXhX9Any additional arguments can be appended to this command.rYrZ}r[(h|jVh}jTubaubh)r\}r](h|XSee http://bit.ly/bo9RSwr^h}j2h~hhhh}r_(h]h]h]h]h]uhM\hhhw]r`(hXSee rarb}rc(h|XSee h}j\ubh)rd}re(h|Xhttp://bit.ly/bo9RSwrfh}rg(Urefurijfh]h]h]h]h]uh}j\hw]rhhXhttp://bit.ly/bo9RSwrirj}rk(h|Uh}jdubahhubeubeubhy)rl}rm(h|Uh}j%h~hhhh}rn(h]h]h]h]rohYah]rphauhM_hhhw]rq(h)rr}rs(h|X7The ``-B`` / ``--beat`` option to celeryd doesn't work?rth}jlh~hhhh}ru(h]h]h]h]h]j+juhM_hhhw]rv(hXThe rwrx}ry(h|jh}jrubj)rz}r{(h|jh}r|(h]h]h]h]h]uh}jrhw]r}hX-Br~r}r(h|Uh}jzubahjubhX / rr}r(h|jh}jrubj)r}r(h|jh}r(h]h]h]h]h]uh}jrhw]rhX--beatrr}r(h|Uh}jubahjubhX option to celeryd doesn't work?rr}r(h|jh}jrubeubh)r}r(h|XZ**Answer**: That's right. Run ``celerybeat`` and ``celeryd`` as separate services instead.h}jlh~hhhh}r(h]h]h]h]h]uhM`hhhw]r(jA)r}r(h|X **Answer**h}r(h]h]h]h]h]uh}jhw]rhXAnswerrr}r(h|Uh}jubahjIubhX: That's right. Run rr}r(h|X: That's right. Run h}jubj)r}r(h|X``celerybeat``h}r(h]h]h]h]h]uh}jhw]rhX celerybeatrr}r(h|Uh}jubahjubhX and rr}r(h|X and h}jubj)r}r(h|X ``celeryd``h}r(h]h]h]h]h]uh}jhw]rhXcelerydrr}r(h|Uh}jubahjubhX as separate services instead.rr}r(h|X as separate services instead.h}jubeubeubhy)r}r(h|Uh}j%h~hhhh}r(h]h]h]h]rhpah]rh3auhMdhhhw]r(h)r}r(h|X(``django-celery`` can’t find settings?rh}jh~hhhh}r(h]h]h]h]h]j+juhMdhhhw]r(j)r}r(h|jh}r(h]h]h]h]h]uh}jhw]rhX django-celeryrr}r(h|Uh}jubahjubhX can’t find settings?rr}r(h|j!h}jubeubh)r}r(h|XN**Answer**: You need to specify the ``--settings`` argument to ``manage.py``::rh}jh~hhhh}r(h]h]h]h]h]uhMfhhhw]r(jA)r}r(h|X **Answer**h}r(h]h]h]h]h]uh}jhw]rhXAnswerrr}r(h|Uh}jubahjIubhX: You need to specify the rr}r(h|X: You need to specify the h}jubj)r}r(h|X``--settings``h}r(h]h]h]h]h]uh}jhw]rhX --settingsrr}r(h|Uh}jubahjubhX argument to rr}r(h|X argument to h}jubj)r}r(h|X ``manage.py``h}r(h]h]h]h]h]uh}jhw]rhX manage.pyrr}r(h|Uh}jubahjubhX:r}r(h|X:h}jubeubj)r}r(h|X4$ python manage.py celeryd start --settings=settingsh}jh~hhjh}r(jjh]h]h]h]h]uhMhhhhw]rhX4$ python manage.py celeryd start --settings=settingsrr}r(h|Uh}jubaubh)r}r(h|XSee http://bit.ly/bo9RSwrh}jh~hhhh}r(h]h]h]h]h]uhMjhhhw]r(hXSee rr}r(h|XSee h}jubh)r}r(h|Xhttp://bit.ly/bo9RSwrh}r(Urefurijh]h]h]h]h]uh}jhw]rhXhttp://bit.ly/bo9RSwrr}r(h|Uh}jubahhubeubeubeubeubah|UU transformerrNU footnote_refsr}rUrefnamesr}r(X%queue everything and delight everyone]rjLaX1mysql is throwing deadlock errors, what can i do?]r(j<jejY ]rjV aXwhy won't my task run?]rjaXuser guide: remote tasks]rjaj!]rjaXusing other queues]r jRaX0mysql - the innodb transaction model and locking]r jauUsymbol_footnotesr ]r Uautofootnote_refsr ]rUsymbol_footnote_refsr]rU citationsr]rhhU current_linerNUtransform_messagesr]rUreporterrNUid_startrK-U autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror }r!(Ufootnote_backlinksr"KUrecord_dependenciesr#NU rfc_base_urlr$Uhttp://tools.ietf.org/html/r%U tracebackr&Upep_referencesr'NUstrip_commentsr(NU toc_backlinksr)Uentryr*U language_coder+Uenr,U datestampr-NU report_levelr.KU _destinationr/NU halt_levelr0KU strip_classesr1NhNUerror_encoding_error_handlerr2Ubackslashreplacer3Udebugr4NUembed_stylesheetr5Uoutput_encoding_error_handlerr6Ustrictr7U sectnum_xformr8KUdump_transformsr9NU docinfo_xformr:KUwarning_streamr;NUpep_file_url_templater<Upep-%04dr=Uexit_status_levelr>KUconfigr?NUstrict_visitorr@NUcloak_email_addressesrAUtrim_footnote_reference_spacerBUenvrCNUdump_pseudo_xmlrDNUexpose_internalsrENUsectsubtitle_xformrFU source_linkrGNUrfc_referencesrHNUoutput_encodingrIUutf-8rJU source_urlrKNUinput_encodingrLU utf-8-sigrMU_disable_configrNNU id_prefixrOUU tab_widthrPKUerror_encodingrQUUTF-8rRU_sourcerSUA/var/build/user_builds/celery/checkouts/2.0-archived/docs/faq.rstrTUgettext_compactrUU generatorrVNUdump_internalsrWNU smart_quotesrXU pep_base_urlrYUhttp://www.python.org/dev/peps/rZUsyntax_highlightr[Ulongr\Uinput_encoding_error_handlerr]j7Uauto_id_prefixr^Uidr_Udoctitle_xformr`Ustrip_elements_with_classesraNU _config_filesrb]Ufile_insertion_enabledrcU raw_enabledrdKU dump_settingsreNubUsymbol_footnote_startrfKUidsrg}rh(jj hGjZhYjlhrj3jjjjhJjjjjjhnj2hRjihMjjj{jjj[jWjmjih`jh_j\j%j!hpjhtj*jjY)ri}rj(h|Uh}j h~hhj]h}rk(h]h]rljah]Uismodh]h]uhM/hhhw]ubhfj/jEjAj[jWj!jhFj hhhkjhhhhhhhsj]hiji hvj hWjhejhaj, hVjhhEj. hTj; hPj0hNjhdjhSj jj{hhjg jmjihHj jjjjjjjjjjjjj jjjhjj|hgj| hOjs hZj hbj hLjhIj hlhzhqjhKj"hojh[jhUj hQhhDj6 hcj jjh]jh\jj7j3jIjEjjhCj= jjjjhXj hmj%jjjjh^jhuj j3j/jEjAj3j/jmjij[jWjjjj{jjjjuUsubstitution_namesrm}rnhhh}ro(h]h]h]Usourcehh]h]uU footnotesrp]rqUrefidsrr}rsub.PKHDDCywZZ3celery-2.0-archived/.doctrees/configuration.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xworker: celerydqNX#custom component classes (advanced)qNXmongodb backend settingsqNXdatabase backend settingsq NXtask result backend settingsq NXmonitor server: celerymonq NUcontentsq NXsupported databasesq X periodic task server: celerybeatqNXredisqX error e-mailsqNXroutingqNXpylibmcqXtask execution settingsqNX memcachedqXeventsqNXexample configuration fileqNX sqlalchemyqXtokyo tyrant backend settingsqNXmongodbqX tokyo tyrantqXconcurrency settingsqNXmessaging settingsqNXbroadcast commandsqNXredis backend settingsqNXamqp backend settingsqNXconnection stringq Xexample e-mail configurationq!NXloggingq"NXcache backend settingsq#NXexample configurationq$NX connectionq%NXconfiguration and defaultsq&NuUsubstitution_defsq'}q(Uparse_messagesq)]q*(cdocutils.nodes system_message q+)q,}q-(U rawsourceq.UUparentq/cdocutils.nodes section q0)q1}q2(h.UU referencedq3Kh/h0)q4}q5(h.Uh/h0)q6}q7(h.Uh/hUsourceq8cdocutils.nodes reprunicode q9XK/var/build/user_builds/celery/checkouts/2.0-archived/docs/configuration.rstq:q;}qU attributesq?}q@(UdupnamesqA]UclassesqB]UbackrefsqC]UidsqD]qEUconfiguration-and-defaultsqFaUnamesqG]qHh&auUlineqIKUdocumentqJhUchildrenqK]qL(cdocutils.nodes title qM)qN}qO(h.XConfiguration and defaultsqPh/h6h8h;h=UtitleqQh?}qR(hA]hB]hC]hD]hG]uhIKhJhhK]qScdocutils.nodes Text qTXConfiguration and defaultsqUqV}qW(h.hPh/hNubaubcdocutils.nodes paragraph qX)qY}qZ(h.X<This document describes the configuration options available.q[h/h6h8h;h=U paragraphq\h?}q](hA]hB]hC]hD]hG]uhIKhJhhK]q^hTX<This document describes the configuration options available.q_q`}qa(h.h[h/hYubaubhX)qb}qc(h.XIf you're using the default loader, you must create the ``celeryconfig.py`` module and make sure it is available on the Python path.h/h6h8h;h=h\h?}qd(hA]hB]hC]hD]hG]uhIKhJhhK]qe(hTX8If you're using the default loader, you must create the qfqg}qh(h.X8If you're using the default loader, you must create the h/hbubcdocutils.nodes literal qi)qj}qk(h.X``celeryconfig.py``h?}ql(hA]hB]hC]hD]hG]uh/hbhK]qmhTXceleryconfig.pyqnqo}qp(h.Uh/hjubah=UliteralqqubhTX9 module and make sure it is available on the Python path.qrqs}qt(h.X9 module and make sure it is available on the Python path.h/hbubeubcdocutils.nodes topic qu)qv}qw(h.Uh/h6h8h;h=Utopicqxh?}qy(hA]hB]qz(Ucontentsq{Ulocalq|ehC]hD]q}Ucontentsq~ahG]qh auhIK hJhhK]qcdocutils.nodes bullet_list q)q}q(h.Uh/hvh8Nh=U bullet_listqh?}q(hA]hB]hC]hD]hG]uhINhJhhK]q(cdocutils.nodes list_item q)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qhX)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qcdocutils.nodes reference q)q}q(h.Uh?}q(hD]qUid6qahC]hA]hB]hG]UrefidUexample-configuration-filequh/hhK]qhTXExample configuration fileqq}q(h.XExample configuration fileqh/hubah=U referencequbah=h\ubah=U list_itemqubh)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qhX)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qh)q}q(h.Uh?}q(hD]qUid7qahC]hA]hB]hG]UrefidUconcurrency-settingsquh/hhK]qhTXConcurrency settingsqq}q(h.XConcurrency settingsqh/hubah=hubah=h\ubah=hubh)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qhX)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qh)q}q(h.Uh?}q(hD]qUid8qahC]hA]hB]hG]UrefidUtask-result-backend-settingsquh/hhK]qhTXTask result backend settingsqq}q(h.XTask result backend settingsqh/hubah=hubah=h\ubah=hubh)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]q(hX)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qh)q}q(h.Uh?}q(hD]qUid9qahC]hA]hB]hG]UrefidUdatabase-backend-settingsquh/hhK]qhTXDatabase backend settingsqӅq}q(h.XDatabase backend settingsqh/hubah=hubah=h\ubh)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qh)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qhX)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qh)q}q(h.Uh?}q(hD]qUid10qahC]hA]hB]hG]UrefidUexample-configurationquh/hhK]qhTXExample configurationqꅁq}q(h.XExample configurationqh/hubah=hubah=h\ubah=hubah=hubeh=hubh)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]q(hX)q}q(h.Uh?}q(hA]hB]hC]hD]hG]uh/hhK]qh)q}q(h.Uh?}q(hD]qUid11qahC]hA]hB]hG]UrefidUamqp-backend-settingsquh/hhK]qhTXAMQP backend settingsqq}q(h.XAMQP backend settingsrh/hubah=hubah=h\ubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/hhK]rh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/jhK]r h)r }r(h.Uh?}r(hD]rUid12rahC]hA]hB]hG]UrefidUid1ruh/j hK]rhTXExample configurationrr}r(h.XExample configurationrh/j ubah=hubah=h\ubah=hubah=hubeh=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/hhK]r(hX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r }r!(h.Uh?}r"(hD]r#Uid13r$ahC]hA]hB]hG]UrefidUcache-backend-settingsr%uh/jhK]r&hTXCache backend settingsr'r(}r)(h.XCache backend settingsr*h/j ubah=hubah=h\ubh)r+}r,(h.Uh?}r-(hA]hB]hC]hD]hG]uh/jhK]r.h)r/}r0(h.Uh?}r1(hA]hB]hC]hD]hG]uh/j+hK]r2hX)r3}r4(h.Uh?}r5(hA]hB]hC]hD]hG]uh/j/hK]r6h)r7}r8(h.Uh?}r9(hD]r:Uid14r;ahC]hA]hB]hG]UrefidUid2r<uh/j3hK]r=hTXExample configurationr>r?}r@(h.XExample configurationrAh/j7ubah=hubah=h\ubah=hubah=hubeh=hubh)rB}rC(h.Uh?}rD(hA]hB]hC]hD]hG]uh/hhK]rE(hX)rF}rG(h.Uh?}rH(hA]hB]hC]hD]hG]uh/jBhK]rIh)rJ}rK(h.Uh?}rL(hD]rMUid15rNahC]hA]hB]hG]UrefidUtokyo-tyrant-backend-settingsrOuh/jFhK]rPhTXTokyo Tyrant backend settingsrQrR}rS(h.XTokyo Tyrant backend settingsrTh/jJubah=hubah=h\ubh)rU}rV(h.Uh?}rW(hA]hB]hC]hD]hG]uh/jBhK]rXh)rY}rZ(h.Uh?}r[(hA]hB]hC]hD]hG]uh/jUhK]r\hX)r]}r^(h.Uh?}r_(hA]hB]hC]hD]hG]uh/jYhK]r`h)ra}rb(h.Uh?}rc(hD]rdUid16reahC]hA]hB]hG]UrefidUid3rfuh/j]hK]rghTXExample configurationrhri}rj(h.XExample configurationrkh/jaubah=hubah=h\ubah=hubah=hubeh=hubh)rl}rm(h.Uh?}rn(hA]hB]hC]hD]hG]uh/hhK]ro(hX)rp}rq(h.Uh?}rr(hA]hB]hC]hD]hG]uh/jlhK]rsh)rt}ru(h.Uh?}rv(hD]rwUid17rxahC]hA]hB]hG]UrefidUredis-backend-settingsryuh/jphK]rzhTXRedis backend settingsr{r|}r}(h.XRedis backend settingsr~h/jtubah=hubah=h\ubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jlhK]rh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid18rahC]hA]hB]hG]UrefidUid4ruh/jhK]rhTXExample configurationrr}r(h.XExample configurationrh/jubah=hubah=h\ubah=hubah=hubeh=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/hhK]r(hX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid19rahC]hA]hB]hG]UrefidUmongodb-backend-settingsruh/jhK]rhTXMongoDB backend settingsrr}r(h.XMongoDB backend settingsrh/jubah=hubah=h\ubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid20rahC]hA]hB]hG]UrefidUid5ruh/jhK]rhTXExample configurationrr}r(h.XExample configurationrh/jubah=hubah=h\ubah=hubah=hubeh=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/hhK]r(hX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid21rahC]hA]hB]hG]UrefidUmessaging-settingsruh/jhK]rhTXMessaging settingsrr}r(h.XMessaging settingsrh/jubah=hubah=h\ubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(h)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid22rahC]hA]hB]hG]UrefidUroutingruh/jhK]rhTXRoutingrr}r(h.XRoutingrh/jubah=hubah=h\ubah=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid23rahC]hA]hB]hG]UrefidU connectionruh/jhK]rhTX Connectionrr}r(h.X Connectionrh/jubah=hubah=h\ubah=hubeh=hubeh=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/hhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid24r ahC]hA]hB]hG]UrefidUtask-execution-settingsr uh/jhK]r hTXTask execution settingsr r }r(h.XTask execution settingsrh/jubah=hubah=h\ubah=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/hhK]r(hX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid25rahC]hA]hB]hG]UrefidUworker-celerydruh/jhK]rhTXWorker: celerydrr }r!(h.XWorker: celerydr"h/jubah=hubah=h\ubh)r#}r$(h.Uh?}r%(hA]hB]hC]hD]hG]uh/jhK]r&(h)r'}r((h.Uh?}r)(hA]hB]hC]hD]hG]uh/j#hK]r*(hX)r+}r,(h.Uh?}r-(hA]hB]hC]hD]hG]uh/j'hK]r.h)r/}r0(h.Uh?}r1(hD]r2Uid26r3ahC]hA]hB]hG]UrefidU error-e-mailsr4uh/j+hK]r5hTX Error E-Mailsr6r7}r8(h.X Error E-Mailsr9h/j/ubah=hubah=h\ubh)r:}r;(h.Uh?}r<(hA]hB]hC]hD]hG]uh/j'hK]r=h)r>}r?(h.Uh?}r@(hA]hB]hC]hD]hG]uh/j:hK]rAhX)rB}rC(h.Uh?}rD(hA]hB]hC]hD]hG]uh/j>hK]rEh)rF}rG(h.Uh?}rH(hD]rIUid27rJahC]hA]hB]hG]UrefidUexample-e-mail-configurationrKuh/jBhK]rLhTXExample E-Mail configurationrMrN}rO(h.XExample E-Mail configurationrPh/jFubah=hubah=h\ubah=hubah=hubeh=hubh)rQ}rR(h.Uh?}rS(hA]hB]hC]hD]hG]uh/j#hK]rThX)rU}rV(h.Uh?}rW(hA]hB]hC]hD]hG]uh/jQhK]rXh)rY}rZ(h.Uh?}r[(hD]r\Uid28r]ahC]hA]hB]hG]UrefidUeventsr^uh/jUhK]r_hTXEventsr`ra}rb(h.XEventsrch/jYubah=hubah=h\ubah=hubh)rd}re(h.Uh?}rf(hA]hB]hC]hD]hG]uh/j#hK]rghX)rh}ri(h.Uh?}rj(hA]hB]hC]hD]hG]uh/jdhK]rkh)rl}rm(h.Uh?}rn(hD]roUid29rpahC]hA]hB]hG]UrefidUbroadcast-commandsrquh/jhhK]rrhTXBroadcast Commandsrsrt}ru(h.XBroadcast Commandsrvh/jlubah=hubah=h\ubah=hubh)rw}rx(h.Uh?}ry(hA]hB]hC]hD]hG]uh/j#hK]rzhX)r{}r|(h.Uh?}r}(hA]hB]hC]hD]hG]uh/jwhK]r~h)r}r(h.Uh?}r(hD]rUid30rahC]hA]hB]hG]UrefidUloggingruh/j{hK]rhTXLoggingrr}r(h.XLoggingrh/jubah=hubah=h\ubah=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/j#hK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid31rahC]hA]hB]hG]UrefidU!custom-component-classes-advancedruh/jhK]rhTX#Custom Component Classes (advanced)rr}r(h.X#Custom Component Classes (advanced)rh/jubah=hubah=h\ubah=hubeh=hubeh=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/hhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid32rahC]hA]hB]hG]UrefidUperiodic-task-server-celerybeatruh/jhK]rhTX Periodic Task Server: celerybeatrr}r(h.X Periodic Task Server: celerybeatrh/jubah=hubah=h\ubah=hubh)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/hhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rh)r}r(h.Uh?}r(hD]rUid33rahC]hA]hB]hG]UrefidUmonitor-server-celerymonruh/jhK]rhTXMonitor Server: celerymonrr}r(h.XMonitor Server: celerymonrh/jubah=hubah=h\ubah=hubeubaubh0)r}r(h.Uh/h6h8h;h=h>h?}r(hA]hB]hC]hD]rhahG]rhauhIKhJhhK]r(hM)r}r(h.hh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]UrefidrhuhIKhJhhK]rhTXExample configuration filerr}r(h.hh/jubaubhX)r}r(h.XvThis is an example configuration file to get you started. It should contain all you need to run a basic celery set-up.rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhJhhK]rhTXvThis is an example configuration file to get you started. It should contain all you need to run a basic celery set-up.rr}r(h.jh/jubaubcdocutils.nodes literal_block r)r}r(h.X# List of modules to import when celery starts. CELERY_IMPORTS = ("myapp.tasks", ) ## Result store settings. CELERY_RESULT_BACKEND = "database" CELERY_RESULT_DBURI = "sqlite:///mydatabase.db" ## Broker settings. BROKER_HOST = "localhost" BROKER_PORT = 5672 BROKER_VHOST = "/" BROKER_USER = "guest" BROKER_PASSWORD = "guest" ## Worker settings ## If you're doing mostly I/O you can have more processes, ## but if mostly spending CPU, try to keep it close to the ## number of CPUs on your machine. If not set, the number of CPUs/cores ## available will be used. CELERYD_CONCURRENCY = 10 # CELERYD_LOG_FILE = "celeryd.log" # CELERYD_LOG_LEVEL = "INFO"h/jh8h;h=U literal_blockrh?}r(UlinenosrUlanguagerXpythonU xml:spacerUpreserverhD]hC]hA]hB]hG]uhIKhJhhK]rhTX# List of modules to import when celery starts. CELERY_IMPORTS = ("myapp.tasks", ) ## Result store settings. CELERY_RESULT_BACKEND = "database" CELERY_RESULT_DBURI = "sqlite:///mydatabase.db" ## Broker settings. BROKER_HOST = "localhost" BROKER_PORT = 5672 BROKER_VHOST = "/" BROKER_USER = "guest" BROKER_PASSWORD = "guest" ## Worker settings ## If you're doing mostly I/O you can have more processes, ## but if mostly spending CPU, try to keep it close to the ## number of CPUs on your machine. If not set, the number of CPUs/cores ## available will be used. CELERYD_CONCURRENCY = 10 # CELERYD_LOG_FILE = "celeryd.log" # CELERYD_LOG_LEVEL = "INFO"rr}r(h.Uh/jubaubeubh0)r}r(h.Uh/h6h8h;h=h>h?}r(hA]hB]hC]hD]rhahG]rhauhIK-hJhhK]r(hM)r}r(h.hh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jhuhIK-hJhhK]rhTXConcurrency settingsrr}r(h.hh/jubaubh)r}r(h.Uh/jh8h;h=hh?}r(UbulletrX*hD]hC]hA]hB]hG]uhIK/hJhhK]r(h)r}r(h.XCELERYD_CONCURRENCY The number of concurrent worker processes, executing tasks simultaneously. Defaults to the number of CPUs/cores available. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERYD_CONCURRENCYrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIK/hK]rhTXCELERYD_CONCURRENCYrr}r(h.jh/jubaubcdocutils.nodes block_quote r)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r }r (h.XJThe number of concurrent worker processes, executing tasks simultaneously.r h/jh8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIK1hK]r hTXJThe number of concurrent worker processes, executing tasks simultaneously.rr}r(h.j h/j ubaubhX)r}r(h.X/Defaults to the number of CPUs/cores available.rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIK3hK]rhTX/Defaults to the number of CPUs/cores available.rr}r(h.jh/jubaubeh=U block_quoterubeubh)r}r(h.XCELERYD_PREFETCH_MULTIPLIER How many messages to prefetch at a time multiplied by the number of concurrent processes. The default is 4 (four messages for each process). The default setting seems pretty good here. However, if you have very long running tasks waiting in the queue and you have to start the workers, note that the first worker to start will receive four times the number of messages initially. Thus the tasks may not be fairly balanced among the workers. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERYD_PREFETCH_MULTIPLIERr h/jh8h;h=h\h?}r!(hA]hB]hC]hD]hG]uhIK5hK]r"hTXCELERYD_PREFETCH_MULTIPLIERr#r$}r%(h.j h/jubaubj)r&}r'(h.Uh?}r((hA]hB]hC]hD]hG]uh/jhK]r)hX)r*}r+(h.XHow many messages to prefetch at a time multiplied by the number of concurrent processes. The default is 4 (four messages for each process). The default setting seems pretty good here. However, if you have very long running tasks waiting in the queue and you have to start the workers, note that the first worker to start will receive four times the number of messages initially. Thus the tasks may not be fairly balanced among the workers.r,h/j&h8h;h=h\h?}r-(hA]hB]hC]hD]hG]uhIK7hK]r.hTXHow many messages to prefetch at a time multiplied by the number of concurrent processes. The default is 4 (four messages for each process). The default setting seems pretty good here. However, if you have very long running tasks waiting in the queue and you have to start the workers, note that the first worker to start will receive four times the number of messages initially. Thus the tasks may not be fairly balanced among the workers.r/r0}r1(h.j,h/j*ubaubah=jubeubeubeubh0)r2}r3(h.Uh/h6h8h;h=h>h?}r4(hA]hB]hC]hD]r5hahG]r6h auhIKAhJhhK]r7(hM)r8}r9(h.hh/j2h8h;h=hQh?}r:(hD]hC]hA]hB]hG]jhuhIKAhJhhK]r;hTXTask result backend settingsr<r=}r>(h.hh/j8ubaubh)r?}r@(h.Uh/j2h8h;h=hh?}rA(jX*hD]hC]hA]hB]hG]uhIKChJhhK]rBh)rC}rD(h.XUCELERY_RESULT_BACKEND The backend used to store task results (tombstones). Can be one of the following: * database (default) Use a relational database supported by `SQLAlchemy`_. * cache Use `memcached`_ to store the results. * mongodb Use `MongoDB`_ to store the results. * redis Use `Redis`_ to store the results. * tyrant Use `Tokyo Tyrant`_ to store the results. * amqp Send results back as AMQP messages (**WARNING** While very fast, you must make sure you only receive the result once. See :doc:`userguide/executing`). h/j?h8h;h=hh?}rE(hA]hB]hC]hD]hG]uhINhJhhK]rF(hX)rG}rH(h.XCELERY_RESULT_BACKENDrIh/jCh8h;h=h\h?}rJ(hA]hB]hC]hD]hG]uhIKChK]rKhTXCELERY_RESULT_BACKENDrLrM}rN(h.jIh/jGubaubj)rO}rP(h.Uh?}rQ(hA]hB]hC]hD]hG]uh/jChK]rR(hX)rS}rT(h.XQThe backend used to store task results (tombstones). Can be one of the following:rUh/jOh8h;h=h\h?}rV(hA]hB]hC]hD]hG]uhIKEhK]rWhTXQThe backend used to store task results (tombstones). Can be one of the following:rXrY}rZ(h.jUh/jSubaubh)r[}r\(h.Uh?}r](jX*hD]hC]hA]hB]hG]uh/jOhK]r^(h)r_}r`(h.XKdatabase (default) Use a relational database supported by `SQLAlchemy`_. h?}ra(hA]hB]hC]hD]hG]uh/j[hK]rbcdocutils.nodes definition_list rc)rd}re(h.Uh?}rf(hA]hB]hC]hD]hG]uh/j_hK]rgcdocutils.nodes definition_list_item rh)ri}rj(h.XIdatabase (default) Use a relational database supported by `SQLAlchemy`_. h/jdh8h;h=Udefinition_list_itemrkh?}rl(hA]hB]hC]hD]hG]uhIKIhK]rm(cdocutils.nodes term rn)ro}rp(h.Xdatabase (default)rqh/jih8h;h=Utermrrh?}rs(hA]hB]hC]hD]hG]uhIKIhK]rthTXdatabase (default)rurv}rw(h.jqh/joubaubcdocutils.nodes definition rx)ry}rz(h.Uh?}r{(hA]hB]hC]hD]hG]uh/jihK]r|hX)r}}r~(h.X5Use a relational database supported by `SQLAlchemy`_.h/jyh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKIhK]r(hTX'Use a relational database supported by rr}r(h.X'Use a relational database supported by h/j}ubh)r}r(h.X `SQLAlchemy`_UresolvedrKh/j}h=hh?}r(UnameX SQLAlchemyUrefurirXhttp://sqlalchemy.orgrhD]hC]hA]hB]hG]uhK]rhTX SQLAlchemyrr}r(h.Uh/jubaubhTX.r}r(h.X.h/j}ubeubah=U definitionrubeubah=Udefinition_listrubah=hubh)r}r(h.X/cache Use `memcached`_ to store the results. h?}r(hA]hB]hC]hD]hG]uh/j[hK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.X-cache Use `memcached`_ to store the results. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIKLhK]r(jn)r}r(h.Xcacherh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIKLhK]rhTXcacherr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X&Use `memcached`_ to store the results.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKLhK]r(hTXUse rr}r(h.XUse h/jubh)r}r(h.X `memcached`_jKh/jh=hh?}r(UnameX memcachedrjXhttp://memcached.orgrhD]hC]hA]hB]hG]uhK]rhTX memcachedrr}r(h.Uh/jubaubhTX to store the results.rr}r(h.X to store the results.h/jubeubah=jubeubah=jubah=hubh)r}r(h.X/mongodb Use `MongoDB`_ to store the results. h?}r(hA]hB]hC]hD]hG]uh/j[hK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.X-mongodb Use `MongoDB`_ to store the results. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIKOhK]r(jn)r}r(h.Xmongodbrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIKOhK]rhTXmongodbrr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X$Use `MongoDB`_ to store the results.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKOhK]r(hTXUse rr}r(h.XUse h/jubh)r}r(h.X `MongoDB`_jKh/jh=hh?}r(UnameXMongoDBjXhttp://mongodb.orgrhD]hC]hA]hB]hG]uhK]rhTXMongoDBrr}r(h.Uh/jubaubhTX to store the results.rr}r(h.X to store the results.h/jubeubah=jubeubah=jubah=hubh)r}r(h.X+redis Use `Redis`_ to store the results. h?}r(hA]hB]hC]hD]hG]uh/j[hK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.X)redis Use `Redis`_ to store the results. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIKRhK]r(jn)r}r(h.Xredisrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIKRhK]rhTXredisrr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X"Use `Redis`_ to store the results.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKRhK]r(hTXUse rr}r(h.XUse h/jubh)r}r(h.X`Redis`_jKh/jh=hh?}r(UnameXRedisjXhttp://code.google.com/p/redis/r hD]hC]hA]hB]hG]uhK]r hTXRedisr r }r (h.Uh/jubaubhTX to store the results.rr}r(h.X to store the results.h/jubeubah=jubeubah=jubah=hubh)r}r(h.X3tyrant Use `Tokyo Tyrant`_ to store the results. h?}r(hA]hB]hC]hD]hG]uh/j[hK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.X1tyrant Use `Tokyo Tyrant`_ to store the results. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIKUhK]r(jn)r}r(h.Xtyrantrh/jh8h;h=jrh?}r (hA]hB]hC]hD]hG]uhIKUhK]r!hTXtyrantr"r#}r$(h.jh/jubaubjx)r%}r&(h.Uh?}r'(hA]hB]hC]hD]hG]uh/jhK]r(hX)r)}r*(h.X)Use `Tokyo Tyrant`_ to store the results.h/j%h8h;h=h\h?}r+(hA]hB]hC]hD]hG]uhIKUhK]r,(hTXUse r-r.}r/(h.XUse h/j)ubh)r0}r1(h.X`Tokyo Tyrant`_jKh/j)h=hh?}r2(UnameX Tokyo TyrantjXhttp://1978th.net/tokyotyrant/r3hD]hC]hA]hB]hG]uhK]r4hTX Tokyo Tyrantr5r6}r7(h.Uh/j0ubaubhTX to store the results.r8r9}r:(h.X to store the results.h/j)ubeubah=jubeubah=jubah=hubh)r;}r<(h.Xamqp Send results back as AMQP messages (**WARNING** While very fast, you must make sure you only receive the result once. See :doc:`userguide/executing`). h?}r=(hA]hB]hC]hD]hG]uh/j[hK]r>jc)r?}r@(h.Uh?}rA(hA]hB]hC]hD]hG]uh/j;hK]rBjh)rC}rD(h.Xamqp Send results back as AMQP messages (**WARNING** While very fast, you must make sure you only receive the result once. See :doc:`userguide/executing`). h/j?h8h;h=jkh?}rE(hA]hB]hC]hD]hG]uhIK[hK]rF(jn)rG}rH(h.XamqprIh/jCh8h;h=jrh?}rJ(hA]hB]hC]hD]hG]uhIK[hK]rKhTXamqprLrM}rN(h.jIh/jGubaubjx)rO}rP(h.Uh?}rQ(hA]hB]hC]hD]hG]uh/jChK]rRhX)rS}rT(h.XSend results back as AMQP messages (**WARNING** While very fast, you must make sure you only receive the result once. See :doc:`userguide/executing`).h/jOh8h;h=h\h?}rU(hA]hB]hC]hD]hG]uhIKXhK]rV(hTX$Send results back as AMQP messages (rWrX}rY(h.X$Send results back as AMQP messages (h/jSubcdocutils.nodes strong rZ)r[}r\(h.X **WARNING**h?}r](hA]hB]hC]hD]hG]uh/jShK]r^hTXWARNINGr_r`}ra(h.Uh/j[ubah=UstrongrbubhTXK While very fast, you must make sure you only receive the result once. See rcrd}re(h.XK While very fast, you must make sure you only receive the result once. See h/jSubcsphinx.addnodes pending_xref rf)rg}rh(h.X:doc:`userguide/executing`rih/jSh8h;h=U pending_xrefrjh?}rk(UreftypeXdocrlUrefwarnrmU reftargetrnXuserguide/executingU refdomainUhD]hC]U refexplicithA]hB]hG]UrefdocroX configurationrpuhIKXhK]rqhi)rr}rs(h.jih?}rt(hA]hB]ru(UxrefrvjlehC]hD]hG]uh/jghK]rwhTXuserguide/executingrxry}rz(h.Uh/jrubah=hqubaubhTX).r{r|}r}(h.X).h/jSubeubah=jubeubah=jubah=hubeh=hubeh=jubeubaubcdocutils.nodes target r~)r}r(h.X'.. _`SQLAlchemy`: http://sqlalchemy.orgh3Kh/j2h8h;h=Utargetrh?}r(jjhD]rU sqlalchemyrahC]hA]hB]hG]rhauhIK]hJhhK]ubj~)r}r(h.X%.. _`memcached`: http://memcached.orgh3Kh/j2h8h;h=jh?}r(jjhD]rU memcachedrahC]hA]hB]hG]rhauhIK^hJhhK]ubj~)r}r(h.X!.. _`MongoDB`: http://mongodb.orgh3Kh/j2h8h;h=jh?}r(jjhD]rUmongodbrahC]hA]hB]hG]rhauhIK_hJhhK]ubj~)r}r(h.X,.. _`Redis`: http://code.google.com/p/redis/h3Kh/j2h8h;h=jh?}r(jj hD]rUredisrahC]hA]hB]hG]rhauhIK`hJhhK]ubj~)r}r(h.X2.. _`Tokyo Tyrant`: http://1978th.net/tokyotyrant/h3Kh/j2h8h;h=jh?}r(jj3hD]rU tokyo-tyrantrahC]hA]hB]hG]rhauhIKahJhhK]ubeubh0)r}r(h.Uh/h6h8h;h=h>h?}r(hA]hB]hC]hD]rhahG]rh auhIKdhJhhK]r(hM)r}r(h.hh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jhuhIKdhJhhK]rhTXDatabase backend settingsrr}r(h.hh/jubaubhX)r}r(h.XPlease see `Supported Databases`_ for a table of supported databases. To use this backend you need to configure it with an `Connection String`_, some examples include:h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKfhJhhK]r(hTX Please see rr}r(h.X Please see h/jubh)r}r(h.X`Supported Databases`_jKh/jh=hh?}r(UnameXSupported DatabasesjX@http://www.sqlalchemy.org/docs/dbengine.html#supported-databasesrhD]hC]hA]hB]hG]uhK]rhTXSupported Databasesrr}r(h.Uh/jubaubhTXZ for a table of supported databases. To use this backend you need to configure it with an rr}r(h.XZ for a table of supported databases. To use this backend you need to configure it with an h/jubh)r}r(h.X`Connection String`_jKh/jh=hh?}r(UnameXConnection StringjXHhttp://www.sqlalchemy.org/docs/dbengine.html#create-engine-url-argumentsrhD]hC]hA]hB]hG]uhK]rhTXConnection Stringrr}r(h.Uh/jubaubhTX, some examples include:rr}r(h.X, some examples include:h/jubeubj)r}r(h.X*# sqlite (filename) CELERY_RESULT_DBURI = "sqlite:///celerydb.sqlite" # mysql CELERY_RESULT_DBURI = "mysql://scott:tiger@localhost/foo" # postgresql CELERY_RESULT_DBURI = "postgresql://scott:tiger@localhost/mydatabase" # oracle CELERY_RESULT_DBURI = "oracle://scott:tiger@127.0.0.1:1521/sidname"h/jh8h;h=jh?}r(jjXpythonjjhD]hC]hA]hB]hG]uhIKjhJhhK]rhTX*# sqlite (filename) CELERY_RESULT_DBURI = "sqlite:///celerydb.sqlite" # mysql CELERY_RESULT_DBURI = "mysql://scott:tiger@localhost/foo" # postgresql CELERY_RESULT_DBURI = "postgresql://scott:tiger@localhost/mydatabase" # oracle CELERY_RESULT_DBURI = "oracle://scott:tiger@127.0.0.1:1521/sidname"rr}r(h.Uh/jubaubhX)r}r(h.XGSee `Connection String`_ for more information about connection strings.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKxhJhhK]r(hTXSee rr}r(h.XSee h/jubh)r}r(h.X`Connection String`_jKh/jh=hh?}r(UnameXConnection StringjjhD]hC]hA]hB]hG]uhK]rhTXConnection Stringrr}r(h.Uh/jubaubhTX/ for more information about connection strings.rr}r(h.X/ for more information about connection strings.h/jubeubhX)r}r(h.XsTo specify additional SQLAlchemy database engine options you can use the ``CELERY_RESULT_ENGINE_OPTIONS`` setting::h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIK{hJhhK]r(hTXITo specify additional SQLAlchemy database engine options you can use the rr}r(h.XITo specify additional SQLAlchemy database engine options you can use the h/jubhi)r}r(h.X ``CELERY_RESULT_ENGINE_OPTIONS``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXCELERY_RESULT_ENGINE_OPTIONSrr}r(h.Uh/jubah=hqubhTX setting:rr}r(h.X setting:h/jubeubj)r}r(h.X]# echo enables verbose logging from SQLAlchemy. CELERY_RESULT_ENGINE_OPTIONS = {"echo": True}h/jh8h;h=jh?}r(jjhD]hC]hA]hB]hG]uhIK~hJhhK]rhTX]# echo enables verbose logging from SQLAlchemy. CELERY_RESULT_ENGINE_OPTIONS = {"echo": True}rr}r(h.Uh/jubaubj~)r}r(h.X_.. _`Supported Databases`: http://www.sqlalchemy.org/docs/dbengine.html#supported-databasesh3Kh/jh8h;h=jh?}r(jjhD]rUsupported-databasesrahC]hA]hB]hG]rh auhIKhJhhK]ubj~)r}r(h.Xe.. _`Connection String`: http://www.sqlalchemy.org/docs/dbengine.html#create-engine-url-argumentsh3Kh/jh8h;h=jh?}r(jjhD]rUconnection-stringrahC]hA]hB]hG]rh auhIKhJhhK]ubh0)r}r(h.Uh3Kh/jh8h;h=h>h?}r(hA]rXexample configurationrahB]hC]hD]r hahG]uhIKhJhhK]r (hM)r }r (h.hh/jh8h;h=hQh?}r (hD]hC]hA]hB]hG]jhuhIKhJhhK]rhTXExample configurationrr}r(h.hh/j ubaubj)r}r(h.X\CELERY_RESULT_BACKEND = "database" CELERY_RESULT_DBURI = "mysql://user:password@host/dbname"h/jh8h;h=jh?}r(jjXpythonjjhD]hC]hA]hB]hG]uhIKhJhhK]rhTX\CELERY_RESULT_BACKEND = "database" CELERY_RESULT_DBURI = "mysql://user:password@host/dbname"rr}r(h.Uh/jubaubeubeubh4h0)r}r(h.Uh/h6h8h;h=h>h?}r(hA]hB]hC]hD]rj%ahG]rh#auhIKhJhhK]r(hM)r}r (h.j*h/jh8h;h=hQh?}r!(hD]hC]hA]hB]hG]jj$uhIKhJhhK]r"hTXCache backend settingsr#r$}r%(h.j*h/jubaubhX)r&}r'(h.XThe cache backend supports the `pylibmc`_ and `python-memcached` libraries. The latter is used only if `pylibmc`_ is not installed.h/jh8h;h=h\h?}r((hA]hB]hC]hD]hG]uhIKhJhhK]r)(hTXThe cache backend supports the r*r+}r,(h.XThe cache backend supports the h/j&ubh)r-}r.(h.X `pylibmc`_jKh/j&h=hh?}r/(UnameXpylibmcr0jX&http://sendapatch.se/projects/pylibmc/r1hD]hC]hA]hB]hG]uhK]r2hTXpylibmcr3r4}r5(h.Uh/j-ubaubhTX and r6r7}r8(h.X and h/j&ubcdocutils.nodes title_reference r9)r:}r;(h.X`python-memcached`h?}r<(hA]hB]hC]hD]hG]uh/j&hK]r=hTXpython-memcachedr>r?}r@(h.Uh/j:ubah=Utitle_referencerAubhTX' libraries. The latter is used only if rBrC}rD(h.X' libraries. The latter is used only if h/j&ubh)rE}rF(h.X `pylibmc`_jKh/j&h=hh?}rG(UnameXpylibmcjj1hD]hC]hA]hB]hG]uhK]rHhTXpylibmcrIrJ}rK(h.Uh/jEubaubhTX is not installed.rLrM}rN(h.X is not installed.h/j&ubeubh0)rO}rP(h.Uh3Kh/jh8h;h=h>h?}rQ(hA]rRXexample configurationrSahB]hC]hD]rTj<ahG]uhIKhJhhK]rU(hM)rV}rW(h.jAh/jOh8h;h=hQh?}rX(hD]hC]hA]hB]hG]jj;uhIKhJhhK]rYhTXExample configurationrZr[}r\(h.jAh/jVubaubhX)r]}r^(h.X Using a single memcached server:r_h/jOh8h;h=h\h?}r`(hA]hB]hC]hD]hG]uhIKhJhhK]rahTX Using a single memcached server:rbrc}rd(h.j_h/j]ubaubj)re}rf(h.X5CELERY_CACHE_BACKEND = 'memcached://127.0.0.1:11211/'h/jOh8h;h=jh?}rg(jjXpythonjjhD]hC]hA]hB]hG]uhIKhJhhK]rhhTX5CELERY_CACHE_BACKEND = 'memcached://127.0.0.1:11211/'rirj}rk(h.Uh/jeubaubhX)rl}rm(h.X!Using multiple memcached servers:rnh/jOh8h;h=h\h?}ro(hA]hB]hC]hD]hG]uhIKhJhhK]rphTX!Using multiple memcached servers:rqrr}rs(h.jnh/jlubaubj)rt}ru(h.XmCELERY_RESULT_BACKEND = "cache" CELERY_CACHE_BACKEND = 'memcached://172.19.26.240:11211;172.19.26.242:11211/'h/jOh8h;h=jh?}rv(jjXpythonjjhD]hC]hA]hB]hG]uhIKhJhhK]rwhTXmCELERY_RESULT_BACKEND = "cache" CELERY_CACHE_BACKEND = 'memcached://172.19.26.240:11211;172.19.26.242:11211/'rxry}rz(h.Uh/jtubaubhX)r{}r|(h.XOYou can set pylibmc options using the ``CELERY_CACHE_BACKEND_OPTIONS`` setting:h/jOh8h;h=h\h?}r}(hA]hB]hC]hD]hG]uhIKhJhhK]r~(hTX&You can set pylibmc options using the rr}r(h.X&You can set pylibmc options using the h/j{ubhi)r}r(h.X ``CELERY_CACHE_BACKEND_OPTIONS``h?}r(hA]hB]hC]hD]hG]uh/j{hK]rhTXCELERY_CACHE_BACKEND_OPTIONSrr}r(h.Uh/jubah=hqubhTX setting:rr}r(h.X setting:h/j{ubeubj)r}r(h.XsCELERY_CACHE_BACKEND_OPTIONS = {"binary": True, "behaviors": {"tcp_nodelay": True}}h/jOh8h;h=jh?}r(jjXpythonjjhD]hC]hA]hB]hG]uhIKhJhhK]rhTXsCELERY_CACHE_BACKEND_OPTIONS = {"binary": True, "behaviors": {"tcp_nodelay": True}}rr}r(h.Uh/jubaubj~)r}r(h.X5.. _`pylibmc`: http://sendapatch.se/projects/pylibmc/h3Kh/jOh8h;h=jh?}r(jj1hD]rUpylibmcrahC]hA]hB]hG]rhauhIKhJhhK]ubeubeubh0)r}r(h.Uh/h6h8h;h=h>h?}r(hA]hB]hC]hD]rjOahG]rhauhIKhJhhK]r(hM)r}r(h.jTh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jjNuhIKhJhhK]rhTXTokyo Tyrant backend settingsrr}r(h.jTh/jubaubjc)r}r(h.Uh/jh8h;h=jh?}r(hA]hB]hC]hD]hG]uhINhJhhK]rjh)r}r(h.Xn**NOTE** The Tokyo Tyrant backend requires the :mod:`pytyrant` library: http://pypi.python.org/pypi/pytyrant/ h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIKhK]r(jn)r}r(h.XG**NOTE** The Tokyo Tyrant backend requires the :mod:`pytyrant` library:rh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIKhK]r(jZ)r}r(h.X**NOTE**h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXNOTErr}r(h.Uh/jubah=jbubhTX' The Tokyo Tyrant backend requires the rr}r(h.X' The Tokyo Tyrant backend requires the h/jubjf)r}r(h.X:mod:`pytyrant`rh/jh8h;h=jjh?}r(UreftypeXmodjmjnXpytyrantU refdomainXpyrhD]hC]U refexplicithA]hB]hG]jojpUpy:classrNU py:modulerNuhIKhK]rhi)r}r(h.jh?}r(hA]hB]r(jvjXpy-modrehC]hD]hG]uh/jhK]rhTXpytyrantrr}r(h.Uh/jubah=hqubaubhTX library:rr}r(h.X library:h/jubeubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X%http://pypi.python.org/pypi/pytyrant/rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]rh)r}r(h.jh?}r(UrefurijhD]hC]hA]hB]hG]uh/jhK]rhTX%http://pypi.python.org/pypi/pytyrant/rr}r(h.Uh/jubah=hubaubah=jubeubaubhX)r}r(h.XGThis backend requires the following configuration directives to be set:rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhJhhK]rhTXGThis backend requires the following configuration directives to be set:rr}r(h.jh/jubaubh)r}r(h.Uh/jh8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIKhJhhK]r(h)r}r(h.X/TT_HOST Hostname of the Tokyo Tyrant server. h/jh8Nh=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.X-TT_HOST Hostname of the Tokyo Tyrant server. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIKhK]r(jn)r}r(h.XTT_HOSTrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIKhK]rhTXTT_HOSTrr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X$Hostname of the Tokyo Tyrant server.rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]r hTX$Hostname of the Tokyo Tyrant server.r r }r (h.jh/jubaubah=jubeubah=jubaubh)r }r(h.X=TT_PORT The port the Tokyo Tyrant server is listening to. h/jh8Nh=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/j hK]rjh)r}r(h.X;TT_PORT The port the Tokyo Tyrant server is listening to. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIKhK]r(jn)r}r(h.XTT_PORTrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIKhK]rhTXTT_PORTrr}r (h.jh/jubaubjx)r!}r"(h.Uh?}r#(hA]hB]hC]hD]hG]uh/jhK]r$hX)r%}r&(h.X1The port the Tokyo Tyrant server is listening to.r'h/j!h8h;h=h\h?}r((hA]hB]hC]hD]hG]uhIKhK]r)hTX1The port the Tokyo Tyrant server is listening to.r*r+}r,(h.j'h/j%ubaubah=jubeubah=jubaubeubh0)r-}r.(h.Uh3Kh/jh8h;h=h>h?}r/(hA]r0Xexample configurationr1ahB]hC]hD]r2jfahG]uhIKhJhhK]r3(hM)r4}r5(h.jkh/j-h8h;h=hQh?}r6(hD]hC]hA]hB]hG]jjeuhIKhJhhK]r7hTXExample configurationr8r9}r:(h.jkh/j4ubaubj)r;}r<(h.XECELERY_RESULT_BACKEND = "tyrant" TT_HOST = "localhost" TT_PORT = 1978h/j-h8h;h=jh?}r=(jjXpythonjjhD]hC]hA]hB]hG]uhIKhJhhK]r>hTXECELERY_RESULT_BACKEND = "tyrant" TT_HOST = "localhost" TT_PORT = 1978r?r@}rA(h.Uh/j;ubaubeubeubh0)rB}rC(h.Uh/h6h8h;h=h>h?}rD(hA]hB]hC]hD]rEjyahG]rFhauhIKhJhhK]rG(hM)rH}rI(h.j~h/jBh8h;h=hQh?}rJ(hD]hC]hA]hB]hG]jjxuhIKhJhhK]rKhTXRedis backend settingsrLrM}rN(h.j~h/jHubaubjc)rO}rP(h.Uh/jBh8h;h=jh?}rQ(hA]hB]hC]hD]hG]uhINhJhhK]rRjh)rS}rT(h.Xf**NOTE** The Redis backend requires the :mod:`redis` library: http://pypi.python.org/pypi/redis/0.5.5 h/jOh8h;h=jkh?}rU(hA]hB]hC]hD]hG]uhIKhK]rV(jn)rW}rX(h.X=**NOTE** The Redis backend requires the :mod:`redis` library:rYh/jSh8h;h=jrh?}rZ(hA]hB]hC]hD]hG]uhIKhK]r[(jZ)r\}r](h.X**NOTE**h?}r^(hA]hB]hC]hD]hG]uh/jWhK]r_hTXNOTEr`ra}rb(h.Uh/j\ubah=jbubhTX The Redis backend requires the rcrd}re(h.X The Redis backend requires the h/jWubjf)rf}rg(h.X :mod:`redis`rhh/jWh8h;h=jjh?}ri(UreftypeXmodjmjnXredisU refdomainXpyrjhD]hC]U refexplicithA]hB]hG]jojpjNjNuhIKhK]rkhi)rl}rm(h.jhh?}rn(hA]hB]ro(jvjjXpy-modrpehC]hD]hG]uh/jfhK]rqhTXredisrrrs}rt(h.Uh/jlubah=hqubaubhTX library:rurv}rw(h.X library:h/jWubeubjx)rx}ry(h.Uh?}rz(hA]hB]hC]hD]hG]uh/jShK]r{hX)r|}r}(h.X'http://pypi.python.org/pypi/redis/0.5.5r~h/jxh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]rh)r}r(h.j~h?}r(Urefurij~hD]hC]hA]hB]hG]uh/j|hK]rhTX'http://pypi.python.org/pypi/redis/0.5.5rr}r(h.Uh/jubah=hubaubah=jubeubaubhX)r}r(h.X>To install the redis package use ``pip`` or ``easy_install``::rh/jBh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhJhhK]r(hTX!To install the redis package use rr}r(h.X!To install the redis package use h/jubhi)r}r(h.X``pip``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXpiprr}r(h.Uh/jubah=hqubhTX or rr}r(h.X or h/jubhi)r}r(h.X``easy_install``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX easy_installrr}r(h.Uh/jubah=hqubhTX:r}r(h.X:h/jubeubj)r}r(h.X$ pip install redish/jBh8h;h=jh?}r(jjhD]hC]hA]hB]hG]uhIKhJhhK]rhTX$ pip install redisrr}r(h.Uh/jubaubhX)r}r(h.XGThis backend requires the following configuration directives to be set:rh/jBh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhJhhK]rhTXGThis backend requires the following configuration directives to be set:rr}r(h.jh/jubaubh)r}r(h.Uh/jBh8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIKhJhhK]r(h)r}r(h.XKREDIS_HOST Hostname of the Redis database server. e.g. ``"localhost"``. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.X REDIS_HOSTrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]rhTX REDIS_HOSTrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X<Hostname of the Redis database server. e.g. ``"localhost"``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]r(hTX,Hostname of the Redis database server. e.g. rr}r(h.X,Hostname of the Redis database server. e.g. h/jubhi)r}r(h.X``"localhost"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX "localhost"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubh)r}r(h.X@REDIS_PORT Port to the Redis database server. e.g. ``6379``. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.X REDIS_PORTrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]rhTX REDIS_PORTrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X1Port to the Redis database server. e.g. ``6379``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]r(hTX(Port to the Redis database server. e.g. rr}r(h.X(Port to the Redis database server. e.g. h/jubhi)r}r(h.X``6379``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX6379rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubeubhX)r}r(h.XDAlso, the following optional configuration directives are available:rh/jBh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhJhhK]rhTXDAlso, the following optional configuration directives are available:rr}r(h.jh/jubaubh)r}r(h.Uh/jBh8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIKhJhhK]r(h)r}r(h.X1REDIS_DB Database number to use. Default is 0 h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XREDIS_DBrh/jh8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIKhK]r hTXREDIS_DBr r }r (h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X$Database number to use. Default is 0rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]rhTX$Database number to use. Default is 0rr}r(h.jh/jubaubah=jubeubh)r}r(h.X<REDIS_PASSWORD Password used to connect to the database. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XREDIS_PASSWORDr h/jh8h;h=h\h?}r!(hA]hB]hC]hD]hG]uhIKhK]r"hTXREDIS_PASSWORDr#r$}r%(h.j h/jubaubj)r&}r'(h.Uh?}r((hA]hB]hC]hD]hG]uh/jhK]r)hX)r*}r+(h.X)Password used to connect to the database.r,h/j&h8h;h=h\h?}r-(hA]hB]hC]hD]hG]uhIKhK]r.hTX)Password used to connect to the database.r/r0}r1(h.j,h/j*ubaubah=jubeubeubh0)r2}r3(h.Uh3Kh/jBh8h;h=h>h?}r4(hA]r5Xexample configurationr6ahB]hC]hD]r7jahG]uhIMhJhhK]r8(hM)r9}r:(h.jh/j2h8h;h=hQh?}r;(hD]hC]hA]hB]hG]jjuhIMhJhhK]r<hTXExample configurationr=r>}r?(h.jh/j9ubaubj)r@}rA(h.XCELERY_RESULT_BACKEND = "redis" REDIS_HOST = "localhost" REDIS_PORT = 6379 REDIS_DB = "celery_results" REDIS_CONNECT_RETRY=Trueh/j2h8h;h=jh?}rB(jjXpythonjjhD]hC]hA]hB]hG]uhIMhJhhK]rChTXCELERY_RESULT_BACKEND = "redis" REDIS_HOST = "localhost" REDIS_PORT = 6379 REDIS_DB = "celery_results" REDIS_CONNECT_RETRY=TruerDrE}rF(h.Uh/j@ubaubeubeubh0)rG}rH(h.Uh/h6h8h;h=h>h?}rI(hA]hB]hC]hD]rJjahG]rKhauhIM hJhhK]rL(hM)rM}rN(h.jh/jGh8h;h=hQh?}rO(hD]hC]hA]hB]hG]jjuhIM hJhhK]rPhTXMongoDB backend settingsrQrR}rS(h.jh/jMubaubjc)rT}rU(h.Uh/jGh8h;h=jh?}rV(hA]hB]hC]hD]hG]uhINhJhhK]rWjh)rX}rY(h.X|**NOTE** The MongoDB backend requires the :mod:`pymongo` library: http://github.com/mongodb/mongo-python-driver/tree/master h/jTh8h;h=jkh?}rZ(hA]hB]hC]hD]hG]uhIMhK]r[(jn)r\}r](h.XA**NOTE** The MongoDB backend requires the :mod:`pymongo` library:r^h/jXh8h;h=jrh?}r_(hA]hB]hC]hD]hG]uhIMhK]r`(jZ)ra}rb(h.X**NOTE**h?}rc(hA]hB]hC]hD]hG]uh/j\hK]rdhTXNOTErerf}rg(h.Uh/jaubah=jbubhTX" The MongoDB backend requires the rhri}rj(h.X" The MongoDB backend requires the h/j\ubjf)rk}rl(h.X:mod:`pymongo`rmh/j\h8h;h=jjh?}rn(UreftypeXmodjmjnXpymongoU refdomainXpyrohD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMhK]rphi)rq}rr(h.jmh?}rs(hA]hB]rt(jvjoXpy-modruehC]hD]hG]uh/jkhK]rvhTXpymongorwrx}ry(h.Uh/jqubah=hqubaubhTX library:rzr{}r|(h.X library:h/j\ubeubjx)r}}r~(h.Uh?}r(hA]hB]hC]hD]hG]uh/jXhK]rhX)r}r(h.X9http://github.com/mongodb/mongo-python-driver/tree/masterrh/j}h8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rh)r}r(h.jh?}r(UrefurijhD]hC]hA]hB]hG]uh/jhK]rhTX9http://github.com/mongodb/mongo-python-driver/tree/masterrr}r(h.Uh/jubah=hubaubah=jubeubaubh)r}r(h.Uh/jGh8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIMhJhhK]rh)r}r(h.XECELERY_MONGODB_BACKEND_SETTINGS This is a dict supporting the following keys: * host Hostname of the MongoDB server. Defaults to "localhost". * port The port the MongoDB server is listening to. Defaults to 27017. * user User name to authenticate to the MongoDB server as (optional). * password Password to authenticate to the MongoDB server (optional). * database The database name to connect to. Defaults to "celery". * taskmeta_collection The collection name to store task meta data. Defaults to "celery_taskmeta". h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_MONGODB_BACKEND_SETTINGSrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXCELERY_MONGODB_BACKEND_SETTINGSrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r}r(h.X-This is a dict supporting the following keys:rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTX-This is a dict supporting the following keys:rr}r(h.jh/jubaubh)r}r(h.Uh?}r(jX*hD]hC]hA]hB]hG]uh/jhK]r(h)r}r(h.X@host Hostname of the MongoDB server. Defaults to "localhost". h?}r(hA]hB]hC]hD]hG]uh/jhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.X>host Hostname of the MongoDB server. Defaults to "localhost". h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIMhK]r(jn)r}r(h.Xhostrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXhostrr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X8Hostname of the MongoDB server. Defaults to "localhost".rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTX8Hostname of the MongoDB server. Defaults to "localhost".rr}r(h.jh/jubaubah=jubeubah=jubah=hubh)r}r(h.XGport The port the MongoDB server is listening to. Defaults to 27017. h?}r(hA]hB]hC]hD]hG]uh/jhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.XEport The port the MongoDB server is listening to. Defaults to 27017. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIMhK]r(jn)r}r(h.Xportrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXportrr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X?The port the MongoDB server is listening to. Defaults to 27017.rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTX?The port the MongoDB server is listening to. Defaults to 27017.rr}r(h.jh/jubaubah=jubeubah=jubah=hubh)r}r(h.XFuser User name to authenticate to the MongoDB server as (optional). h?}r(hA]hB]hC]hD]hG]uh/jhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.XDuser User name to authenticate to the MongoDB server as (optional). h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIMhK]r(jn)r}r(h.Xuserrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXuserrr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X>User name to authenticate to the MongoDB server as (optional).rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r hTX>User name to authenticate to the MongoDB server as (optional).r r }r (h.jh/jubaubah=jubeubah=jubah=hubh)r }r(h.XFpassword Password to authenticate to the MongoDB server (optional). h?}r(hA]hB]hC]hD]hG]uh/jhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/j hK]rjh)r}r(h.XDpassword Password to authenticate to the MongoDB server (optional). h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIM hK]r(jn)r}r(h.Xpasswordrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIM hK]rhTXpasswordrr}r (h.jh/jubaubjx)r!}r"(h.Uh?}r#(hA]hB]hC]hD]hG]uh/jhK]r$hX)r%}r&(h.X:Password to authenticate to the MongoDB server (optional).r'h/j!h8h;h=h\h?}r((hA]hB]hC]hD]hG]uhIM hK]r)hTX:Password to authenticate to the MongoDB server (optional).r*r+}r,(h.j'h/j%ubaubah=jubeubah=jubah=hubh)r-}r.(h.XBdatabase The database name to connect to. Defaults to "celery". h?}r/(hA]hB]hC]hD]hG]uh/jhK]r0jc)r1}r2(h.Uh?}r3(hA]hB]hC]hD]hG]uh/j-hK]r4jh)r5}r6(h.X@database The database name to connect to. Defaults to "celery". h/j1h8h;h=jkh?}r7(hA]hB]hC]hD]hG]uhIM#hK]r8(jn)r9}r:(h.Xdatabaser;h/j5h8h;h=jrh?}r<(hA]hB]hC]hD]hG]uhIM#hK]r=hTXdatabaser>r?}r@(h.j;h/j9ubaubjx)rA}rB(h.Uh?}rC(hA]hB]hC]hD]hG]uh/j5hK]rDhX)rE}rF(h.X6The database name to connect to. Defaults to "celery".rGh/jAh8h;h=h\h?}rH(hA]hB]hC]hD]hG]uhIM#hK]rIhTX6The database name to connect to. Defaults to "celery".rJrK}rL(h.jGh/jEubaubah=jubeubah=jubah=hubh)rM}rN(h.Xetaskmeta_collection The collection name to store task meta data. Defaults to "celery_taskmeta". h?}rO(hA]hB]hC]hD]hG]uh/jhK]rPjc)rQ}rR(h.Uh?}rS(hA]hB]hC]hD]hG]uh/jMhK]rTjh)rU}rV(h.Xataskmeta_collection The collection name to store task meta data. Defaults to "celery_taskmeta". h/jQh8h;h=jkh?}rW(hA]hB]hC]hD]hG]uhIM(hK]rX(jn)rY}rZ(h.Xtaskmeta_collectionr[h/jUh8h;h=jrh?}r\(hA]hB]hC]hD]hG]uhIM(hK]r]hTXtaskmeta_collectionr^r_}r`(h.j[h/jYubaubjx)ra}rb(h.Uh?}rc(hA]hB]hC]hD]hG]uh/jUhK]rdhX)re}rf(h.XKThe collection name to store task meta data. Defaults to "celery_taskmeta".rgh/jah8h;h=h\h?}rh(hA]hB]hC]hD]hG]uhIM&hK]rihTXKThe collection name to store task meta data. Defaults to "celery_taskmeta".rjrk}rl(h.jgh/jeubaubah=jubeubah=jubah=hubeh=hubeh=jubeubaubh0)rm}rn(h.Uh3Kh/jGh8h;h=h>h?}ro(hA]rpXexample configurationrqahB]hC]hD]rrjahG]uhIM+hJhhK]rs(hM)rt}ru(h.jh/jmh8h;h=hQh?}rv(hD]hC]hA]hB]hG]jjuhIM+hJhhK]rwhTXExample configurationrxry}rz(h.jh/jtubaubj)r{}r|(h.XCELERY_RESULT_BACKEND = "mongodb" CELERY_MONGODB_BACKEND_SETTINGS = { "host": "192.168.1.100", "port": 30000, "database": "mydb", "taskmeta_collection": "my_taskmeta_collection", }h/jmh8h;h=jh?}r}(jjXpythonjjhD]hC]hA]hB]hG]uhIM-hJhhK]r~hTXCELERY_RESULT_BACKEND = "mongodb" CELERY_MONGODB_BACKEND_SETTINGS = { "host": "192.168.1.100", "port": 30000, "database": "mydb", "taskmeta_collection": "my_taskmeta_collection", }rr}r(h.Uh/j{ubaubeubeubh0)r}r(h.Uh/h6h8h;h=h>h?}r(hA]hB]hC]hD]rjahG]rhauhIM9hJhhK]r(hM)r}r(h.jh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jjuhIM9hJhhK]rhTXMessaging settingsrr}r(h.jh/jubaubh0)r}r(h.Uh/jh8h;h=h>h?}r(hA]hB]hC]hD]rjahG]rhauhIM<hJhhK]r(hM)r}r(h.jh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jjuhIM<hJhhK]rhTXRoutingrr}r(h.jh/jubaubh)r}r(h.Uh/jh8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIM>hJhhK]r(h)r}r(h.XRCELERY_QUEUES The mapping of queues the worker consumes from. This is a dictionary of queue name/options. See :doc:`userguide/routing` for more information. The default is a queue/exchange/binding key of ``"celery"``, with exchange type ``direct``. You don't have to care about this unless you want custom routing facilities. h/jh8Nh=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.XHCELERY_QUEUES The mapping of queues the worker consumes from. This is a dictionary of queue name/options. See :doc:`userguide/routing` for more information. The default is a queue/exchange/binding key of ``"celery"``, with exchange type ``direct``. You don't have to care about this unless you want custom routing facilities. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIMEhK]r(jn)r}r(h.X CELERY_QUEUESrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIMEhK]rhTX CELERY_QUEUESrr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r}r(h.XThe mapping of queues the worker consumes from. This is a dictionary of queue name/options. See :doc:`userguide/routing` for more information.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIM?hK]r(hTX`The mapping of queues the worker consumes from. This is a dictionary of queue name/options. See rr}r(h.X`The mapping of queues the worker consumes from. This is a dictionary of queue name/options. See h/jubjf)r}r(h.X:doc:`userguide/routing`rh/jh8h;h=jjh?}r(UreftypeXdocrjmjnXuserguide/routingU refdomainUhD]hC]U refexplicithA]hB]hG]jojpuhIM?hK]rhi)r}r(h.jh?}r(hA]hB]r(jvjehC]hD]hG]uh/jhK]rhTXuserguide/routingrr}r(h.Uh/jubah=hqubaubhTX for more information.rr}r(h.X for more information.h/jubeubhX)r}r(h.X[The default is a queue/exchange/binding key of ``"celery"``, with exchange type ``direct``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMBhK]r(hTX/The default is a queue/exchange/binding key of rr}r(h.X/The default is a queue/exchange/binding key of h/jubhi)r}r(h.X ``"celery"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX"celery"rr}r(h.Uh/jubah=hqubhTX, with exchange type rr}r(h.X, with exchange type h/jubhi)r}r(h.X ``direct``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXdirectrr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubhX)r}r(h.XLYou don't have to care about this unless you want custom routing facilities.rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMEhK]rhTXLYou don't have to care about this unless you want custom routing facilities.rr}r(h.jh/jubaubeh=jubeubah=jubaubh)r}r(h.XCELERY_DEFAULT_QUEUE The queue used by default, if no custom queue is specified. This queue must be listed in ``CELERY_QUEUES``. The default is: ``celery``. h/jh8Nh=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.XCELERY_DEFAULT_QUEUE The queue used by default, if no custom queue is specified. This queue must be listed in ``CELERY_QUEUES``. The default is: ``celery``. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIMJhK]r(jn)r}r(h.XCELERY_DEFAULT_QUEUEr h/jh8h;h=jrh?}r (hA]hB]hC]hD]hG]uhIMJhK]r hTXCELERY_DEFAULT_QUEUEr r }r (h.j h/jubaubjx)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/jhK]r hX)r }r (h.XThe queue used by default, if no custom queue is specified. This queue must be listed in ``CELERY_QUEUES``. The default is: ``celery``.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMHhK]r (hTXYThe queue used by default, if no custom queue is specified. This queue must be listed in r r }r (h.XYThe queue used by default, if no custom queue is specified. This queue must be listed in h/j ubhi)r }r (h.X``CELERY_QUEUES``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX CELERY_QUEUESr r }r (h.Uh/j ubah=hqubhTX. The default is: r r }r (h.X. The default is: h/j ubhi)r }r (h.X ``celery``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXceleryr r }r! (h.Uh/j ubah=hqubhTX.r" }r# (h.X.h/j ubeubah=jubeubah=jubaubh)r$ }r% (h.XCELERY_DEFAULT_EXCHANGE Name of the default exchange to use when no custom exchange is specified. The default is: ``celery``. h/jh8Nh=hh?}r& (hA]hB]hC]hD]hG]uhINhJhhK]r' jc)r( }r) (h.Uh?}r* (hA]hB]hC]hD]hG]uh/j$ hK]r+ jh)r, }r- (h.X~CELERY_DEFAULT_EXCHANGE Name of the default exchange to use when no custom exchange is specified. The default is: ``celery``. h/j( h8h;h=jkh?}r. (hA]hB]hC]hD]hG]uhIMOhK]r/ (jn)r0 }r1 (h.XCELERY_DEFAULT_EXCHANGEr2 h/j, h8h;h=jrh?}r3 (hA]hB]hC]hD]hG]uhIMOhK]r4 hTXCELERY_DEFAULT_EXCHANGEr5 r6 }r7 (h.j2 h/j0 ubaubjx)r8 }r9 (h.Uh?}r: (hA]hB]hC]hD]hG]uh/j, hK]r; hX)r< }r= (h.XeName of the default exchange to use when no custom exchange is specified. The default is: ``celery``.h/j8 h8h;h=h\h?}r> (hA]hB]hC]hD]hG]uhIMMhK]r? (hTXZName of the default exchange to use when no custom exchange is specified. The default is: r@ rA }rB (h.XZName of the default exchange to use when no custom exchange is specified. The default is: h/j< ubhi)rC }rD (h.X ``celery``h?}rE (hA]hB]hC]hD]hG]uh/j< hK]rF hTXceleryrG rH }rI (h.Uh/jC ubah=hqubhTX.rJ }rK (h.X.h/j< ubeubah=jubeubah=jubaubh)rL }rM (h.X~CELERY_DEFAULT_EXCHANGE_TYPE Default exchange type used when no custom exchange is specified. The default is: ``direct``. h/jh8Nh=hh?}rN (hA]hB]hC]hD]hG]uhINhJhhK]rO jc)rP }rQ (h.Uh?}rR (hA]hB]hC]hD]hG]uh/jL hK]rS jh)rT }rU (h.XzCELERY_DEFAULT_EXCHANGE_TYPE Default exchange type used when no custom exchange is specified. The default is: ``direct``. h/jP h8h;h=jkh?}rV (hA]hB]hC]hD]hG]uhIMShK]rW (jn)rX }rY (h.XCELERY_DEFAULT_EXCHANGE_TYPErZ h/jT h8h;h=jrh?}r[ (hA]hB]hC]hD]hG]uhIMShK]r\ hTXCELERY_DEFAULT_EXCHANGE_TYPEr] r^ }r_ (h.jZ h/jX ubaubjx)r` }ra (h.Uh?}rb (hA]hB]hC]hD]hG]uh/jT hK]rc hX)rd }re (h.X\Default exchange type used when no custom exchange is specified. The default is: ``direct``.h/j` h8h;h=h\h?}rf (hA]hB]hC]hD]hG]uhIMRhK]rg (hTXQDefault exchange type used when no custom exchange is specified. The default is: rh ri }rj (h.XQDefault exchange type used when no custom exchange is specified. The default is: h/jd ubhi)rk }rl (h.X ``direct``h?}rm (hA]hB]hC]hD]hG]uh/jd hK]rn hTXdirectro rp }rq (h.Uh/jk ubah=hqubhTX.rr }rs (h.X.h/jd ubeubah=jubeubah=jubaubh)rt }ru (h.XlCELERY_DEFAULT_ROUTING_KEY The default routing key used when sending tasks. The default is: ``celery``. h/jh8Nh=hh?}rv (hA]hB]hC]hD]hG]uhINhJhhK]rw jc)rx }ry (h.Uh?}rz (hA]hB]hC]hD]hG]uh/jt hK]r{ jh)r| }r} (h.XhCELERY_DEFAULT_ROUTING_KEY The default routing key used when sending tasks. The default is: ``celery``. h/jx h8h;h=jkh?}r~ (hA]hB]hC]hD]hG]uhIMWhK]r (jn)r }r (h.XCELERY_DEFAULT_ROUTING_KEYr h/j| h8h;h=jrh?}r (hA]hB]hC]hD]hG]uhIMWhK]r hTXCELERY_DEFAULT_ROUTING_KEYr r }r (h.j h/j ubaubjx)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j| hK]r hX)r }r (h.XLThe default routing key used when sending tasks. The default is: ``celery``.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMVhK]r (hTXAThe default routing key used when sending tasks. The default is: r r }r (h.XAThe default routing key used when sending tasks. The default is: h/j ubhi)r }r (h.X ``celery``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXceleryr r }r (h.Uh/j ubah=hqubhTX.r }r (h.X.h/j ubeubah=jubeubah=jubaubh)r }r (h.XrCELERY_DEFAULT_DELIVERY_MODE Can be ``transient`` or ``persistent``. Default is to send persistent messages. h/jh8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XCELERY_DEFAULT_DELIVERY_MODEr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMYhK]r hTXCELERY_DEFAULT_DELIVERY_MODEr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r hX)r }r (h.XOCan be ``transient`` or ``persistent``. Default is to send persistent messages.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIM[hK]r (hTXCan be r r }r (h.XCan be h/j ubhi)r }r (h.X ``transient``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX transientr r }r (h.Uh/j ubah=hqubhTX or r r }r (h.X or h/j ubhi)r }r (h.X``persistent``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX persistentr r }r (h.Uh/j ubah=hqubhTX). Default is to send persistent messages.r r }r (h.X). Default is to send persistent messages.h/j ubeubah=jubeubeubeubh0)r }r (h.Uh/jh8h;h=h>h?}r (hA]hB]hC]hD]r jahG]r h%auhIM_hJhhK]r (hM)r }r (h.jh/j h8h;h=hQh?}r (hD]hC]hA]hB]hG]jjuhIM_hJhhK]r hTX Connectionr r }r (h.jh/j ubaubh)r }r (h.Uh/j h8h;h=hh?}r (jX*hD]hC]hA]hB]hG]uhIMahJhhK]r (h)r }r (h.XCELERY_BROKER_CONNECTION_TIMEOUT The timeout in seconds before we give up establishing a connection to the AMQP server. Default is 4 seconds. h/j h8Nh=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r jc)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r jh)r }r (h.XCELERY_BROKER_CONNECTION_TIMEOUT The timeout in seconds before we give up establishing a connection to the AMQP server. Default is 4 seconds. h/j h8h;h=jkh?}r (hA]hB]hC]hD]hG]uhIMchK]r (jn)r }r (h.X CELERY_BROKER_CONNECTION_TIMEOUTr h/j h8h;h=jrh?}r (hA]hB]hC]hD]hG]uhIMchK]r hTX CELERY_BROKER_CONNECTION_TIMEOUTr r }r (h.j h/j ubaubjx)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r hX)r }r (h.XlThe timeout in seconds before we give up establishing a connection to the AMQP server. Default is 4 seconds.r h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMbhK]r hTXlThe timeout in seconds before we give up establishing a connection to the AMQP server. Default is 4 seconds.r r }r (h.j h/j ubaubah=jubeubah=jubaubh)r }r (h.X%CELERY_BROKER_CONNECTION_RETRY Automatically try to re-establish the connection to the AMQP broker if it's lost. The time between retries is increased for each retry, and is not exhausted before ``CELERY_BROKER_CONNECTION_MAX_RETRIES`` is exceeded. This behavior is on by default. h/j h8Nh=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r jc)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r jh)r }r (h.XCELERY_BROKER_CONNECTION_RETRY Automatically try to re-establish the connection to the AMQP broker if it's lost. The time between retries is increased for each retry, and is not exhausted before ``CELERY_BROKER_CONNECTION_MAX_RETRIES`` is exceeded. This behavior is on by default. h/j h8h;h=jkh?}r (hA]hB]hC]hD]hG]uhIMlhK]r (jn)r }r (h.XCELERY_BROKER_CONNECTION_RETRYr h/j h8h;h=jrh?}r (hA]hB]hC]hD]hG]uhIMlhK]r hTXCELERY_BROKER_CONNECTION_RETRYr r }r (h.j h/j ubaubjx)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r (hX)r }r (h.XQAutomatically try to re-establish the connection to the AMQP broker if it's lost.r h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMfhK]r hTXQAutomatically try to re-establish the connection to the AMQP broker if it's lost.r r }r (h.j h/j ubaubhX)r }r (h.XThe time between retries is increased for each retry, and is not exhausted before ``CELERY_BROKER_CONNECTION_MAX_RETRIES`` is exceeded.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMihK]r (hTXRThe time between retries is increased for each retry, and is not exhausted before r r }r (h.XRThe time between retries is increased for each retry, and is not exhausted before h/j ubhi)r }r (h.X(``CELERY_BROKER_CONNECTION_MAX_RETRIES``h?}r! (hA]hB]hC]hD]hG]uh/j hK]r" hTX$CELERY_BROKER_CONNECTION_MAX_RETRIESr# r$ }r% (h.Uh/j ubah=hqubhTX is exceeded.r& r' }r( (h.X is exceeded.h/j ubeubhX)r) }r* (h.XThis behavior is on by default.r+ h/j h8h;h=h\h?}r, (hA]hB]hC]hD]hG]uhIMlhK]r- hTXThis behavior is on by default.r. r/ }r0 (h.j+ h/j) ubaubeh=jubeubah=jubaubh)r1 }r2 (h.XCELERY_BROKER_CONNECTION_MAX_RETRIES Maximum number of retries before we give up re-establishing a connection to the AMQP broker. If this is set to ``0`` or ``None``, we will retry forever. Default is 100 retries. h/j h8Nh=hh?}r3 (hA]hB]hC]hD]hG]uhINhJhhK]r4 jc)r5 }r6 (h.Uh?}r7 (hA]hB]hC]hD]hG]uh/j1 hK]r8 jh)r9 }r: (h.XCELERY_BROKER_CONNECTION_MAX_RETRIES Maximum number of retries before we give up re-establishing a connection to the AMQP broker. If this is set to ``0`` or ``None``, we will retry forever. Default is 100 retries. h/j5 h8h;h=jkh?}r; (hA]hB]hC]hD]hG]uhIMthK]r< (jn)r= }r> (h.X$CELERY_BROKER_CONNECTION_MAX_RETRIESr? h/j9 h8h;h=jrh?}r@ (hA]hB]hC]hD]hG]uhIMthK]rA hTX$CELERY_BROKER_CONNECTION_MAX_RETRIESrB rC }rD (h.j? h/j= ubaubjx)rE }rF (h.Uh?}rG (hA]hB]hC]hD]hG]uh/j9 hK]rH (hX)rI }rJ (h.X\Maximum number of retries before we give up re-establishing a connection to the AMQP broker.rK h/jE h8h;h=h\h?}rL (hA]hB]hC]hD]hG]uhIMohK]rM hTX\Maximum number of retries before we give up re-establishing a connection to the AMQP broker.rN rO }rP (h.jK h/jI ubaubhX)rQ }rR (h.X;If this is set to ``0`` or ``None``, we will retry forever.h/jE h8h;h=h\h?}rS (hA]hB]hC]hD]hG]uhIMrhK]rT (hTXIf this is set to rU rV }rW (h.XIf this is set to h/jQ ubhi)rX }rY (h.X``0``h?}rZ (hA]hB]hC]hD]hG]uh/jQ hK]r[ hTX0r\ }r] (h.Uh/jX ubah=hqubhTX or r^ r_ }r` (h.X or h/jQ ubhi)ra }rb (h.X``None``h?}rc (hA]hB]hC]hD]hG]uh/jQ hK]rd hTXNonere rf }rg (h.Uh/ja ubah=hqubhTX, we will retry forever.rh ri }rj (h.X, we will retry forever.h/jQ ubeubhX)rk }rl (h.XDefault is 100 retries.rm h/jE h8h;h=h\h?}rn (hA]hB]hC]hD]hG]uhIMthK]ro hTXDefault is 100 retries.rp rq }rr (h.jm h/jk ubaubeh=jubeubah=jubaubeubeubeubh0)rs }rt (h.Uh/h6h8h;h=h>h?}ru (hA]hB]hC]hD]rv j ahG]rw hauhIMwhJhhK]rx (hM)ry }rz (h.jh/js h8h;h=hQh?}r{ (hD]hC]hA]hB]hG]jj uhIMwhJhhK]r| hTXTask execution settingsr} r~ }r (h.jh/jy ubaubh)r }r (h.Uh/js h8h;h=hh?}r (jX*hD]hC]hA]hB]hG]uhIMyhJhhK]r (h)r }r (h.XCELERY_ALWAYS_EAGER If this is ``True``, all tasks will be executed locally by blocking until it is finished. ``apply_async`` and ``Task.delay`` will return a :class:`celery.result.EagerResult` which emulates the behavior of :class:`celery.result.AsyncResult`, except the result has already been evaluated. Tasks will never be sent to the queue, but executed locally instead. h/j h8Nh=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r jc)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r jh)r }r (h.XyCELERY_ALWAYS_EAGER If this is ``True``, all tasks will be executed locally by blocking until it is finished. ``apply_async`` and ``Task.delay`` will return a :class:`celery.result.EagerResult` which emulates the behavior of :class:`celery.result.AsyncResult`, except the result has already been evaluated. Tasks will never be sent to the queue, but executed locally instead. h/j h8h;h=jkh?}r (hA]hB]hC]hD]hG]uhIMhK]r (jn)r }r (h.XCELERY_ALWAYS_EAGERr h/j h8h;h=jrh?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXCELERY_ALWAYS_EAGERr r }r (h.j h/j ubaubjx)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r (hX)r }r (h.XIf this is ``True``, all tasks will be executed locally by blocking until it is finished. ``apply_async`` and ``Task.delay`` will return a :class:`celery.result.EagerResult` which emulates the behavior of :class:`celery.result.AsyncResult`, except the result has already been evaluated.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMzhK]r (hTX If this is r r }r (h.X If this is h/j ubhi)r }r (h.X``True``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXTruer r }r (h.Uh/j ubah=hqubhTXG, all tasks will be executed locally by blocking until it is finished. r r }r (h.XG, all tasks will be executed locally by blocking until it is finished. h/j ubhi)r }r (h.X``apply_async``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX apply_asyncr r }r (h.Uh/j ubah=hqubhTX and r r }r (h.X and h/j ubhi)r }r (h.X``Task.delay``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX Task.delayr r }r (h.Uh/j ubah=hqubhTX will return a r r }r (h.X will return a h/j ubjf)r }r (h.X":class:`celery.result.EagerResult`r h/j h8h;h=jjh?}r (UreftypeXclassjmjnXcelery.result.EagerResultU refdomainXpyr hD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMzhK]r hi)r }r (h.j h?}r (hA]hB]r (jvj Xpy-classr ehC]hD]hG]uh/j hK]r hTXcelery.result.EagerResultr r }r (h.Uh/j ubah=hqubaubhTX which emulates the behavior of r r }r (h.X which emulates the behavior of h/j ubjf)r }r (h.X":class:`celery.result.AsyncResult`r h/j h8h;h=jjh?}r (UreftypeXclassjmjnXcelery.result.AsyncResultU refdomainXpyr hD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMzhK]r hi)r }r (h.j h?}r (hA]hB]r (jvj Xpy-classr ehC]hD]hG]uh/j hK]r hTXcelery.result.AsyncResultr r }r (h.Uh/j ubah=hqubaubhTX/, except the result has already been evaluated.r r }r (h.X/, except the result has already been evaluated.h/j ubeubhX)r }r (h.XDTasks will never be sent to the queue, but executed locally instead.r h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXDTasks will never be sent to the queue, but executed locally instead.r r }r (h.j h/j ubaubeh=jubeubah=jubaubh)r }r (h.XCELERY_EAGER_PROPAGATES_EXCEPTIONS If this is ``True``, eagerly executed tasks (using ``.apply``, or with ``CELERY_ALWAYS_EAGER`` on), will raise exceptions. It's the same as always running ``apply`` with ``throw=True``. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.X"CELERY_EAGER_PROPAGATES_EXCEPTIONSr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTX"CELERY_EAGER_PROPAGATES_EXCEPTIONSr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r (hX)r }r (h.XzIf this is ``True``, eagerly executed tasks (using ``.apply``, or with ``CELERY_ALWAYS_EAGER`` on), will raise exceptions.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTX If this is r r }r (h.X If this is h/j ubhi)r }r (h.X``True``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXTruer r }r (h.Uh/j ubah=hqubhTX , eagerly executed tasks (using r r }r (h.X , eagerly executed tasks (using h/j ubhi)r }r (h.X ``.apply``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX.applyr r }r (h.Uh/j ubah=hqubhTX , or with r r }r (h.X , or with h/j ubhi)r }r (h.X``CELERY_ALWAYS_EAGER``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXCELERY_ALWAYS_EAGERr r }r (h.Uh/j ubah=hqubhTX on), will raise exceptions.r r }r! (h.X on), will raise exceptions.h/j ubeubhX)r" }r# (h.X>It's the same as always running ``apply`` with ``throw=True``.h/j h8h;h=h\h?}r$ (hA]hB]hC]hD]hG]uhIMhK]r% (hTX It's the same as always running r& r' }r( (h.X It's the same as always running h/j" ubhi)r) }r* (h.X ``apply``h?}r+ (hA]hB]hC]hD]hG]uh/j" hK]r, hTXapplyr- r. }r/ (h.Uh/j) ubah=hqubhTX with r0 r1 }r2 (h.X with h/j" ubhi)r3 }r4 (h.X``throw=True``h?}r5 (hA]hB]hC]hD]hG]uh/j" hK]r6 hTX throw=Truer7 r8 }r9 (h.Uh/j3 ubah=hqubhTX.r: }r; (h.X.h/j" ubeubeh=jubeubh)r< }r= (h.XCELERY_IGNORE_RESULT Whether to store the task return values or not (tombstones). If you still want to store errors, just not successful return values, you can set ``CELERY_STORE_ERRORS_EVEN_IF_IGNORED``. h/j h8h;h=hh?}r> (hA]hB]hC]hD]hG]uhINhJhhK]r? (hX)r@ }rA (h.XCELERY_IGNORE_RESULTrB h/j< h8h;h=h\h?}rC (hA]hB]hC]hD]hG]uhIMhK]rD hTXCELERY_IGNORE_RESULTrE rF }rG (h.jB h/j@ ubaubj)rH }rI (h.Uh?}rJ (hA]hB]hC]hD]hG]uh/j< hK]rK hX)rL }rM (h.XWhether to store the task return values or not (tombstones). If you still want to store errors, just not successful return values, you can set ``CELERY_STORE_ERRORS_EVEN_IF_IGNORED``.h/jH h8h;h=h\h?}rN (hA]hB]hC]hD]hG]uhIMhK]rO (hTXWhether to store the task return values or not (tombstones). If you still want to store errors, just not successful return values, you can set rP rQ }rR (h.XWhether to store the task return values or not (tombstones). If you still want to store errors, just not successful return values, you can set h/jL ubhi)rS }rT (h.X'``CELERY_STORE_ERRORS_EVEN_IF_IGNORED``h?}rU (hA]hB]hC]hD]hG]uh/jL hK]rV hTX#CELERY_STORE_ERRORS_EVEN_IF_IGNOREDrW rX }rY (h.Uh/jS ubah=hqubhTX.rZ }r[ (h.X.h/jL ubeubah=jubeubh)r\ }r] (h.XCELERY_TASK_RESULT_EXPIRES Time (in seconds, or a :class:`datetime.timedelta` object) for when after stored task tombstones will be deleted. A built-in periodic task will delete the results after this time (:class:`celery.task.builtins.DeleteExpiredTaskMetaTask`). **NOTE**: For the moment this only works with the database, cache and MongoDB backends. **NOTE**: ``celerybeat`` must be running for the results to be expired. h/j h8Nh=hh?}r^ (hA]hB]hC]hD]hG]uhINhJhhK]r_ jc)r` }ra (h.Uh?}rb (hA]hB]hC]hD]hG]uh/j\ hK]rc jh)rd }re (h.XCELERY_TASK_RESULT_EXPIRES Time (in seconds, or a :class:`datetime.timedelta` object) for when after stored task tombstones will be deleted. A built-in periodic task will delete the results after this time (:class:`celery.task.builtins.DeleteExpiredTaskMetaTask`). **NOTE**: For the moment this only works with the database, cache and MongoDB backends. **NOTE**: ``celerybeat`` must be running for the results to be expired. h/j` h8h;h=jkh?}rf (hA]hB]hC]hD]hG]uhIMhK]rg (jn)rh }ri (h.XCELERY_TASK_RESULT_EXPIRESrj h/jd h8h;h=jrh?}rk (hA]hB]hC]hD]hG]uhIMhK]rl hTXCELERY_TASK_RESULT_EXPIRESrm rn }ro (h.jj h/jh ubaubjx)rp }rq (h.Uh?}rr (hA]hB]hC]hD]hG]uh/jd hK]rs (hX)rt }ru (h.XqTime (in seconds, or a :class:`datetime.timedelta` object) for when after stored task tombstones will be deleted.h/jp h8h;h=h\h?}rv (hA]hB]hC]hD]hG]uhIMhK]rw (hTXTime (in seconds, or a rx ry }rz (h.XTime (in seconds, or a h/jt ubjf)r{ }r| (h.X:class:`datetime.timedelta`r} h/jt h8h;h=jjh?}r~ (UreftypeXclassjmjnXdatetime.timedeltaU refdomainXpyr hD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMhK]r hi)r }r (h.j} h?}r (hA]hB]r (jvj Xpy-classr ehC]hD]hG]uh/j{ hK]r hTXdatetime.timedeltar r }r (h.Uh/j ubah=hqubaubhTX? object) for when after stored task tombstones will be deleted.r r }r (h.X? object) for when after stored task tombstones will be deleted.h/jt ubeubhX)r }r (h.X{A built-in periodic task will delete the results after this time (:class:`celery.task.builtins.DeleteExpiredTaskMetaTask`).h/jp h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTXBA built-in periodic task will delete the results after this time (r r }r (h.XBA built-in periodic task will delete the results after this time (h/j ubjf)r }r (h.X7:class:`celery.task.builtins.DeleteExpiredTaskMetaTask`r h/j h8h;h=jjh?}r (UreftypeXclassjmjnX.celery.task.builtins.DeleteExpiredTaskMetaTaskU refdomainXpyr hD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMhK]r hi)r }r (h.j h?}r (hA]hB]r (jvj Xpy-classr ehC]hD]hG]uh/j hK]r hTX.celery.task.builtins.DeleteExpiredTaskMetaTaskr r }r (h.Uh/j ubah=hqubaubhTX).r r }r (h.X).h/j ubeubhX)r }r (h.XW**NOTE**: For the moment this only works with the database, cache and MongoDB backends.h/jp h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (jZ)r }r (h.X**NOTE**h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXNOTEr r }r (h.Uh/j ubah=jbubhTXO: For the moment this only works with the database, cache and MongoDB backends.r r }r (h.XO: For the moment this only works with the database, cache and MongoDB backends.h/j ubeubhX)r }r (h.XG**NOTE**: ``celerybeat`` must be running for the results to be expired.h/jp h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (jZ)r }r (h.X**NOTE**h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXNOTEr r }r (h.Uh/j ubah=jbubhTX: r r }r (h.X: h/j ubhi)r }r (h.X``celerybeat``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX celerybeatr r }r (h.Uh/j ubah=hqubhTX/ must be running for the results to be expired.r r }r (h.X/ must be running for the results to be expired.h/j ubeubeh=jubeubah=jubaubh)r }r (h.XCELERY_MAX_CACHED_RESULTS Total number of results to store before results are evicted from the result cache. The default is ``5000``. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XCELERY_MAX_CACHED_RESULTSr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXCELERY_MAX_CACHED_RESULTSr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r hX)r }r (h.XkTotal number of results to store before results are evicted from the result cache. The default is ``5000``.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTXbTotal number of results to store before results are evicted from the result cache. The default is r r }r (h.XbTotal number of results to store before results are evicted from the result cache. The default is h/j ubhi)r }r (h.X``5000``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX5000r r }r (h.Uh/j ubah=hqubhTX.r }r (h.X.h/j ubeubah=jubeubh)r }r (h.XCELERY_TRACK_STARTED If ``True`` the task will report its status as "started" when the task is executed by a worker. The default value is ``False`` as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a "started" status can be useful for when there are long running tasks and there is a need to report which task is currently running. backends. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XCELERY_TRACK_STARTEDr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXCELERY_TRACK_STARTEDr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r hX)r }r (h.XIf ``True`` the task will report its status as "started" when the task is executed by a worker. The default value is ``False`` as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a "started" status can be useful for when there are long running tasks and there is a need to report which task is currently running. backends.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTXIf r r }r (h.XIf h/j ubhi)r }r (h.X``True``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXTruer r }r (h.Uh/j ubah=hqubhTXj the task will report its status as "started" when the task is executed by a worker. The default value is r r }r (h.Xj the task will report its status as "started" when the task is executed by a worker. The default value is h/j ubhi)r }r (h.X ``False``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXFalser r }r (h.Uh/j ubah=hqubhTX as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a "started" status can be useful for when there are long running tasks and there is a need to report which task is currently running. backends.r r }r (h.X as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a "started" status can be useful for when there are long running tasks and there is a need to report which task is currently running. backends.h/j ubeubah=jubeubh)r }r (h.XCELERY_TASK_SERIALIZER A string identifying the default serialization method to use. Can be ``pickle`` (default), ``json``, ``yaml``, or any custom serialization methods that have been registered with :mod:`carrot.serialization.registry`. Default is ``pickle``. h/j h8Nh=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r jc)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r jh)r }r (h.XCELERY_TASK_SERIALIZER A string identifying the default serialization method to use. Can be ``pickle`` (default), ``json``, ``yaml``, or any custom serialization methods that have been registered with :mod:`carrot.serialization.registry`. Default is ``pickle``. h/j h8h;h=jkh?}r! (hA]hB]hC]hD]hG]uhIMhK]r" (jn)r# }r$ (h.XCELERY_TASK_SERIALIZERr% h/j h8h;h=jrh?}r& (hA]hB]hC]hD]hG]uhIMhK]r' hTXCELERY_TASK_SERIALIZERr( r) }r* (h.j% h/j# ubaubjx)r+ }r, (h.Uh?}r- (hA]hB]hC]hD]hG]uh/j hK]r. (hX)r/ }r0 (h.XA string identifying the default serialization method to use. Can be ``pickle`` (default), ``json``, ``yaml``, or any custom serialization methods that have been registered with :mod:`carrot.serialization.registry`.h/j+ h8h;h=h\h?}r1 (hA]hB]hC]hD]hG]uhIMhK]r2 (hTXEA string identifying the default serialization method to use. Can be r3 r4 }r5 (h.XEA string identifying the default serialization method to use. Can be h/j/ ubhi)r6 }r7 (h.X ``pickle``h?}r8 (hA]hB]hC]hD]hG]uh/j/ hK]r9 hTXpickler: r; }r< (h.Uh/j6 ubah=hqubhTX (default), r= r> }r? (h.X (default), h/j/ ubhi)r@ }rA (h.X``json``h?}rB (hA]hB]hC]hD]hG]uh/j/ hK]rC hTXjsonrD rE }rF (h.Uh/j@ ubah=hqubhTX, rG rH }rI (h.X, h/j/ ubhi)rJ }rK (h.X``yaml``h?}rL (hA]hB]hC]hD]hG]uh/j/ hK]rM hTXyamlrN rO }rP (h.Uh/jJ ubah=hqubhTXE, or any custom serialization methods that have been registered with rQ rR }rS (h.XE, or any custom serialization methods that have been registered with h/j/ ubjf)rT }rU (h.X$:mod:`carrot.serialization.registry`rV h/j/ h8h;h=jjh?}rW (UreftypeXmodjmjnXcarrot.serialization.registryU refdomainXpyrX hD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMhK]rY hi)rZ }r[ (h.jV h?}r\ (hA]hB]r] (jvjX Xpy-modr^ ehC]hD]hG]uh/jT hK]r_ hTXcarrot.serialization.registryr` ra }rb (h.Uh/jZ ubah=hqubaubhTX.rc }rd (h.X.h/j/ ubeubhX)re }rf (h.XDefault is ``pickle``.h/j+ h8h;h=h\h?}rg (hA]hB]hC]hD]hG]uhIMhK]rh (hTX Default is ri rj }rk (h.X Default is h/je ubhi)rl }rm (h.X ``pickle``h?}rn (hA]hB]hC]hD]hG]uh/je hK]ro hTXpicklerp rq }rr (h.Uh/jl ubah=hqubhTX.rs }rt (h.X.h/je ubeubeh=jubeubah=jubaubh)ru }rv (h.XCELERY_DEFAULT_RATE_LIMIT The global default rate limit for tasks. This value is used for tasks that does not have a custom rate limit The default is no rate limit. h/j h8h;h=hh?}rw (hA]hB]hC]hD]hG]uhINhJhhK]rx (hX)ry }rz (h.XCELERY_DEFAULT_RATE_LIMITr{ h/ju h8h;h=h\h?}r| (hA]hB]hC]hD]hG]uhIMhK]r} hTXCELERY_DEFAULT_RATE_LIMITr~ r }r (h.j{ h/jy ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/ju hK]r (hX)r }r (h.X(The global default rate limit for tasks.r h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTX(The global default rate limit for tasks.r r }r (h.j h/j ubaubhX)r }r (h.XaThis value is used for tasks that does not have a custom rate limit The default is no rate limit.r h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXaThis value is used for tasks that does not have a custom rate limit The default is no rate limit.r r }r (h.j h/j ubaubeh=jubeubh)r }r (h.XcCELERY_DISABLE_RATE_LIMITS Disable all rate limits, even if tasks has explicit rate limits set. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XCELERY_DISABLE_RATE_LIMITSr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXCELERY_DISABLE_RATE_LIMITSr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r hX)r }r (h.XDDisable all rate limits, even if tasks has explicit rate limits set.r h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXDDisable all rate limits, even if tasks has explicit rate limits set.r r }r (h.j h/j ubaubah=jubeubh)r }r (h.XCELERY_ACKS_LATE Late ack means the task messages will be acknowledged **after** the task has been executed, not *just before*, which is the default behavior. See http://ask.github.com/celery/faq.html#should-i-use-retry-or-acks-late h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XCELERY_ACKS_LATEr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXCELERY_ACKS_LATEr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r (hX)r }r (h.XLate ack means the task messages will be acknowledged **after** the task has been executed, not *just before*, which is the default behavior.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTX6Late ack means the task messages will be acknowledged r r }r (h.X6Late ack means the task messages will be acknowledged h/j ubjZ)r }r (h.X **after**h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXafterr r }r (h.Uh/j ubah=jbubhTX! the task has been executed, not r r }r (h.X! the task has been executed, not h/j ubcdocutils.nodes emphasis r )r }r (h.X *just before*h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX just beforer r }r (h.Uh/j ubah=Uemphasisr ubhTX , which is the default behavior.r r }r (h.X , which is the default behavior.h/j ubeubhX)r }r (h.XISee http://ask.github.com/celery/faq.html#should-i-use-retry-or-acks-lateh/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTXSee r r }r (h.XSee h/j ubh)r }r (h.XEhttp://ask.github.com/celery/faq.html#should-i-use-retry-or-acks-later h?}r (Urefurij hD]hC]hA]hB]hG]uh/j hK]r hTXEhttp://ask.github.com/celery/faq.html#should-i-use-retry-or-acks-later r }r (h.Uh/j ubah=hubeubeh=jubeubeubeubh0)r }r (h.Uh/h6h8h;h=h>h?}r (hA]hB]hC]hD]r jahG]r hauhIMhJhhK]r (hM)r }r (h.j"h/j h8h;h=hQh?}r (hD]hC]hA]hB]hG]jjuhIMhJhhK]r hTXWorker: celerydr r }r (h.j"h/j ubaubh)r }r (h.Uh/j h8h;h=hh?}r (jX*hD]hC]hA]hB]hG]uhIMhJhhK]r (h)r }r (h.XCELERY_IMPORTS A sequence of modules to import when the celery daemon starts. This is used to specify the task modules to import, but also to import signal handlers and additional remote control commands, etc. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XCELERY_IMPORTSr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXCELERY_IMPORTSr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r (hX)r }r (h.X>A sequence of modules to import when the celery daemon starts.r h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTX>A sequence of modules to import when the celery daemon starts.r r }r (h.j h/j ubaubhX)r }r (h.XThis is used to specify the task modules to import, but also to import signal handlers and additional remote control commands, etc.r h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXThis is used to specify the task modules to import, but also to import signal handlers and additional remote control commands, etc.r r }r (h.j h/j ubaubeh=jubeubh)r }r (h.XCELERYD_MAX_TASKS_PER_CHILD Maximum number of tasks a pool worker process can execute before it's replaced with a new one. Default is no limit. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XCELERYD_MAX_TASKS_PER_CHILDr h/j h8h;h=h\h?}r! (hA]hB]hC]hD]hG]uhIMhK]r" hTXCELERYD_MAX_TASKS_PER_CHILDr# r$ }r% (h.j h/j ubaubj)r& }r' (h.Uh?}r( (hA]hB]hC]hD]hG]uh/j hK]r) hX)r* }r+ (h.XsMaximum number of tasks a pool worker process can execute before it's replaced with a new one. Default is no limit.r, h/j& h8h;h=h\h?}r- (hA]hB]hC]hD]hG]uhIMhK]r. hTXsMaximum number of tasks a pool worker process can execute before it's replaced with a new one. Default is no limit.r/ r0 }r1 (h.j, h/j* ubaubah=jubeubh)r2 }r3 (h.XCELERYD_TASK_TIME_LIMIT Task hard time limit in seconds. The worker processing the task will be killed and replaced with a new one when this is exceeded. h/j h8h;h=hh?}r4 (hA]hB]hC]hD]hG]uhINhJhhK]r5 (hX)r6 }r7 (h.XCELERYD_TASK_TIME_LIMITr8 h/j2 h8h;h=h\h?}r9 (hA]hB]hC]hD]hG]uhIMhK]r: hTXCELERYD_TASK_TIME_LIMITr; r< }r= (h.j8 h/j6 ubaubj)r> }r? (h.Uh?}r@ (hA]hB]hC]hD]hG]uh/j2 hK]rA hX)rB }rC (h.XTask hard time limit in seconds. The worker processing the task will be killed and replaced with a new one when this is exceeded.rD h/j> h8h;h=h\h?}rE (hA]hB]hC]hD]hG]uhIMhK]rF hTXTask hard time limit in seconds. The worker processing the task will be killed and replaced with a new one when this is exceeded.rG rH }rI (h.jD h/jB ubaubah=jubeubh)rJ }rK (h.XCELERYD_SOFT_TASK_TIME_LIMIT Task soft time limit in seconds. The :exc:`celery.exceptions.SoftTimeLimitExceeded` exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes. .. code-block:: python from celery.decorators import task from celery.exceptions import SoftTimeLimitExceeded @task() def mytask(): try: return do_work() except SoftTimeLimitExceeded: cleanup_in_a_hurry() h/j h8h;h=hh?}rL (hA]hB]hC]hD]hG]uhINhJhhK]rM (hX)rN }rO (h.XCELERYD_SOFT_TASK_TIME_LIMITrP h/jJ h8h;h=h\h?}rQ (hA]hB]hC]hD]hG]uhIMhK]rR hTXCELERYD_SOFT_TASK_TIME_LIMITrS rT }rU (h.jP h/jN ubaubj)rV }rW (h.Uh?}rX (hA]hB]hC]hD]hG]uh/jJ hK]rY (hX)rZ }r[ (h.XTask soft time limit in seconds. The :exc:`celery.exceptions.SoftTimeLimitExceeded` exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes.h/jV h8h;h=h\h?}r\ (hA]hB]hC]hD]hG]uhIMhK]r] (hTX%Task soft time limit in seconds. The r^ r_ }r` (h.X%Task soft time limit in seconds. The h/jZ ubjf)ra }rb (h.X.:exc:`celery.exceptions.SoftTimeLimitExceeded`rc h/jZ h8h;h=jjh?}rd (UreftypeXexcjmjnX'celery.exceptions.SoftTimeLimitExceededU refdomainXpyre hD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMhK]rf hi)rg }rh (h.jc h?}ri (hA]hB]rj (jvje Xpy-excrk ehC]hD]hG]uh/ja hK]rl hTX'celery.exceptions.SoftTimeLimitExceededrm rn }ro (h.Uh/jg ubah=hqubaubhTX{ exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes.rp rq }rr (h.X{ exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes.h/jZ ubeubj)rs }rt (h.Xfrom celery.decorators import task from celery.exceptions import SoftTimeLimitExceeded @task() def mytask(): try: return do_work() except SoftTimeLimitExceeded: cleanup_in_a_hurry()h/jV h8h;h=jh?}ru (jjXpythonjjhD]hC]hA]hB]hG]uhIMhK]rv hTXfrom celery.decorators import task from celery.exceptions import SoftTimeLimitExceeded @task() def mytask(): try: return do_work() except SoftTimeLimitExceeded: cleanup_in_a_hurry()rw rx }ry (h.Uh/js ubaubeh=jubeubh)rz }r{ (h.XCELERY_STORE_ERRORS_EVEN_IF_IGNORED If set, the worker stores all task errors in the result store even if ``Task.ignore_result`` is on. h/j h8h;h=hh?}r| (hA]hB]hC]hD]hG]uhINhJhhK]r} (hX)r~ }r (h.X#CELERY_STORE_ERRORS_EVEN_IF_IGNOREDr h/jz h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTX#CELERY_STORE_ERRORS_EVEN_IF_IGNOREDr r }r (h.j h/j~ ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/jz hK]r hX)r }r (h.XcIf set, the worker stores all task errors in the result store even if ``Task.ignore_result`` is on.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTXFIf set, the worker stores all task errors in the result store even if r r }r (h.XFIf set, the worker stores all task errors in the result store even if h/j ubhi)r }r (h.X``Task.ignore_result``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXTask.ignore_resultr r }r (h.Uh/j ubah=hqubhTX is on.r r }r (h.X is on.h/j ubeubah=jubeubeubh0)r }r (h.Uh/j h8h;h=h>h?}r (hA]hB]hC]hD]r j4ahG]r hauhIMhJhhK]r (hM)r }r (h.j9h/j h8h;h=hQh?}r (hD]hC]hA]hB]hG]jj3uhIMhJhhK]r hTX Error E-Mailsr r }r (h.j9h/j ubaubh)r }r (h.Uh/j h8h;h=hh?}r (jX*hD]hC]hA]hB]hG]uhIMhJhhK]r (h)r }r (h.XgCELERY_SEND_TASK_ERROR_EMAILS If set to ``True``, errors in tasks will be sent to admins by e-mail. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XCELERY_SEND_TASK_ERROR_EMAILSr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXCELERY_SEND_TASK_ERROR_EMAILSr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r hX)r }r (h.XEIf set to ``True``, errors in tasks will be sent to admins by e-mail.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTX If set to r r }r (h.X If set to h/j ubhi)r }r (h.X``True``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTXTruer r }r (h.Uh/j ubah=hqubhTX3, errors in tasks will be sent to admins by e-mail.r r }r (h.X3, errors in tasks will be sent to admins by e-mail.h/j ubeubah=jubeubh)r }r (h.XgADMINS List of ``(name, email_address)`` tuples for the admins that should receive error e-mails. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.XADMINSr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTXADMINSr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r hX)r }r (h.XZList of ``(name, email_address)`` tuples for the admins that should receive error e-mails.h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r (hTXList of r r }r (h.XList of h/j ubhi)r }r (h.X``(name, email_address)``h?}r (hA]hB]hC]hD]hG]uh/j hK]r hTX(name, email_address)r r }r (h.Uh/j ubah=hqubhTX9 tuples for the admins that should receive error e-mails.r r }r (h.X9 tuples for the admins that should receive error e-mails.h/j ubeubah=jubeubh)r }r (h.XhSERVER_EMAIL The e-mail address this worker sends e-mails from. Default is ``"celery@localhost"``. h/j h8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r }r (h.X SERVER_EMAILr h/j h8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r hTX SERVER_EMAILr r }r (h.j h/j ubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/j hK]r hX)r }r (h.XUThe e-mail address this worker sends e-mails from. Default is ``"celery@localhost"``.h/j h8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTX>The e-mail address this worker sends e-mails from. Default is rr}r(h.X>The e-mail address this worker sends e-mails from. Default is h/j ubhi)r}r(h.X``"celery@localhost"``h?}r(hA]hB]hC]hD]hG]uh/j hK]rhTX"celery@localhost"r r }r (h.Uh/jubah=hqubhTX.r }r (h.X.h/j ubeubah=jubeubh)r}r(h.XAMAIL_HOST The mail server to use. Default is ``"localhost"``. h/j h8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.X MAIL_HOSTrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTX MAIL_HOSTrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.X3The mail server to use. Default is ``"localhost"``.h/jh8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMhK]r!(hTX#The mail server to use. Default is r"r#}r$(h.X#The mail server to use. Default is h/jubhi)r%}r&(h.X``"localhost"``h?}r'(hA]hB]hC]hD]hG]uh/jhK]r(hTX "localhost"r)r*}r+(h.Uh/j%ubah=hqubhTX.r,}r-(h.X.h/jubeubah=jubeubh)r.}r/(h.XLMAIL_HOST_USER Username (if required) to log on to the mail server with. h/j h8h;h=hh?}r0(hA]hB]hC]hD]hG]uhINhJhhK]r1(hX)r2}r3(h.XMAIL_HOST_USERr4h/j.h8h;h=h\h?}r5(hA]hB]hC]hD]hG]uhIMhK]r6hTXMAIL_HOST_USERr7r8}r9(h.j4h/j2ubaubj)r:}r;(h.Uh?}r<(hA]hB]hC]hD]hG]uh/j.hK]r=hX)r>}r?(h.X9Username (if required) to log on to the mail server with.r@h/j:h8h;h=h\h?}rA(hA]hB]hC]hD]hG]uhIM hK]rBhTX9Username (if required) to log on to the mail server with.rCrD}rE(h.j@h/j>ubaubah=jubeubh)rF}rG(h.XPMAIL_HOST_PASSWORD Password (if required) to log on to the mail server with. h/j h8h;h=hh?}rH(hA]hB]hC]hD]hG]uhINhJhhK]rI(hX)rJ}rK(h.XMAIL_HOST_PASSWORDrLh/jFh8h;h=h\h?}rM(hA]hB]hC]hD]hG]uhIM hK]rNhTXMAIL_HOST_PASSWORDrOrP}rQ(h.jLh/jJubaubj)rR}rS(h.Uh?}rT(hA]hB]hC]hD]hG]uh/jFhK]rUhX)rV}rW(h.X9Password (if required) to log on to the mail server with.rXh/jRh8h;h=h\h?}rY(hA]hB]hC]hD]hG]uhIM hK]rZhTX9Password (if required) to log on to the mail server with.r[r\}r](h.jXh/jVubaubah=jubeubh)r^}r_(h.XJMAIL_PORT The port the mail server is listening on. Default is ``25``. h/j h8h;h=hh?}r`(hA]hB]hC]hD]hG]uhINhJhhK]ra(hX)rb}rc(h.X MAIL_PORTrdh/j^h8h;h=h\h?}re(hA]hB]hC]hD]hG]uhIMhK]rfhTX MAIL_PORTrgrh}ri(h.jdh/jbubaubj)rj}rk(h.Uh?}rl(hA]hB]hC]hD]hG]uh/j^hK]rmhX)rn}ro(h.X<The port the mail server is listening on. Default is ``25``.h/jjh8h;h=h\h?}rp(hA]hB]hC]hD]hG]uhIMhK]rq(hTX5The port the mail server is listening on. Default is rrrs}rt(h.X5The port the mail server is listening on. Default is h/jnubhi)ru}rv(h.X``25``h?}rw(hA]hB]hC]hD]hG]uh/jnhK]rxhTX25ryrz}r{(h.Uh/juubah=hqubhTX.r|}r}(h.X.h/jnubeubah=jubeubeubh0)r~}r(h.Uh/j h8h;h=h>h?}r(hA]hB]hC]hD]rjKahG]rh!auhIMhJhhK]r(hM)r}r(h.jPh/j~h8h;h=hQh?}r(hD]hC]hA]hB]hG]jjJuhIMhJhhK]rhTXExample E-Mail configurationrr}r(h.jPh/jubaubhX)r}r(h.XoThis configuration enables the sending of error e-mails to ``george@vandelay.com`` and ``kramer@vandelay.com``:h/j~h8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhJhhK]r(hTX;This configuration enables the sending of error e-mails to rr}r(h.X;This configuration enables the sending of error e-mails to h/jubhi)r}r(h.X``george@vandelay.com``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXgeorge@vandelay.comrr}r(h.Uh/jubah=hqubhTX and rr}r(h.X and h/jubhi)r}r(h.X``kramer@vandelay.com``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXkramer@vandelay.comrr}r(h.Uh/jubah=hqubhTX:r}r(h.X:h/jubeubj)r}r(h.X# Enables error e-mails. CELERY_SEND_TASK_ERROR_EMAILS = True # Name and e-mail addresses of recipients ADMINS = ( ("George Costanza", "george@vandelay.com"), ("Cosmo Kramer", "kosmo@vandelay.com"), ) # E-mail address used as sender (From field). SERVER_EMAIL = "no-reply@vandelay.com" # Mailserver configuration EMAIL_HOST = "mail.vandelay.com" EMAIL_PORT = 25 # EMAIL_HOST_USER = "servers" # EMAIL_HOST_PASSWORD = "s3cr3t"h/j~h8h;h=jh?}r(jjXpythonjjhD]hC]hA]hB]hG]uhIMhJhhK]rhTX# Enables error e-mails. CELERY_SEND_TASK_ERROR_EMAILS = True # Name and e-mail addresses of recipients ADMINS = ( ("George Costanza", "george@vandelay.com"), ("Cosmo Kramer", "kosmo@vandelay.com"), ) # E-mail address used as sender (From field). SERVER_EMAIL = "no-reply@vandelay.com" # Mailserver configuration EMAIL_HOST = "mail.vandelay.com" EMAIL_PORT = 25 # EMAIL_HOST_USER = "servers" # EMAIL_HOST_PASSWORD = "s3cr3t"rr}r(h.Uh/jubaubeubeubh0)r}r(h.Uh/j h8h;h=h>h?}r(hA]hB]hC]hD]rj^ahG]rhauhIM.hJhhK]r(hM)r}r(h.jch/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jj]uhIM.hJhhK]rhTXEventsrr}r(h.jch/jubaubh)r}r(h.Uh/jh8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIM0hJhhK]r(h)r}r(h.X^CELERY_SEND_EVENTS Send events so the worker can be monitored by tools like ``celerymon``. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_SEND_EVENTSrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIM0hK]rhTXCELERY_SEND_EVENTSrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.XGSend events so the worker can be monitored by tools like ``celerymon``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIM2hK]r(hTX9Send events so the worker can be monitored by tools like rr}r(h.X9Send events so the worker can be monitored by tools like h/jubhi)r}r(h.X ``celerymon``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX celerymonrr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubh)r}r(h.XiCELERY_EVENT_EXCHANGE Name of the exchange to send event messages to. Default is ``"celeryevent"``. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_EVENT_EXCHANGErh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIM4hK]rhTXCELERY_EVENT_EXCHANGErr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.XMName of the exchange to send event messages to. Default is ``"celeryevent"``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIM6hK]r(hTX;Name of the exchange to send event messages to. Default is rr}r(h.X;Name of the exchange to send event messages to. Default is h/jubhi)r}r(h.X``"celeryevent"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX "celeryevent"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubh)r}r(h.XrCELERY_EVENT_EXCHANGE_TYPE The exchange type of the event exchange. Default is to use a ``direct`` exchange. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_EVENT_EXCHANGE_TYPErh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIM9hK]rhTXCELERY_EVENT_EXCHANGE_TYPErr}r(h.jh/jubaubj)r }r (h.Uh?}r (hA]hB]hC]hD]hG]uh/jhK]r hX)r }r(h.XQThe exchange type of the event exchange. Default is to use a ``direct`` exchange.h/j h8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIM;hK]r(hTX=The exchange type of the event exchange. Default is to use a rr}r(h.X=The exchange type of the event exchange. Default is to use a h/j ubhi)r}r(h.X ``direct``h?}r(hA]hB]hC]hD]hG]uh/j hK]rhTXdirectrr}r(h.Uh/jubah=hqubhTX exchange.rr}r(h.X exchange.h/j ubeubah=jubeubh)r}r(h.XjCELERY_EVENT_ROUTING_KEY Routing key used when sending event messages. Default is ``"celeryevent"``. h/jh8h;h=hh?}r (hA]hB]hC]hD]hG]uhINhJhhK]r!(hX)r"}r#(h.XCELERY_EVENT_ROUTING_KEYr$h/jh8h;h=h\h?}r%(hA]hB]hC]hD]hG]uhIM>hK]r&hTXCELERY_EVENT_ROUTING_KEYr'r(}r)(h.j$h/j"ubaubj)r*}r+(h.Uh?}r,(hA]hB]hC]hD]hG]uh/jhK]r-hX)r.}r/(h.XKRouting key used when sending event messages. Default is ``"celeryevent"``.h/j*h8h;h=h\h?}r0(hA]hB]hC]hD]hG]uhIM@hK]r1(hTX9Routing key used when sending event messages. Default is r2r3}r4(h.X9Routing key used when sending event messages. Default is h/j.ubhi)r5}r6(h.X``"celeryevent"``h?}r7(hA]hB]hC]hD]hG]uh/j.hK]r8hTX "celeryevent"r9r:}r;(h.Uh/j5ubah=hqubhTX.r<}r=(h.X.h/j.ubeubah=jubeubh)r>}r?(h.XsCELERY_EVENT_SERIALIZER Message serialization format used when sending event messages. Default is ``"json"``. h/jh8h;h=hh?}r@(hA]hB]hC]hD]hG]uhINhJhhK]rA(hX)rB}rC(h.XCELERY_EVENT_SERIALIZERrDh/j>h8h;h=h\h?}rE(hA]hB]hC]hD]hG]uhIMChK]rFhTXCELERY_EVENT_SERIALIZERrGrH}rI(h.jDh/jBubaubj)rJ}rK(h.Uh?}rL(hA]hB]hC]hD]hG]uh/j>hK]rMhX)rN}rO(h.XUMessage serialization format used when sending event messages. Default is ``"json"``.h/jJh8h;h=h\h?}rP(hA]hB]hC]hD]hG]uhIMEhK]rQ(hTXJMessage serialization format used when sending event messages. Default is rRrS}rT(h.XJMessage serialization format used when sending event messages. Default is h/jNubhi)rU}rV(h.X ``"json"``h?}rW(hA]hB]hC]hD]hG]uh/jNhK]rXhTX"json"rYrZ}r[(h.Uh/jUubah=hqubhTX.r\}r](h.X.h/jNubeubah=jubeubeubeubh0)r^}r_(h.Uh/j h8h;h=h>h?}r`(hA]hB]hC]hD]rajqahG]rbhauhIMIhJhhK]rc(hM)rd}re(h.jvh/j^h8h;h=hQh?}rf(hD]hC]hA]hB]hG]jjpuhIMIhJhhK]rghTXBroadcast Commandsrhri}rj(h.jvh/jdubaubh)rk}rl(h.Uh/j^h8h;h=hh?}rm(jX*hD]hC]hA]hB]hG]uhIMKhJhhK]rn(h)ro}rp(h.XCELERY_BROADCAST_QUEUE Name prefix for the queue used when listening for broadcast messages. The workers hostname will be appended to the prefix to create the final queue name. Default is ``"celeryctl"``. h/jkh8h;h=hh?}rq(hA]hB]hC]hD]hG]uhINhJhhK]rr(hX)rs}rt(h.XCELERY_BROADCAST_QUEUEruh/joh8h;h=h\h?}rv(hA]hB]hC]hD]hG]uhIMKhK]rwhTXCELERY_BROADCAST_QUEUErxry}rz(h.juh/jsubaubj)r{}r|(h.Uh?}r}(hA]hB]hC]hD]hG]uh/johK]r~(hX)r}r(h.XName prefix for the queue used when listening for broadcast messages. The workers hostname will be appended to the prefix to create the final queue name.rh/j{h8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMMhK]rhTXName prefix for the queue used when listening for broadcast messages. The workers hostname will be appended to the prefix to create the final queue name.rr}r(h.jh/jubaubhX)r}r(h.XDefault is ``"celeryctl"``.h/j{h8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMQhK]r(hTX Default is rr}r(h.X Default is h/jubhi)r}r(h.X``"celeryctl"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX "celeryctl"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubeh=jubeubh)r}r(h.XnCELERY_BROADCAST_EXCHANGE Name of the exchange used for broadcast messages. Default is ``"celeryctl"``. h/jkh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_BROADCAST_EXCHANGErh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMShK]rhTXCELERY_BROADCAST_EXCHANGErr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r}r(h.X1Name of the exchange used for broadcast messages.rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMUhK]rhTX1Name of the exchange used for broadcast messages.rr}r(h.jh/jubaubhX)r}r(h.XDefault is ``"celeryctl"``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMWhK]r(hTX Default is rr}r(h.X Default is h/jubhi)r}r(h.X``"celeryctl"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX "celeryctl"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubeh=jubeubh)r}r(h.XfCELERY_BROADCAST_EXCHANGE_TYPE Exchange type used for broadcast messages. Default is ``"fanout"``. h/jkh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_BROADCAST_EXCHANGE_TYPErh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMYhK]rhTXCELERY_BROADCAST_EXCHANGE_TYPErr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.XCExchange type used for broadcast messages. Default is ``"fanout"``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIM[hK]r(hTX6Exchange type used for broadcast messages. Default is rr}r(h.X6Exchange type used for broadcast messages. Default is h/jubhi)r}r(h.X ``"fanout"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX"fanout"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubeubeubh0)r}r(h.Uh/j h8h;h=h>h?}r(hA]hB]hC]hD]rjahG]rh"auhIM^hJhhK]r(hM)r}r(h.jh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jjuhIM^hJhhK]rhTXLoggingrr}r(h.jh/jubaubh)r}r(h.Uh/jh8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIM`hJhhK]r(h)r}r(h.XCELERYD_LOG_FILE The default file name the worker daemon logs messages to, can be overridden using the `--logfile`` option to ``celeryd``. The default is ``None`` (``stderr``) Can also be set via the ``--logfile`` argument. h/jh8Nh=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.XCELERYD_LOG_FILE The default file name the worker daemon logs messages to, can be overridden using the `--logfile`` option to ``celeryd``. The default is ``None`` (``stderr``) Can also be set via the ``--logfile`` argument. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIMehK]r(jn)r}r(h.XCELERYD_LOG_FILErh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIMehK]rhTXCELERYD_LOG_FILErr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r}r (h.XyThe default file name the worker daemon logs messages to, can be overridden using the `--logfile`` option to ``celeryd``.h/jh8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIMahK]r (hTXVThe default file name the worker daemon logs messages to, can be overridden using the r r }r(h.XVThe default file name the worker daemon logs messages to, can be overridden using the h/jubj9)r}r(h.X `--logfile``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX --logfile`rr}r(h.Uh/jubah=jAubhTX option to rr}r(h.X option to h/jubhi)r}r(h.X ``celeryd``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXcelerydrr}r(h.Uh/jubah=hqubhTX.r }r!(h.X.h/jubeubhX)r"}r#(h.XTThe default is ``None`` (``stderr``) Can also be set via the ``--logfile`` argument.h/jh8h;h=h\h?}r$(hA]hB]hC]hD]hG]uhIMdhK]r%(hTXThe default is r&r'}r((h.XThe default is h/j"ubhi)r)}r*(h.X``None``h?}r+(hA]hB]hC]hD]hG]uh/j"hK]r,hTXNoner-r.}r/(h.Uh/j)ubah=hqubhTX (r0r1}r2(h.X (h/j"ubhi)r3}r4(h.X ``stderr``h?}r5(hA]hB]hC]hD]hG]uh/j"hK]r6hTXstderrr7r8}r9(h.Uh/j3ubah=hqubhTX) Can also be set via the r:r;}r<(h.X) Can also be set via the h/j"ubhi)r=}r>(h.X ``--logfile``h?}r?(hA]hB]hC]hD]hG]uh/j"hK]r@hTX --logfilerArB}rC(h.Uh/j=ubah=hqubhTX argument.rDrE}rF(h.X argument.h/j"ubeubeh=jubeubah=jubaubh)rG}rH(h.XCELERYD_LOG_LEVEL Worker log level, can be any of ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, ``CRITICAL``. Can also be set via the ``--loglevel`` argument. See the :mod:`logging` module for more information. h/jh8h;h=hh?}rI(hA]hB]hC]hD]hG]uhINhJhhK]rJ(hX)rK}rL(h.XCELERYD_LOG_LEVELrMh/jGh8h;h=h\h?}rN(hA]hB]hC]hD]hG]uhIMghK]rOhTXCELERYD_LOG_LEVELrPrQ}rR(h.jMh/jKubaubj)rS}rT(h.Uh?}rU(hA]hB]hC]hD]hG]uh/jGhK]rV(hX)rW}rX(h.XZWorker log level, can be any of ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, ``CRITICAL``.h/jSh8h;h=h\h?}rY(hA]hB]hC]hD]hG]uhIMihK]rZ(hTX Worker log level, can be any of r[r\}r](h.X Worker log level, can be any of h/jWubhi)r^}r_(h.X ``DEBUG``h?}r`(hA]hB]hC]hD]hG]uh/jWhK]rahTXDEBUGrbrc}rd(h.Uh/j^ubah=hqubhTX, rerf}rg(h.X, h/jWubhi)rh}ri(h.X``INFO``h?}rj(hA]hB]hC]hD]hG]uh/jWhK]rkhTXINFOrlrm}rn(h.Uh/jhubah=hqubhTX, rorp}rq(h.X, h/jWubhi)rr}rs(h.X ``WARNING``h?}rt(hA]hB]hC]hD]hG]uh/jWhK]ruhTXWARNINGrvrw}rx(h.Uh/jrubah=hqubhTX, ryrz}r{(h.X, h/jWubhi)r|}r}(h.X ``ERROR``h?}r~(hA]hB]hC]hD]hG]uh/jWhK]rhTXERRORrr}r(h.Uh/j|ubah=hqubhTX, rr}r(h.X, h/jWubhi)r}r(h.X ``CRITICAL``h?}r(hA]hB]hC]hD]hG]uh/jWhK]rhTXCRITICALrr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jWubeubhX)r}r(h.X0Can also be set via the ``--loglevel`` argument.h/jSh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMlhK]r(hTXCan also be set via the rr}r(h.XCan also be set via the h/jubhi)r}r(h.X``--loglevel``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX --loglevelrr}r(h.Uh/jubah=hqubhTX argument.rr}r(h.X argument.h/jubeubhX)r}r(h.X3See the :mod:`logging` module for more information.h/jSh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMnhK]r(hTXSee the rr}r(h.XSee the h/jubjf)r}r(h.X:mod:`logging`rh/jh8h;h=jjh?}r(UreftypeXmodjmjnXloggingU refdomainXpyrhD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMnhK]rhi)r}r(h.jh?}r(hA]hB]r(jvjXpy-modrehC]hD]hG]uh/jhK]rhTXloggingrr}r(h.Uh/jubah=hqubaubhTX module for more information.rr}r(h.X module for more information.h/jubeubeh=jubeubh)r}r(h.XCELERYD_LOG_FORMAT The format to use for log messages. Default is ``[%(asctime)s: %(levelname)s/%(processName)s] %(message)s`` See the Python :mod:`logging` module for more information about log formats. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERYD_LOG_FORMATrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMphK]rhTXCELERYD_LOG_FORMATrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r}r(h.X#The format to use for log messages.rh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMrhK]rhTX#The format to use for log messages.rr}r(h.jh/jubaubhX)r}r(h.XGDefault is ``[%(asctime)s: %(levelname)s/%(processName)s] %(message)s``h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMthK]r(hTX Default is rr}r(h.X Default is h/jubhi)r}r(h.X<``[%(asctime)s: %(levelname)s/%(processName)s] %(message)s``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX8[%(asctime)s: %(levelname)s/%(processName)s] %(message)srr}r(h.Uh/jubah=hqubeubhX)r}r(h.XLSee the Python :mod:`logging` module for more information about log formats.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMvhK]r(hTXSee the Python rr}r(h.XSee the Python h/jubjf)r}r(h.X:mod:`logging`rh/jh8h;h=jjh?}r(UreftypeXmodjmjnXloggingU refdomainXpyrhD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMvhK]rhi)r}r(h.jh?}r(hA]hB]r(jvjXpy-modrehC]hD]hG]uh/jhK]rhTXloggingrr}r(h.Uh/jubah=hqubaubhTX/ module for more information about log formats.rr}r(h.X/ module for more information about log formats.h/jubeubeh=jubeubh)r}r(h.X\CELERYD_TASK_LOG_FORMAT The format to use for log messages logged in tasks. Can be overridden using the ``--loglevel`` option to ``celeryd``. Default is:: [%(asctime)s: %(levelname)s/%(processName)s] [%(task_name)s(%(task_id)s)] %(message)s See the Python :mod:`logging` module for more information about log formats. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERYD_TASK_LOG_FORMATrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMyhK]rhTXCELERYD_TASK_LOG_FORMATrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r}r (h.XuThe format to use for log messages logged in tasks. Can be overridden using the ``--loglevel`` option to ``celeryd``.h/jh8h;h=h\h?}r (hA]hB]hC]hD]hG]uhIM{hK]r (hTXPThe format to use for log messages logged in tasks. Can be overridden using the r r }r(h.XPThe format to use for log messages logged in tasks. Can be overridden using the h/jubhi)r}r(h.X``--loglevel``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX --loglevelrr}r(h.Uh/jubah=hqubhTX option to rr}r(h.X option to h/jubhi)r}r(h.X ``celeryd``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXcelerydrr}r(h.Uh/jubah=hqubhTX.r }r!(h.X.h/jubeubhX)r"}r#(h.X Default is::h/jh8h;h=h\h?}r$(hA]hB]hC]hD]hG]uhIM~hK]r%hTX Default is:r&r'}r((h.X Default is:h/j"ubaubj)r)}r*(h.XY[%(asctime)s: %(levelname)s/%(processName)s] [%(task_name)s(%(task_id)s)] %(message)sh/jh=jh?}r+(jjhD]hC]hA]hB]hG]uhIMhK]r,hTXY[%(asctime)s: %(levelname)s/%(processName)s] [%(task_name)s(%(task_id)s)] %(message)sr-r.}r/(h.Uh/j)ubaubhX)r0}r1(h.XLSee the Python :mod:`logging` module for more information about log formats.h/jh8h;h=h\h?}r2(hA]hB]hC]hD]hG]uhIMhK]r3(hTXSee the Python r4r5}r6(h.XSee the Python h/j0ubjf)r7}r8(h.X:mod:`logging`r9h/j0h8h;h=jjh?}r:(UreftypeXmodjmjnXloggingU refdomainXpyr;hD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMhK]r<hi)r=}r>(h.j9h?}r?(hA]hB]r@(jvj;Xpy-modrAehC]hD]hG]uh/j7hK]rBhTXloggingrCrD}rE(h.Uh/j=ubah=hqubaubhTX/ module for more information about log formats.rFrG}rH(h.X/ module for more information about log formats.h/j0ubeubeh=jubeubeubeubh0)rI}rJ(h.Uh/j h8h;h=h>h?}rK(hA]hB]hC]hD]rLjahG]rMhauhIMhJhhK]rN(hM)rO}rP(h.jh/jIh8h;h=hQh?}rQ(hD]hC]hA]hB]hG]jjuhIMhJhhK]rRhTX#Custom Component Classes (advanced)rSrT}rU(h.jh/jOubaubh)rV}rW(h.Uh/jIh8h;h=hh?}rX(jX*hD]hC]hA]hB]hG]uhIMhJhhK]rY(h)rZ}r[(h.XzCELERYD_POOL Name of the task pool class used by the worker. Default is ``"celery.concurrency.processes.TaskPool"``. h/jVh8h;h=hh?}r\(hA]hB]hC]hD]hG]uhINhJhhK]r](hX)r^}r_(h.X CELERYD_POOLr`h/jZh8h;h=h\h?}ra(hA]hB]hC]hD]hG]uhIMhK]rbhTX CELERYD_POOLrcrd}re(h.j`h/j^ubaubj)rf}rg(h.Uh?}rh(hA]hB]hC]hD]hG]uh/jZhK]rihX)rj}rk(h.XgName of the task pool class used by the worker. Default is ``"celery.concurrency.processes.TaskPool"``.h/jfh8h;h=h\h?}rl(hA]hB]hC]hD]hG]uhIMhK]rm(hTX;Name of the task pool class used by the worker. Default is rnro}rp(h.X;Name of the task pool class used by the worker. Default is h/jjubhi)rq}rr(h.X+``"celery.concurrency.processes.TaskPool"``h?}rs(hA]hB]hC]hD]hG]uh/jjhK]rthTX'"celery.concurrency.processes.TaskPool"rurv}rw(h.Uh/jqubah=hqubhTX.rx}ry(h.X.h/jjubeubah=jubeubh)rz}r{(h.X}CELERYD_LISTENER Name of the listener class used by the worker. Default is ``"celery.worker.listener.CarrotListener"``. h/jVh8h;h=hh?}r|(hA]hB]hC]hD]hG]uhINhJhhK]r}(hX)r~}r(h.XCELERYD_LISTENERrh/jzh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXCELERYD_LISTENERrr}r(h.jh/j~ubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jzhK]rhX)r}r(h.XfName of the listener class used by the worker. Default is ``"celery.worker.listener.CarrotListener"``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTX:Name of the listener class used by the worker. Default is rr}r(h.X:Name of the listener class used by the worker. Default is h/jubhi)r}r(h.X+``"celery.worker.listener.CarrotListener"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX'"celery.worker.listener.CarrotListener"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubh)r}r(h.XzCELERYD_MEDIATOR Name of the mediator class used by the worker. Default is ``"celery.worker.controllers.Mediator"``. h/jVh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERYD_MEDIATORrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXCELERYD_MEDIATORrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.XcName of the mediator class used by the worker. Default is ``"celery.worker.controllers.Mediator"``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTX:Name of the mediator class used by the worker. Default is rr}r(h.X:Name of the mediator class used by the worker. Default is h/jubhi)r}r(h.X(``"celery.worker.controllers.Mediator"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX$"celery.worker.controllers.Mediator"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubh)r}r(h.XCELERYD_ETA_SCHEDULER Name of the ETA scheduler class used by the worker. Default is ``"celery.worker.controllers.ScheduleController"``. h/jVh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERYD_ETA_SCHEDULERrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXCELERYD_ETA_SCHEDULERrr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.XrName of the ETA scheduler class used by the worker. Default is ``"celery.worker.controllers.ScheduleController"``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTX?Name of the ETA scheduler class used by the worker. Default is rr}r(h.X?Name of the ETA scheduler class used by the worker. Default is h/jubhi)r}r(h.X2``"celery.worker.controllers.ScheduleController"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX."celery.worker.controllers.ScheduleController"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubeubeubeubh0)r}r(h.Uh/h6h8h;h=h>h?}r(hA]hB]hC]hD]rjahG]rhauhIMhJhhK]r(hM)r}r(h.jh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jjuhIMhJhhK]rhTX Periodic Task Server: celerybeatrr}r(h.jh/jubaubh)r}r(h.Uh/jh8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIMhJhhK]r(h)r}r(h.XCELERYBEAT_SCHEDULE_FILENAME Name of the file celerybeat stores the current schedule in. Can be a relative or absolute path, but be aware that the suffix ``.db`` will be appended to the file name. Can also be set via the ``--schedule`` argument. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERYBEAT_SCHEDULE_FILENAMErh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXCELERYBEAT_SCHEDULE_FILENAMErr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r}r(h.XName of the file celerybeat stores the current schedule in. Can be a relative or absolute path, but be aware that the suffix ``.db`` will be appended to the file name.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTX}Name of the file celerybeat stores the current schedule in. Can be a relative or absolute path, but be aware that the suffix rr}r(h.X}Name of the file celerybeat stores the current schedule in. Can be a relative or absolute path, but be aware that the suffix h/jubhi)r}r(h.X``.db``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX.dbrr}r(h.Uh/jubah=hqubhTX# will be appended to the file name.r r }r (h.X# will be appended to the file name.h/jubeubhX)r }r (h.X0Can also be set via the ``--schedule`` argument.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTXCan also be set via the rr}r(h.XCan also be set via the h/j ubhi)r}r(h.X``--schedule``h?}r(hA]hB]hC]hD]hG]uh/j hK]rhTX --schedulerr}r(h.Uh/jubah=hqubhTX argument.rr}r(h.X argument.h/j ubeubeh=jubeubh)r}r(h.XCELERYBEAT_MAX_LOOP_INTERVAL The maximum number of seconds celerybeat can sleep between checking the schedule. Default is 300 seconds (5 minutes). h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r (hX)r!}r"(h.XCELERYBEAT_MAX_LOOP_INTERVALr#h/jh8h;h=h\h?}r$(hA]hB]hC]hD]hG]uhIMhK]r%hTXCELERYBEAT_MAX_LOOP_INTERVALr&r'}r((h.j#h/j!ubaubj)r)}r*(h.Uh?}r+(hA]hB]hC]hD]hG]uh/jhK]r,hX)r-}r.(h.XuThe maximum number of seconds celerybeat can sleep between checking the schedule. Default is 300 seconds (5 minutes).r/h/j)h8h;h=h\h?}r0(hA]hB]hC]hD]hG]uhIMhK]r1hTXuThe maximum number of seconds celerybeat can sleep between checking the schedule. Default is 300 seconds (5 minutes).r2r3}r4(h.j/h/j-ubaubah=jubeubh)r5}r6(h.XCELERYBEAT_LOG_FILE The default file name to log messages to, can be overridden using the `--logfile`` option. The default is ``None`` (``stderr``). Can also be set via the ``--logfile`` argument. h/jh8Nh=hh?}r7(hA]hB]hC]hD]hG]uhINhJhhK]r8jc)r9}r:(h.Uh?}r;(hA]hB]hC]hD]hG]uh/j5hK]r<jh)r=}r>(h.XCELERYBEAT_LOG_FILE The default file name to log messages to, can be overridden using the `--logfile`` option. The default is ``None`` (``stderr``). Can also be set via the ``--logfile`` argument. h/j9h8h;h=jkh?}r?(hA]hB]hC]hD]hG]uhIMhK]r@(jn)rA}rB(h.XCELERYBEAT_LOG_FILErCh/j=h8h;h=jrh?}rD(hA]hB]hC]hD]hG]uhIMhK]rEhTXCELERYBEAT_LOG_FILErFrG}rH(h.jCh/jAubaubjx)rI}rJ(h.Uh?}rK(hA]hB]hC]hD]hG]uh/j=hK]rL(hX)rM}rN(h.XZThe default file name to log messages to, can be overridden using the `--logfile`` option.h/jIh8h;h=h\h?}rO(hA]hB]hC]hD]hG]uhIMhK]rP(hTXFThe default file name to log messages to, can be overridden using the rQrR}rS(h.XFThe default file name to log messages to, can be overridden using the h/jMubj9)rT}rU(h.X `--logfile``h?}rV(hA]hB]hC]hD]hG]uh/jMhK]rWhTX --logfile`rXrY}rZ(h.Uh/jTubah=jAubhTX option.r[r\}r](h.X option.h/jMubeubhX)r^}r_(h.XUThe default is ``None`` (``stderr``). Can also be set via the ``--logfile`` argument.h/jIh8h;h=h\h?}r`(hA]hB]hC]hD]hG]uhIMhK]ra(hTXThe default is rbrc}rd(h.XThe default is h/j^ubhi)re}rf(h.X``None``h?}rg(hA]hB]hC]hD]hG]uh/j^hK]rhhTXNonerirj}rk(h.Uh/jeubah=hqubhTX (rlrm}rn(h.X (h/j^ubhi)ro}rp(h.X ``stderr``h?}rq(hA]hB]hC]hD]hG]uh/j^hK]rrhTXstderrrsrt}ru(h.Uh/joubah=hqubhTX). Can also be set via the rvrw}rx(h.X). Can also be set via the h/j^ubhi)ry}rz(h.X ``--logfile``h?}r{(hA]hB]hC]hD]hG]uh/j^hK]r|hTX --logfiler}r~}r(h.Uh/jyubah=hqubhTX argument.rr}r(h.X argument.h/j^ubeubeh=jubeubah=jubaubh)r}r(h.XCELERYBEAT_LOG_LEVEL Logging level. Can be any of ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, or ``CRITICAL``. Can also be set via the ``--loglevel`` argument. See the :mod:`logging` module for more information. h/jh8Nh=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.XCELERYBEAT_LOG_LEVEL Logging level. Can be any of ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, or ``CRITICAL``. Can also be set via the ``--loglevel`` argument. See the :mod:`logging` module for more information. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIMhK]r(jn)r}r(h.XCELERYBEAT_LOG_LEVELrh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXCELERYBEAT_LOG_LEVELrr}r(h.jh/jubaubjx)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]r(hX)r}r(h.XZLogging level. Can be any of ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, or ``CRITICAL``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTXLogging level. Can be any of rr}r(h.XLogging level. Can be any of h/jubhi)r}r(h.X ``DEBUG``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXDEBUGrr}r(h.Uh/jubah=hqubhTX, rr}r(h.X, h/jubhi)r}r(h.X``INFO``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXINFOrr}r(h.Uh/jubah=hqubhTX, rr}r(h.X, h/jubhi)r}r(h.X ``WARNING``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXWARNINGrr}r(h.Uh/jubah=hqubhTX, rr}r(h.X, h/jubhi)r}r(h.X ``ERROR``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXERRORrr}r(h.Uh/jubah=hqubhTX, or rr}r(h.X, or h/jubhi)r}r(h.X ``CRITICAL``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXCRITICALrr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubhX)r}r(h.X0Can also be set via the ``--loglevel`` argument.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTXCan also be set via the rr}r(h.XCan also be set via the h/jubhi)r}r(h.X``--loglevel``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX --loglevelrr}r(h.Uh/jubah=hqubhTX argument.rr}r(h.X argument.h/jubeubhX)r}r(h.X3See the :mod:`logging` module for more information.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTXSee the rr}r(h.XSee the h/jubjf)r}r(h.X:mod:`logging`rh/jh8h;h=jjh?}r(UreftypeXmodjmjnXloggingU refdomainXpyrhD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMhK]rhi)r}r(h.jh?}r(hA]hB]r(jvjXpy-modrehC]hD]hG]uh/jhK]rhTXloggingrr}r(h.Uh/jubah=hqubaubhTX module for more information.rr}r(h.X module for more information.h/jubeubeh=jubeubah=jubaubeubeubh0)r}r(h.Uh/h6h8h;h=h>h?}r(hA]hB]hC]hD]rjahG]rh auhIMhJhhK]r(hM)r}r(h.jh/jh8h;h=hQh?}r(hD]hC]hA]hB]hG]jjuhIMhJhhK]rhTXMonitor Server: celerymonrr}r (h.jh/jubaubh)r }r (h.Uh/jh8h;h=hh?}r (jX*hD]hC]hA]hB]hG]uhIMhJhhK]r (h)r}r(h.XCELERYMON_LOG_FILE The default file name to log messages to, can be overridden using the `--logfile`` option. The default is ``None`` (``stderr``) Can also be set via the ``--logfile`` argument. h/j h8Nh=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]rjc)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rjh)r}r(h.XCELERYMON_LOG_FILE The default file name to log messages to, can be overridden using the `--logfile`` option. The default is ``None`` (``stderr``) Can also be set via the ``--logfile`` argument. h/jh8h;h=jkh?}r(hA]hB]hC]hD]hG]uhIMhK]r(jn)r}r(h.XCELERYMON_LOG_FILErh/jh8h;h=jrh?}r(hA]hB]hC]hD]hG]uhIMhK]rhTXCELERYMON_LOG_FILErr }r!(h.jh/jubaubjx)r"}r#(h.Uh?}r$(hA]hB]hC]hD]hG]uh/jhK]r%(hX)r&}r'(h.XZThe default file name to log messages to, can be overridden using the `--logfile`` option.h/j"h8h;h=h\h?}r((hA]hB]hC]hD]hG]uhIMhK]r)(hTXFThe default file name to log messages to, can be overridden using the r*r+}r,(h.XFThe default file name to log messages to, can be overridden using the h/j&ubj9)r-}r.(h.X `--logfile``h?}r/(hA]hB]hC]hD]hG]uh/j&hK]r0hTX --logfile`r1r2}r3(h.Uh/j-ubah=jAubhTX option.r4r5}r6(h.X option.h/j&ubeubhX)r7}r8(h.XTThe default is ``None`` (``stderr``) Can also be set via the ``--logfile`` argument.h/j"h8h;h=h\h?}r9(hA]hB]hC]hD]hG]uhIMhK]r:(hTXThe default is r;r<}r=(h.XThe default is h/j7ubhi)r>}r?(h.X``None``h?}r@(hA]hB]hC]hD]hG]uh/j7hK]rAhTXNonerBrC}rD(h.Uh/j>ubah=hqubhTX (rErF}rG(h.X (h/j7ubhi)rH}rI(h.X ``stderr``h?}rJ(hA]hB]hC]hD]hG]uh/j7hK]rKhTXstderrrLrM}rN(h.Uh/jHubah=hqubhTX) Can also be set via the rOrP}rQ(h.X) Can also be set via the h/j7ubhi)rR}rS(h.X ``--logfile``h?}rT(hA]hB]hC]hD]hG]uh/j7hK]rUhTX --logfilerVrW}rX(h.Uh/jRubah=hqubhTX argument.rYrZ}r[(h.X argument.h/j7ubeubeh=jubeubah=jubaubh)r\}r](h.XCELERYMON_LOG_LEVEL Logging level. Can be any of ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, or ``CRITICAL``. See the :mod:`logging` module for more information.h/j h8Nh=hh?}r^(hA]hB]hC]hD]hG]uhINhJhhK]r_jc)r`}ra(h.Uh?}rb(hA]hB]hC]hD]hG]uh/j\hK]rcjh)rd}re(h.XCELERYMON_LOG_LEVEL Logging level. Can be any of ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, or ``CRITICAL``. See the :mod:`logging` module for more information.h/j`h8h;h=jkh?}rf(hA]hB]hC]hD]hG]uhIMhK]rg(jn)rh}ri(h.XCELERYMON_LOG_LEVELrjh/jdh8h;h=jrh?}rk(hA]hB]hC]hD]hG]uhIMhK]rlhTXCELERYMON_LOG_LEVELrmrn}ro(h.jjh/jhubaubjx)rp}rq(h.Uh?}rr(hA]hB]hC]hD]hG]uh/jdhK]rs(hX)rt}ru(h.XZLogging level. Can be any of ``DEBUG``, ``INFO``, ``WARNING``, ``ERROR``, or ``CRITICAL``.h/jph8h;h=h\h?}rv(hA]hB]hC]hD]hG]uhIMhK]rw(hTXLogging level. Can be any of rxry}rz(h.XLogging level. Can be any of h/jtubhi)r{}r|(h.X ``DEBUG``h?}r}(hA]hB]hC]hD]hG]uh/jthK]r~hTXDEBUGrr}r(h.Uh/j{ubah=hqubhTX, rr}r(h.X, h/jtubhi)r}r(h.X``INFO``h?}r(hA]hB]hC]hD]hG]uh/jthK]rhTXINFOrr}r(h.Uh/jubah=hqubhTX, rr}r(h.X, h/jtubhi)r}r(h.X ``WARNING``h?}r(hA]hB]hC]hD]hG]uh/jthK]rhTXWARNINGrr}r(h.Uh/jubah=hqubhTX, rr}r(h.X, h/jtubhi)r}r(h.X ``ERROR``h?}r(hA]hB]hC]hD]hG]uh/jthK]rhTXERRORrr}r(h.Uh/jubah=hqubhTX, or rr}r(h.X, or h/jtubhi)r}r(h.X ``CRITICAL``h?}r(hA]hB]hC]hD]hG]uh/jthK]rhTXCRITICALrr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jtubeubhX)r}r(h.X3See the :mod:`logging` module for more information.rh/jph8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIMhK]r(hTXSee the rr}r(h.XSee the h/jubjf)r}r(h.X:mod:`logging`rh/jh8h;h=jjh?}r(UreftypeXmodjmjnXloggingU refdomainXpyrhD]hC]U refexplicithA]hB]hG]jojpjNjNuhIMhK]rhi)r}r(h.jh?}r(hA]hB]r(jvjXpy-modrehC]hD]hG]uh/jhK]rhTXloggingrr}r(h.Uh/jubah=hqubaubhTX module for more information.rr}r(h.X module for more information.h/jubeubeh=jubeubah=jubaubeubeubeubh8h;h=h>h?}r(hA]hB]hC]hD]rhahG]rhauhIKhJhhK]r(hM)r}r(h.jh/h4h8h;h=hQh?}r(hD]hC]hA]hB]hG]jhuhIKhJhhK]rhTXAMQP backend settingsrr}r(h.jh/jubaubh)r}r(h.Uh/h4h8h;h=hh?}r(jX*hD]hC]hA]hB]hG]uhIKhJhhK]r(h)r}r(h.XfCELERY_RESULT_EXCHANGE Name of the exchange to publish results in. Default is ``"celeryresults"``. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_RESULT_EXCHANGErh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]rhTXCELERY_RESULT_EXCHANGErr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.XKName of the exchange to publish results in. Default is ``"celeryresults"``.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]r(hTX7Name of the exchange to publish results in. Default is rr}r(h.X7Name of the exchange to publish results in. Default is h/jubhi)r}r(h.X``"celeryresults"``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX"celeryresults"rr}r(h.Uh/jubah=hqubhTX.r}r(h.X.h/jubeubah=jubeubh)r}r(h.XtCELERY_RESULT_EXCHANGE_TYPE The exchange type of the result exchange. Default is to use a ``direct`` exchange. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_RESULT_EXCHANGE_TYPErh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]rhTXCELERY_RESULT_EXCHANGE_TYPErr}r(h.jh/jubaubj)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhX)r}r(h.XRThe exchange type of the result exchange. Default is to use a ``direct`` exchange.h/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]r(hTX>The exchange type of the result exchange. Default is to use a r r }r (h.X>The exchange type of the result exchange. Default is to use a h/jubhi)r }r (h.X ``direct``h?}r(hA]hB]hC]hD]hG]uh/jhK]rhTXdirectrr}r(h.Uh/j ubah=hqubhTX exchange.rr}r(h.X exchange.h/jubeubah=jubeubh)r}r(h.XZCELERY_RESULT_SERIALIZER Result message serialization format. Default is ``"pickle"``. h/jh8h;h=hh?}r(hA]hB]hC]hD]hG]uhINhJhhK]r(hX)r}r(h.XCELERY_RESULT_SERIALIZERrh/jh8h;h=h\h?}r(hA]hB]hC]hD]hG]uhIKhK]rhTXCELERY_RESULT_SERIALIZERrr }r!(h.jh/jubaubj)r"}r#(h.Uh?}r$(hA]hB]hC]hD]hG]uh/jhK]r%hX)r&}r'(h.X=Result message serialization format. Default is ``"pickle"``.h/j"h8h;h=h\h?}r((hA]hB]hC]hD]hG]uhIKhK]r)(hTX0Result message serialization format. Default is r*r+}r,(h.X0Result message serialization format. Default is h/j&ubhi)r-}r.(h.X ``"pickle"``h?}r/(hA]hB]hC]hD]hG]uh/j&hK]r0hTX"pickle"r1r2}r3(h.Uh/j-ubah=hqubhTX.r4}r5(h.X.h/j&ubeubah=jubeubh)r6}r7(h.XCELERY_RESULTS_PERSISTENT If set to ``True``, result messages will be persistent. This means the messages will not be lost after a broker restart. The default is for the results to be transient. h/jh8h;h=hh?}r8(hA]hB]hC]hD]hG]uhINhJhhK]r9(hX)r:}r;(h.XCELERY_RESULTS_PERSISTENTr<h/j6h8h;h=h\h?}r=(hA]hB]hC]hD]hG]uhIKhK]r>hTXCELERY_RESULTS_PERSISTENTr?r@}rA(h.j<h/j:ubaubj)rB}rC(h.Uh?}rD(hA]hB]hC]hD]hG]uh/j6hK]rEhX)rF}rG(h.XIf set to ``True``, result messages will be persistent. This means the messages will not be lost after a broker restart. The default is for the results to be transient.h/jBh8h;h=h\h?}rH(hA]hB]hC]hD]hG]uhIKhK]rI(hTX If set to rJrK}rL(h.X If set to h/jFubhi)rM}rN(h.X``True``h?}rO(hA]hB]hC]hD]hG]uh/jFhK]rPhTXTruerQrR}rS(h.Uh/jMubah=hqubhTX, result messages will be persistent. This means the messages will not be lost after a broker restart. The default is for the results to be transient.rTrU}rV(h.X, result messages will be persistent. This means the messages will not be lost after a broker restart. The default is for the results to be transient.h/jFubeubah=jubeubeubh1eubh8h;h=h>h?}rW(hA]rXjahB]hC]hD]rYjahG]uhIKhJhhK]rZ(hM)r[}r\(h.jh/h1h8h;h=hQh?}r](hD]hC]hA]hB]hG]jjuhIKhJhhK]r^hTXExample configurationr_r`}ra(h.jh/j[ubaubj)rb}rc(h.Uh/h1h8h;h=jh?}rd(hA]hB]hC]hD]hG]uhINhJhhK]rehX)rf}rg(h.XCELERY_RESULT_BACKEND = "amqp"rhh/jbh8h;h=h\h?}ri(hA]hB]hC]hD]hG]uhIKhK]rjhTXCELERY_RESULT_BACKEND = "amqp"rkrl}rm(h.jhh/jfubaubaubeubh8h;h=Usystem_messagernh?}ro(hA]UlevelKhD]hC]rpjaUsourceh;hB]hG]UlineKUtypeUINFOrquhIKhJhhK]rrhX)rs}rt(h.Uh?}ru(hA]hB]hC]hD]hG]uh/h,hK]rvhTX8Duplicate implicit target name: "example configuration".rwrx}ry(h.Uh/jsubah=h\ubaubh+)rz}r{(h.Uh/jOh8h;h=jnh?}r|(hA]UlevelKhD]hC]r}j<aUsourceh;hB]hG]UlineKUtypejquhIKhJhhK]r~hX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jzhK]rhTX8Duplicate implicit target name: "example configuration".rr}r(h.Uh/jubah=h\ubaubh+)r}r(h.Uh/j-h8h;h=jnh?}r(hA]UlevelKhD]hC]rjfaUsourceh;hB]hG]UlineKUtypejquhIKhJhhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX8Duplicate implicit target name: "example configuration".rr}r(h.Uh/jubah=h\ubaubh+)r}r(h.Uh/j2h8h;h=jnh?}r(hA]UlevelKhD]hC]rjaUsourceh;hB]hG]UlineMUtypejquhIMhJhhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX8Duplicate implicit target name: "example configuration".rr}r(h.Uh/jubah=h\ubaubh+)r}r(h.Uh/jmh8h;h=jnh?}r(hA]UlevelKhD]hC]rjaUsourceh;hB]hG]UlineM+UtypejquhIM+hJhhK]rhX)r}r(h.Uh?}r(hA]hB]hC]hD]hG]uh/jhK]rhTX8Duplicate implicit target name: "example configuration".rr}r(h.Uh/jubah=h\ubaubeUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hjhjhjh hh hh jh h~h jhjhjhj4hjhjhj hjhj^hhhjhjOhjhjhhhjhjqhjyhhh jh!jKh"jh#j%h$Nh%jh&hFuhK]rh6ah.UU transformerrNU footnote_refsr}rUrefnamesr}r(X sqlalchemy]rjaXmongodb]rjaX tokyo tyrant]rj0aXredis]rjaj0]r(j-jEeXconnection string]r(jjej]rjaXsupported databases]rjauUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhJhU current_linerNUtransform_messagesr]rUreporterrNUid_startrK"U autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhQNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUK/var/build/user_builds/celery/checkouts/2.0-archived/docs/configuration.rstrUgettext_compactrU generatorrNUdump_internalsr NU smart_quotesr U pep_base_urlr Uhttp://www.python.org/dev/peps/r Usyntax_highlightr UlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(jjj%jjjhjjjhh4jj hjh~hvjOjjpjljqj^hhhhjKj~jjGjj2jjmj<jOjfj-jh1hhhhjj hFh6j;j7jjjejajxjtjjjjj]jYjjj^jjjjNjJjjjjjj jjj4j jjjjhjjjjjjjjjjjhj2j$j jjj js j3j/hjhhjyjBhhjjjjjjIjjjjj jjJjFjjuUsubstitution_namesr}rh=hJh?}r(hA]hD]hC]Usourceh;hB]hG]uU footnotesr]rUrefidsr }r!ub.PKHDD҉+celery-2.0-archived/.doctrees/index.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery - distributed task queueqNXindices and tablesqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hUcelery-distributed-task-queueqhUindices-and-tablesquUchildrenq]q(cdocutils.nodes image q)q}q(U rawsourceqXe.. image:: http://cloud.github.com/downloads/ask/celery/celery_favicon_128.png :class: celerylogo UparentqhUsourceqcdocutils.nodes reprunicode qXC/var/build/user_builds/celery/checkouts/2.0-archived/docs/index.rstqq}qbUtagnameqUimageq U attributesq!}q"(UuriXChttp://cloud.github.com/downloads/ask/celery/celery_favicon_128.pngq#Uidsq$]Ubackrefsq%]Udupnamesq&]Uclassesq']q(U celerylogoq)aU candidatesq*}q+U?h#sUnamesq,]uUlineq-NUdocumentq.hh]ubcdocutils.nodes section q/)q0}q1(hUhhhhhUsectionq2h!}q3(h&]h']h%]h$]q4hah,]q5hauh-Kh.hh]q6(cdocutils.nodes title q7)q8}q9(hXCelery - Distributed Task Queueq:hh0hhhUtitleq;h!}q<(h&]h']h%]h$]h,]uh-Kh.hh]q=cdocutils.nodes Text q>XCelery - Distributed Task Queueq?q@}qA(hh:hh8ubaubcdocutils.nodes paragraph qB)qC}qD(hX Contents:qEhh0hhhU paragraphqFh!}qG(h&]h']h%]h$]h,]uh-Kh.hh]qHh>X Contents:qIqJ}qK(hhEhhCubaubcdocutils.nodes compound qL)qM}qN(hUhh0hhhUcompoundqOh!}qP(h&]h']qQUtoctree-wrapperqRah%]h$]h,]uh-Nh.hh]qScsphinx.addnodes toctree qT)qU}qV(hUhhMhhhUtoctreeqWh!}qX(UnumberedqYKU includehiddenqZhXindexq[U titlesonlyq\Uglobq]h$]h%]h&]h']h,]Uentriesq^]q_(NXgetting-started/indexq`qaNXuserguide/indexqbqcNX configurationqdqeNXcookbook/indexqfqgNXtutorials/indexqhqiNXfaqqjqkNXreference/indexqlqmNXinternals/indexqnqoNX changelogqpqqNXlinksqrqseUhiddenqtU includefilesqu]qv(h`hbhdhfhhhjhlhnhphreUmaxdepthqwKuh-K h]ubaubh/)qx}qy(hUhh0hhhh2h!}qz(h&]h']h%]h$]q{hah,]q|hauh-Kh.hh]q}(h7)q~}q(hXIndices and tablesqhhxhhhh;h!}q(h&]h']h%]h$]h,]uh-Kh.hh]qh>XIndices and tablesqq}q(hhhh~ubaubcdocutils.nodes bullet_list q)q}q(hUhhxhhhU bullet_listqh!}q(UbulletqX*h$]h%]h&]h']h,]uh-Kh.hh]q(cdocutils.nodes list_item q)q}q(hX:ref:`genindex`qhhhhhU list_itemqh!}q(h&]h']h%]h$]h,]uh-Nh.hh]qhB)q}q(hhhhhhhhFh!}q(h&]h']h%]h$]h,]uh-Kh]qcsphinx.addnodes pending_xref q)q}q(hhhhhhhU pending_xrefqh!}q(UreftypeXrefUrefwarnqU reftargetqXgenindexU refdomainXstdqh$]h%]U refexplicith&]h']h,]Urefdocqh[uh-Kh]qcdocutils.nodes emphasis q)q}q(hhh!}q(h&]h']q(UxrefqhXstd-refqeh%]h$]h,]uhhh]qh>Xgenindexqq}q(hUhhubahUemphasisqubaubaubaubh)q}q(hX:ref:`modindex`qhhhhhhh!}q(h&]h']h%]h$]h,]uh-Nh.hh]qhB)q}q(hhhhhhhhFh!}q(h&]h']h%]h$]h,]uh-Kh]qh)q}q(hhhhhhhhh!}q(UreftypeXrefhhXmodindexU refdomainXstdqh$]h%]U refexplicith&]h']h,]hh[uh-Kh]qh)q}q(hhh!}q(h&]h']q(hhXstd-refqeh%]h$]h,]uhhh]qh>Xmodindexq…q}q(hUhhubahhubaubaubaubh)q}q(hX:ref:`search` hhhhhhh!}q(h&]h']h%]h$]h,]uh-Nh.hh]qhB)q}q(hX :ref:`search`qhhhhhhFh!}q(h&]h']h%]h$]h,]uh-Kh]qh)q}q(hhhhhhhhh!}q(UreftypeXrefhhXsearchU refdomainXstdqh$]h%]U refexplicith&]h']h,]hh[uh-Kh]qh)q}q(hhh!}q(h&]h']q(hhXstd-refqeh%]h$]h,]uhhh]qh>Xsearchqمq}q(hUhhubahhubaubaubaubeubeubeubehUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh.hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh;NUerror_encoding_error_handlerrUbackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8r U source_urlr!NUinput_encodingr"U utf-8-sigr#U_disable_configr$NU id_prefixr%UU tab_widthr&KUerror_encodingr'UUTF-8r(U_sourcer)UC/var/build/user_builds/celery/checkouts/2.0-archived/docs/index.rstr*Ugettext_compactr+U generatorr,NUdump_internalsr-NU smart_quotesr.U pep_base_urlr/Uhttp://www.python.org/dev/peps/r0Usyntax_highlightr1Ulongr2Uinput_encoding_error_handlerr3j Uauto_id_prefixr4Uidr5Udoctitle_xformr6Ustrip_elements_with_classesr7NU _config_filesr8]Ufile_insertion_enabledr9U raw_enabledr:KU dump_settingsr;NubUsymbol_footnote_startr<KUidsr=}r>(hhxhh0uUsubstitution_namesr?}r@hh.h!}rA(h&]h$]h%]Usourcehh']h,]uU footnotesrB]rCUrefidsrD}rEub.PKHDDN] ܗ ܗ /celery-2.0-archived/.doctrees/changelog.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X1.0.4qNX1.0.5qNX1.0.6qNX0.6.0q NX2.0.3q NX2.0.2q NX2.0.1q NX2.0.0q NXimportant changesqNXsqlalchemy connection stringqX+can i send some tasks to only some servers?qX0.1.8qNX0.1.0qNX0.2.0qNXbackward incompatible changesqNX1.0.0qNUcontentsqNXsupported databasesqX deprecationsqNX1.0.2qNX0.3.20qNX0.3.2qNX0.3.3qNX0.3.0qNX1.0.3qNXsqlalchemy connection stringsqX0.3.7q NXcriticalq!NX0.1.6q"NXremote control commandsq#NX0.4.1q$NXpylibmcq%X0.1.7q&NX1.0.1q'NXimportant notesq(NXcache result backendq)NX 0.2.0-pre1q*NX sqlalchemyq+Xforewordq,NX0.1.13q-NX0.8.4q.NXvery important noteq/NX0.8.1q0NXupgrading for othersq1NX0.8.3q2NXdatabase result backendq3NXfaqq4Xupgrading for django-usersq5NX0.4.0q6NXnewsq7NX0.8.2q8NX can i use celery without django?q9Xcookbook: retrying tasksq:X0.1.12q;NX0.3.1qNX0.1.14q?NX0.1.15q@NX documentationqANXfixesqBNXbugsqCNXdeprecation timelineqDX120newsqEX0.8.0qFNXpython-memcachedqGX django-celeryqHX 0.2.0-pre2qINX 0.2.0-pre3qJNXchangesqKNXchange historyqLNuUsubstitution_defsqM}qNUparse_messagesqO]qP(cdocutils.nodes system_message qQ)qR}qS(U rawsourceqTUUparentqUcdocutils.nodes section qV)qW}qX(hTUU referencedqYKhUhV)qZ}q[(hTUhUhV)q\}q](hTUhUhUsourceq^cdocutils.nodes reprunicode q_XG/var/build/user_builds/celery/checkouts/2.0-archived/docs/changelog.rstq`qa}qbbUtagnameqcUsectionqdU attributesqe}qf(Udupnamesqg]Uclassesqh]Ubackrefsqi]Uidsqj]qkUchange-historyqlaUnamesqm]qnhLauUlineqoKUdocumentqphUchildrenqq]qr(cdocutils.nodes title qs)qt}qu(hTXChange historyqvhUh\h^hahcUtitleqwhe}qx(hg]hh]hi]hj]hm]uhoKhphhq]qycdocutils.nodes Text qzXChange historyq{q|}q}(hThvhUhtubaubcdocutils.nodes topic q~)q}q(hTUhUh\h^hahcUtopicqhe}q(hg]hh]q(UcontentsqUlocalqehi]hj]qUcontentsqahm]qhauhoKhphhq]qcdocutils.nodes bullet_list q)q}q(hTUhUhh^NhcU bullet_listqhe}q(hg]hh]hi]hj]hm]uhoNhphhq]q(cdocutils.nodes list_item q)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]q(cdocutils.nodes paragraph q)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qcdocutils.nodes reference q)q}q(hTUhe}q(hj]qUid50qahi]hg]hh]hm]UrefidUid1quhUhhq]qhzX2.0.3qq}q(hTX2.0.3qhUhubahcU referencequbahcU paragraphqubh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]q(h)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qh)q}q(hTUhe}q(hj]qUid51qahi]hg]hh]hm]UrefidUfixesquhUhhq]qhzXFixesqq}q(hTXFixesqhUhubahchubahchubahcU list_itemqubh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qh)q}q(hTUhe}q(hj]qUid52qahi]hg]hh]hm]UrefidU documentationquhUhhq]qhzX Documentationqυq}q(hTX DocumentationqhUhubahchubahchubahchubehchubehchubh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qh)q}q(hTUhe}q(hj]qUid53qahi]hg]hh]hm]UrefidUid2quhUhhq]qhzX2.0.2q⅁q}q(hTX2.0.2qhUhubahchubahchubahchubh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]qh)q}q(hTUhe}q(hj]qUid54qahi]hg]hh]hm]UrefidUid3quhUhhq]qhzX2.0.1qq}q(hTX2.0.1qhUhubahchubahchubahchubh)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]q(h)q}q(hTUhe}q(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hj]rUid55rahi]hg]hh]hm]UrefidUid4ruhUhhq]rhzX2.0.0rr }r (hTX2.0.0r hUjubahchubahchubh)r }r (hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUj hq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid56rahi]hg]hh]hm]UrefidUforewordruhUjhq]rhzXForewordrr }r!(hTXForewordr"hUjubahchubahchubahchubh)r#}r$(hTUhe}r%(hg]hh]hi]hj]hm]uhUj hq]r&h)r'}r((hTUhe}r)(hg]hh]hi]hj]hm]uhUj#hq]r*h)r+}r,(hTUhe}r-(hj]r.Uid57r/ahi]hg]hh]hm]UrefidUupgrading-for-django-usersr0uhUj'hq]r1hzXUpgrading for Django-usersr2r3}r4(hTXUpgrading for Django-usersr5hUj+ubahchubahchubahchubh)r6}r7(hTUhe}r8(hg]hh]hi]hj]hm]uhUj hq]r9(h)r:}r;(hTUhe}r<(hg]hh]hi]hj]hm]uhUj6hq]r=h)r>}r?(hTUhe}r@(hj]rAUid58rBahi]hg]hh]hm]UrefidUupgrading-for-othersrCuhUj:hq]rDhzXUpgrading for othersrErF}rG(hTXUpgrading for othersrHhUj>ubahchubahchubh)rI}rJ(hTUhe}rK(hg]hh]hi]hj]hm]uhUj6hq]rL(h)rM}rN(hTUhe}rO(hg]hh]hi]hj]hm]uhUjIhq]rPh)rQ}rR(hTUhe}rS(hg]hh]hi]hj]hm]uhUjMhq]rTh)rU}rV(hTUhe}rW(hj]rXUid59rYahi]hg]hh]hm]UrefidUdatabase-result-backendrZuhUjQhq]r[hzXDatabase result backendr\r]}r^(hTXDatabase result backendr_hUjUubahchubahchubahchubh)r`}ra(hTUhe}rb(hg]hh]hi]hj]hm]uhUjIhq]rch)rd}re(hTUhe}rf(hg]hh]hi]hj]hm]uhUj`hq]rgh)rh}ri(hTUhe}rj(hj]rkUid60rlahi]hg]hh]hm]UrefidUcache-result-backendrmuhUjdhq]rnhzXCache result backendrorp}rq(hTXCache result backendrrhUjhubahchubahchubahchubehchubehchubh)rs}rt(hTUhe}ru(hg]hh]hi]hj]hm]uhUj hq]rvh)rw}rx(hTUhe}ry(hg]hh]hi]hj]hm]uhUjshq]rzh)r{}r|(hTUhe}r}(hj]r~Uid61rahi]hg]hh]hm]UrefidUbackward-incompatible-changesruhUjwhq]rhzXBackward incompatible changesrr}r(hTXBackward incompatible changesrhUj{ubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUj hq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid62rahi]hg]hh]hm]UrefidUnewsruhUjhq]rhzXNewsrr}r(hTXNewsrhUjubahchubahchubahchubehchubehchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid63rahi]hg]hh]hm]UrefidUid6ruhUjhq]rhzX1.0.6rr}r(hTX1.0.6rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid64rahi]hg]hh]hm]UrefidUid7ruhUjhq]rhzX1.0.5rr}r(hTX1.0.5rhUjubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid65rahi]hg]hh]hm]UrefidUcriticalruhUjhq]rhzXCriticalrr}r(hTXCriticalrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid66rahi]hg]hh]hm]UrefidUchangesruhUjhq]rhzXChangesrr}r(hTXChangesrhUjubahchubahchubahchubehchubehchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid67rahi]hg]hh]hm]UrefidUid8ruhUjhq]rhzX1.0.4rr}r(hTX1.0.4rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid68rahi]hg]hh]hm]UrefidUid9r uhUjhq]r hzX1.0.3r r }r (hTX1.0.3rhUjubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid69rahi]hg]hh]hm]UrefidUimportant-notesr uhUjhq]r!hzXImportant notesr"r#}r$(hTXImportant notesr%hUjubahchubahchubahchubh)r&}r'(hTUhe}r((hg]hh]hi]hj]hm]uhUjhq]r)h)r*}r+(hTUhe}r,(hg]hh]hi]hj]hm]uhUj&hq]r-h)r.}r/(hTUhe}r0(hj]r1Uid70r2ahi]hg]hh]hm]UrefidUid10r3uhUj*hq]r4hzXNewsr5r6}r7(hTXNewsr8hUj.ubahchubahchubahchubh)r9}r:(hTUhe}r;(hg]hh]hi]hj]hm]uhUjhq]r<h)r=}r>(hTUhe}r?(hg]hh]hi]hj]hm]uhUj9hq]r@h)rA}rB(hTUhe}rC(hj]rDUid71rEahi]hg]hh]hm]UrefidUremote-control-commandsrFuhUj=hq]rGhzXRemote control commandsrHrI}rJ(hTXRemote control commandsrKhUjAubahchubahchubahchubh)rL}rM(hTUhe}rN(hg]hh]hi]hj]hm]uhUjhq]rOh)rP}rQ(hTUhe}rR(hg]hh]hi]hj]hm]uhUjLhq]rSh)rT}rU(hTUhe}rV(hj]rWUid72rXahi]hg]hh]hm]UrefidUid11rYuhUjPhq]rZhzXFixesr[r\}r](hTXFixesr^hUjTubahchubahchubahchubehchubehchubh)r_}r`(hTUhe}ra(hg]hh]hi]hj]hm]uhUhhq]rbh)rc}rd(hTUhe}re(hg]hh]hi]hj]hm]uhUj_hq]rfh)rg}rh(hTUhe}ri(hj]rjUid73rkahi]hg]hh]hm]UrefidUid12rluhUjchq]rmhzX1.0.2rnro}rp(hTX1.0.2rqhUjgubahchubahchubahchubh)rr}rs(hTUhe}rt(hg]hh]hi]hj]hm]uhUhhq]ruh)rv}rw(hTUhe}rx(hg]hh]hi]hj]hm]uhUjrhq]ryh)rz}r{(hTUhe}r|(hj]r}Uid74r~ahi]hg]hh]hm]UrefidUid13ruhUjvhq]rhzX1.0.1rr}r(hTX1.0.1rhUjzubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid75rahi]hg]hh]hm]UrefidUid14ruhUjhq]rhzX1.0.0rr}r(hTX1.0.0rhUjubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid76rahi]hg]hh]hm]UrefidUid15ruhUjhq]rhzXBackward incompatible changesrr}r(hTXBackward incompatible changesrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid77rahi]hg]hh]hm]UrefidU deprecationsruhUjhq]rhzX Deprecationsrr}r(hTX DeprecationsrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid78rahi]hg]hh]hm]UrefidUid16ruhUjhq]rhzXNewsrr}r(hTXNewsrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid79rahi]hg]hh]hm]UrefidUid17ruhUjhq]rhzXChangesrr}r(hTXChangesrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid80rahi]hg]hh]hm]UrefidUbugsruhUjhq]rhzXBugsrr}r(hTXBugsrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid81rahi]hg]hh]hm]UrefidUid18ruhUjhq]r hzX Documentationr r }r (hTX Documentationr hUjubahchubahchubahchubehchubehchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid82rahi]hg]hh]hm]UrefidUid19ruhUjhq]rhzX0.8.4rr}r(hTX0.8.4r hUjubahchubahchubahchubh)r!}r"(hTUhe}r#(hg]hh]hi]hj]hm]uhUhhq]r$h)r%}r&(hTUhe}r'(hg]hh]hi]hj]hm]uhUj!hq]r(h)r)}r*(hTUhe}r+(hj]r,Uid83r-ahi]hg]hh]hm]UrefidUid20r.uhUj%hq]r/hzX0.8.3r0r1}r2(hTX0.8.3r3hUj)ubahchubahchubahchubh)r4}r5(hTUhe}r6(hg]hh]hi]hj]hm]uhUhhq]r7h)r8}r9(hTUhe}r:(hg]hh]hi]hj]hm]uhUj4hq]r;h)r<}r=(hTUhe}r>(hj]r?Uid84r@ahi]hg]hh]hm]UrefidUid21rAuhUj8hq]rBhzX0.8.2rCrD}rE(hTX0.8.2rFhUj<ubahchubahchubahchubh)rG}rH(hTUhe}rI(hg]hh]hi]hj]hm]uhUhhq]rJ(h)rK}rL(hTUhe}rM(hg]hh]hi]hj]hm]uhUjGhq]rNh)rO}rP(hTUhe}rQ(hj]rRUid85rSahi]hg]hh]hm]UrefidUid22rTuhUjKhq]rUhzX0.8.1rVrW}rX(hTX0.8.1rYhUjOubahchubahchubh)rZ}r[(hTUhe}r\(hg]hh]hi]hj]hm]uhUjGhq]r](h)r^}r_(hTUhe}r`(hg]hh]hi]hj]hm]uhUjZhq]rah)rb}rc(hTUhe}rd(hg]hh]hi]hj]hm]uhUj^hq]reh)rf}rg(hTUhe}rh(hj]riUid86rjahi]hg]hh]hm]UrefidUvery-important-noterkuhUjbhq]rlhzXVery important notermrn}ro(hTXVery important noterphUjfubahchubahchubahchubh)rq}rr(hTUhe}rs(hg]hh]hi]hj]hm]uhUjZhq]rth)ru}rv(hTUhe}rw(hg]hh]hi]hj]hm]uhUjqhq]rxh)ry}rz(hTUhe}r{(hj]r|Uid87r}ahi]hg]hh]hm]UrefidUimportant-changesr~uhUjuhq]rhzXImportant changesrr}r(hTXImportant changesrhUjyubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjZhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid88rahi]hg]hh]hm]UrefidUid23ruhUjhq]rhzXChangesrr}r(hTXChangesrhUjubahchubahchubahchubehchubehchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid89rahi]hg]hh]hm]UrefidUid24ruhUjhq]rhzX0.8.0rr}r(hTX0.8.0rhUjubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid90rahi]hg]hh]hm]UrefidUid25ruhUjhq]rhzXBackward incompatible changesrr}r(hTXBackward incompatible changesrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid91rahi]hg]hh]hm]UrefidUid26ruhUjhq]rhzXImportant changesrr}r(hTXImportant changesrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid92rahi]hg]hh]hm]UrefidUid27ruhUjhq]rhzXNewsrr}r(hTXNewsrhUjubahchubahchubahchubehchubehchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid93rahi]hg]hh]hm]UrefidUid28ruhUjhq]rhzX0.6.0rr}r(hTX0.6.0rhUjubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]r Uid94r ahi]hg]hh]hm]UrefidUid29r uhUjhq]r hzXImportant changesr r}r(hTXImportant changesrhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid95rahi]hg]hh]hm]UrefidUid30ruhUjhq]rhzXNewsr r!}r"(hTXNewsr#hUjubahchubahchubahchubehchubehchubh)r$}r%(hTUhe}r&(hg]hh]hi]hj]hm]uhUhhq]r'h)r(}r)(hTUhe}r*(hg]hh]hi]hj]hm]uhUj$hq]r+h)r,}r-(hTUhe}r.(hj]r/Uid96r0ahi]hg]hh]hm]UrefidUid31r1uhUj(hq]r2hzX0.4.1r3r4}r5(hTX0.4.1r6hUj,ubahchubahchubahchubh)r7}r8(hTUhe}r9(hg]hh]hi]hj]hm]uhUhhq]r:h)r;}r<(hTUhe}r=(hg]hh]hi]hj]hm]uhUj7hq]r>h)r?}r@(hTUhe}rA(hj]rBUid97rCahi]hg]hh]hm]UrefidUid32rDuhUj;hq]rEhzX0.4.0rFrG}rH(hTX0.4.0rIhUj?ubahchubahchubahchubh)rJ}rK(hTUhe}rL(hg]hh]hi]hj]hm]uhUhhq]rMh)rN}rO(hTUhe}rP(hg]hh]hi]hj]hm]uhUjJhq]rQh)rR}rS(hTUhe}rT(hj]rUUid98rVahi]hg]hh]hm]UrefidUid33rWuhUjNhq]rXhzX0.3.20rYrZ}r[(hTX0.3.20r\hUjRubahchubahchubahchubh)r]}r^(hTUhe}r_(hg]hh]hi]hj]hm]uhUhhq]r`h)ra}rb(hTUhe}rc(hg]hh]hi]hj]hm]uhUj]hq]rdh)re}rf(hTUhe}rg(hj]rhUid99riahi]hg]hh]hm]UrefidUid34rjuhUjahq]rkhzX0.3.7rlrm}rn(hTX0.3.7rohUjeubahchubahchubahchubh)rp}rq(hTUhe}rr(hg]hh]hi]hj]hm]uhUhhq]rsh)rt}ru(hTUhe}rv(hg]hh]hi]hj]hm]uhUjphq]rwh)rx}ry(hTUhe}rz(hj]r{Uid100r|ahi]hg]hh]hm]UrefidUid35r}uhUjthq]r~hzX0.3.3rr}r(hTX0.3.3rhUjxubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid101rahi]hg]hh]hm]UrefidUid36ruhUjhq]rhzX0.3.2rr}r(hTX0.3.2rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid102rahi]hg]hh]hm]UrefidUid37ruhUjhq]rhzX0.3.1rr}r(hTX0.3.1rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid103rahi]hg]hh]hm]UrefidUid38ruhUjhq]rhzX0.3.0rr}r(hTX0.3.0rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid104rahi]hg]hh]hm]UrefidUid39ruhUjhq]rhzX0.2.0rr}r(hTX0.2.0rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid105rahi]hg]hh]hm]UrefidUpre3ruhUjhq]rhzX 0.2.0-pre3rr}r(hTX 0.2.0-pre3rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid106rahi]hg]hh]hm]UrefidUpre2ruhUjhq]rhzX 0.2.0-pre2rr}r(hTX 0.2.0-pre2rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid107rahi]hg]hh]hm]UrefidUpre1ruhUjhq]rhzX 0.2.0-pre1rr}r(hTX 0.2.0-pre1rhUjubahchubahchubahchubh)r}r (hTUhe}r (hg]hh]hi]hj]hm]uhUhhq]r h)r }r (hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid108rahi]hg]hh]hm]UrefidUid40ruhUj hq]rhzX0.1.15rr}r(hTX0.1.15rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r (hTUhe}r!(hg]hh]hi]hj]hm]uhUjhq]r"h)r#}r$(hTUhe}r%(hj]r&Uid109r'ahi]hg]hh]hm]UrefidUid41r(uhUjhq]r)hzX0.1.14r*r+}r,(hTX0.1.14r-hUj#ubahchubahchubahchubh)r.}r/(hTUhe}r0(hg]hh]hi]hj]hm]uhUhhq]r1h)r2}r3(hTUhe}r4(hg]hh]hi]hj]hm]uhUj.hq]r5h)r6}r7(hTUhe}r8(hj]r9Uid110r:ahi]hg]hh]hm]UrefidUid42r;uhUj2hq]r<hzX0.1.13r=r>}r?(hTX0.1.13r@hUj6ubahchubahchubahchubh)rA}rB(hTUhe}rC(hg]hh]hi]hj]hm]uhUhhq]rDh)rE}rF(hTUhe}rG(hg]hh]hi]hj]hm]uhUjAhq]rHh)rI}rJ(hTUhe}rK(hj]rLUid111rMahi]hg]hh]hm]UrefidUid43rNuhUjEhq]rOhzX0.1.12rPrQ}rR(hTX0.1.12rShUjIubahchubahchubahchubh)rT}rU(hTUhe}rV(hg]hh]hi]hj]hm]uhUhhq]rWh)rX}rY(hTUhe}rZ(hg]hh]hi]hj]hm]uhUjThq]r[h)r\}r](hTUhe}r^(hj]r_Uid112r`ahi]hg]hh]hm]UrefidUid44rauhUjXhq]rbhzX0.1.11rcrd}re(hTX0.1.11rfhUj\ubahchubahchubahchubh)rg}rh(hTUhe}ri(hg]hh]hi]hj]hm]uhUhhq]rjh)rk}rl(hTUhe}rm(hg]hh]hi]hj]hm]uhUjghq]rnh)ro}rp(hTUhe}rq(hj]rrUid113rsahi]hg]hh]hm]UrefidUid45rtuhUjkhq]ruhzX0.1.10rvrw}rx(hTX0.1.10ryhUjoubahchubahchubahchubh)rz}r{(hTUhe}r|(hg]hh]hi]hj]hm]uhUhhq]r}h)r~}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjzhq]rh)r}r(hTUhe}r(hj]rUid114rahi]hg]hh]hm]UrefidUid46ruhUj~hq]rhzX0.1.8rr}r(hTX0.1.8rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid115rahi]hg]hh]hm]UrefidUid47ruhUjhq]rhzX0.1.7rr}r(hTX0.1.7rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid116rahi]hg]hh]hm]UrefidUid48ruhUjhq]rhzX0.1.6rr}r(hTX0.1.6rhUjubahchubahchubahchubh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUhhq]rh)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(hj]rUid117rahi]hg]hh]hm]UrefidUid49ruhUjhq]rhzX0.1.0rr}r(hTX0.1.0rhUjubahchubahchubahchubeubaubhV)r}r(hTUhUh\h^hahchdhe}r(hg]hh]hi]hj]rhahm]rh auhoK hphhq]r(hs)r}r(hThhUjh^hahchwhe}r(hj]hi]hg]hh]hm]UrefidrhuhoK hphhq]rhzX2.0.3rr}r(hThhUjubaubcdocutils.nodes field_list r)r}r(hTUhUjh^hahcU field_listrhe}r(hg]hh]hi]hj]hm]uhoK hphhq]rcdocutils.nodes field r)r}r(hTUhUjh^hahcUfieldrhe}r(hg]hh]hi]hj]hm]uhoK hphhq]r(cdocutils.nodes field_name r)r}r(hTX release-daterhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX release-daterr}r(hTjhUjubahcU field_namerubcdocutils.nodes field_body r)r}r(hTX2010-08-27 12:00 P.M CEST he}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX2010-08-27 12:00 P.M CESTrhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoK hq]rhzX2010-08-27 12:00 P.M CESTrr}r(hTjhUjubaubahcU field_bodyrubeubaubhV)r}r(hTUhYKhUjh^hahchdhe}r(hg]rXfixesrahh]hi]hj]rhahm]uhoK hphhq]r(hs)r}r(hThhUjh^hahchwhe}r(hj]hi]hg]hh]hm]jhuhoK hphhq]rhzXFixesrr}r(hThhUjubaubh)r}r(hTUhUjh^hahchhe}r(Ubulletr X*hj]hi]hg]hh]hm]uhoKhphhq]r (h)r }r (hTXNceleryd: Properly handle connection errors happening while closing consumers. hUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXMceleryd: Properly handle connection errors happening while closing consumers.rhUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoKhq]rhzXMceleryd: Properly handle connection errors happening while closing consumers.rr}r(hTjhUjubaubaubh)r}r(hTXmceleryd: Events are now buffered if the connection is down, then sent when the connection is re-established. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXlceleryd: Events are now buffered if the connection is down, then sent when the connection is re-established.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKhq]rhzXlceleryd: Events are now buffered if the connection is down, then sent when the connection is re-established.r r!}r"(hTjhUjubaubaubh)r#}r$(hTXNo longer depends on the ``mailer`` package. This package had a namespace collision with ``django-mailer``, so its functionality was replaced. hUjh^hahchhe}r%(hg]hh]hi]hj]hm]uhoNhphhq]r&(h)r'}r((hTX,No longer depends on the ``mailer`` package.hUj#h^hahchhe}r)(hg]hh]hi]hj]hm]uhoKhq]r*(hzXNo longer depends on the r+r,}r-(hTXNo longer depends on the hUj'ubcdocutils.nodes literal r.)r/}r0(hTX ``mailer``he}r1(hg]hh]hi]hj]hm]uhUj'hq]r2hzXmailerr3r4}r5(hTUhUj/ubahcUliteralr6ubhzX package.r7r8}r9(hTX package.hUj'ubeubcdocutils.nodes block_quote r:)r;}r<(hTUhe}r=(hg]hh]hi]hj]hm]uhUj#hq]r>h)r?}r@(hTXaThis package had a namespace collision with ``django-mailer``, so its functionality was replaced.hUj;h^hahchhe}rA(hg]hh]hi]hj]hm]uhoKhq]rB(hzX,This package had a namespace collision with rCrD}rE(hTX,This package had a namespace collision with hUj?ubj.)rF}rG(hTX``django-mailer``he}rH(hg]hh]hi]hj]hm]uhUj?hq]rIhzX django-mailerrJrK}rL(hTUhUjFubahcj6ubhzX$, so its functionality was replaced.rMrN}rO(hTX$, so its functionality was replaced.hUj?ubeubahcU block_quoterPubeubh)rQ}rR(hTXRedis result backend: Documentation typos: Redis doesn't have database names, but database numbers. The default database is now 0. hUjh^hahchhe}rS(hg]hh]hi]hj]hm]uhoNhphhq]rTh)rU}rV(hTXRedis result backend: Documentation typos: Redis doesn't have database names, but database numbers. The default database is now 0.rWhUjQh^hahchhe}rX(hg]hh]hi]hj]hm]uhoKhq]rYhzXRedis result backend: Documentation typos: Redis doesn't have database names, but database numbers. The default database is now 0.rZr[}r\(hTjWhUjUubaubaubh)r]}r^(hTX:class:`~celery.task.control.inspect`: ``registered_tasks`` was requesting an invalid command because of a typo. See http://github.com/ask/celery/issues/issue/170 hUjh^hahchhe}r_(hg]hh]hi]hj]hm]uhoNhphhq]r`(h)ra}rb(hTXp:class:`~celery.task.control.inspect`: ``registered_tasks`` was requesting an invalid command because of a typo.hUj]h^hahchhe}rc(hg]hh]hi]hj]hm]uhoKhq]rd(csphinx.addnodes pending_xref re)rf}rg(hTX%:class:`~celery.task.control.inspect`rhhUjah^hahcU pending_xrefrihe}rj(UreftypeXclassUrefwarnrkU reftargetrlXcelery.task.control.inspectU refdomainXpyrmhj]hi]U refexplicithg]hh]hm]UrefdocrnX changelogroUpy:classrpNU py:modulerqNuhoKhq]rrj.)rs}rt(hTjhhe}ru(hg]hh]rv(UxrefrwjmXpy-classrxehi]hj]hm]uhUjfhq]ryhzXinspectrzr{}r|(hTUhUjsubahcj6ubaubhzX: r}r~}r(hTX: hUjaubj.)r}r(hTX``registered_tasks``he}r(hg]hh]hi]hj]hm]uhUjahq]rhzXregistered_tasksrr}r(hTUhUjubahcj6ubhzX5 was requesting an invalid command because of a typo.rr}r(hTX5 was requesting an invalid command because of a typo.hUjaubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUj]hq]rh)r}r(hTX1See http://github.com/ask/celery/issues/issue/170hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoK hq]r(hzXSee rr}r(hTXSee hUjubh)r}r(hTX-http://github.com/ask/celery/issues/issue/170rhe}r(Urefurijhj]hi]hg]hh]hm]uhUjhq]rhzX-http://github.com/ask/celery/issues/issue/170rr}r(hTUhUjubahchubeubahcjPubeubh)r}r(hTX``CELERY_ROUTES``: Values defined in the route should now have precedence over values defined in ``CELERY_QUEUES`` when merging the two. With the follow settings:: CELERY_QUEUES = {"cpubound": {"exchange": "cpubound", "routing_key": "cpubound"}} CELERY_ROUTES = {"tasks.add": {"queue": "cpubound", "routing_key": "tasks.add", "serializer": "json"}} The final routing options for ``tasks.add`` will become:: {"exchange": "cpubound", "routing_key": "tasks.add", "serializer": "json"} This was not the case before: the values in ``CELERY_QUEUES`` would take precedence. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX``CELERY_ROUTES``: Values defined in the route should now have precedence over values defined in ``CELERY_QUEUES`` when merging the two.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoK"hq]r(j.)r}r(hTX``CELERY_ROUTES``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_ROUTESrr}r(hTUhUjubahcj6ubhzXP: Values defined in the route should now have precedence over values defined in rr}r(hTXP: Values defined in the route should now have precedence over values defined in hUjubj.)r}r(hTX``CELERY_QUEUES``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_QUEUESrr}r(hTUhUjubahcj6ubhzX when merging the two.rr}r(hTX when merging the two.hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTXWith the follow settings::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoK%hq]rhzXWith the follow settings:rr}r(hTXWith the follow settings:hUjubaubcdocutils.nodes literal_block r)r}r(hTXCELERY_QUEUES = {"cpubound": {"exchange": "cpubound", "routing_key": "cpubound"}} CELERY_ROUTES = {"tasks.add": {"queue": "cpubound", "routing_key": "tasks.add", "serializer": "json"}}hUjhcU literal_blockrhe}r(U xml:spacerUpreserverhj]hi]hg]hh]hm]uhoK'hq]rhzXCELERY_QUEUES = {"cpubound": {"exchange": "cpubound", "routing_key": "cpubound"}} CELERY_ROUTES = {"tasks.add": {"queue": "cpubound", "routing_key": "tasks.add", "serializer": "json"}}rr}r(hTUhUjubaubh)r}r(hTX9The final routing options for ``tasks.add`` will become::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoK.hq]r(hzXThe final routing options for rr}r(hTXThe final routing options for hUjubj.)r}r(hTX ``tasks.add``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX tasks.addrr}r(hTUhUjubahcj6ubhzX will become:rr}r(hTX will become:hUjubeubj)r}r(hTXL{"exchange": "cpubound", "routing_key": "tasks.add", "serializer": "json"}hUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoK0hq]rhzXL{"exchange": "cpubound", "routing_key": "tasks.add", "serializer": "json"}rr}r(hTUhUjubaubh)r}r(hTXTThis was not the case before: the values in ``CELERY_QUEUES`` would take precedence.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoK4hq]r(hzX,This was not the case before: the values in rr}r(hTX,This was not the case before: the values in hUjubj.)r}r(hTX``CELERY_QUEUES``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_QUEUESrr}r(hTUhUjubahcj6ubhzX would take precedence.rr}r(hTX would take precedence.hUjubeubehcjPubeubh)r}r(hTXSWorker crashed if the value of ``CELERY_TASK_ERROR_WHITELIST`` was not an iterable hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXRWorker crashed if the value of ``CELERY_TASK_ERROR_WHITELIST`` was not an iterablehUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoK7hq]r(hzXWorker crashed if the value of rr}r(hTXWorker crashed if the value of hUjubj.)r}r(hTX``CELERY_TASK_ERROR_WHITELIST``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_TASK_ERROR_WHITELISTrr}r (hTUhUjubahcj6ubhzX was not an iterabler r }r (hTX was not an iterablehUjubeubaubh)r }r(hTXN:func:`~celery.execute.apply`: Make sure ``kwargs["task_id"]`` is always set. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXM:func:`~celery.execute.apply`: Make sure ``kwargs["task_id"]`` is always set.hUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoK:hq]r(je)r}r(hTX:func:`~celery.execute.apply`rhUjh^hahcjihe}r(UreftypeXfuncjkjlXcelery.execute.applyU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoK:hq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-funcrehi]hj]hm]uhUjhq]r hzXapply()r!r"}r#(hTUhUjubahcj6ubaubhzX : Make sure r$r%}r&(hTX : Make sure hUjubj.)r'}r((hTX``kwargs["task_id"]``he}r)(hg]hh]hi]hj]hm]uhUjhq]r*hzXkwargs["task_id"]r+r,}r-(hTUhUj'ubahcj6ubhzX is always set.r.r/}r0(hTX is always set.hUjubeubaubh)r1}r2(hTXm``AsyncResult.traceback``: Now returns ``None``, instead of raising :exc:`KeyError` if traceback is missing. hUjh^hahchhe}r3(hg]hh]hi]hj]hm]uhoNhphhq]r4h)r5}r6(hTXl``AsyncResult.traceback``: Now returns ``None``, instead of raising :exc:`KeyError` if traceback is missing.hUj1h^hahchhe}r7(hg]hh]hi]hj]hm]uhoK=hq]r8(j.)r9}r:(hTX``AsyncResult.traceback``he}r;(hg]hh]hi]hj]hm]uhUj5hq]r<hzXAsyncResult.tracebackr=r>}r?(hTUhUj9ubahcj6ubhzX: Now returns r@rA}rB(hTX: Now returns hUj5ubj.)rC}rD(hTX``None``he}rE(hg]hh]hi]hj]hm]uhUj5hq]rFhzXNonerGrH}rI(hTUhUjCubahcj6ubhzX, instead of raising rJrK}rL(hTX, instead of raising hUj5ubje)rM}rN(hTX:exc:`KeyError`rOhUj5h^hahcjihe}rP(UreftypeXexcjkjlXKeyErrorU refdomainXpyrQhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoK=hq]rRj.)rS}rT(hTjOhe}rU(hg]hh]rV(jwjQXpy-excrWehi]hj]hm]uhUjMhq]rXhzXKeyErrorrYrZ}r[(hTUhUjSubahcj6ubaubhzX if traceback is missing.r\r]}r^(hTX if traceback is missing.hUj5ubeubaubh)r_}r`(hTXg:class:`~celery.task.control.inspect`: Replies did not work correctly if no destination was specified. hUjh^hahchhe}ra(hg]hh]hi]hj]hm]uhoNhphhq]rbh)rc}rd(hTXf:class:`~celery.task.control.inspect`: Replies did not work correctly if no destination was specified.hUj_h^hahchhe}re(hg]hh]hi]hj]hm]uhoK@hq]rf(je)rg}rh(hTX%:class:`~celery.task.control.inspect`rihUjch^hahcjihe}rj(UreftypeXclassjkjlXcelery.task.control.inspectU refdomainXpyrkhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoK@hq]rlj.)rm}rn(hTjihe}ro(hg]hh]rp(jwjkXpy-classrqehi]hj]hm]uhUjghq]rrhzXinspectrsrt}ru(hTUhUjmubahcj6ubaubhzXA: Replies did not work correctly if no destination was specified.rvrw}rx(hTXA: Replies did not work correctly if no destination was specified.hUjcubeubaubh)ry}rz(hTX1Can now store result/metadata for custom states. hUjh^hahchhe}r{(hg]hh]hi]hj]hm]uhoNhphhq]r|h)r}}r~(hTX0Can now store result/metadata for custom states.rhUjyh^hahchhe}r(hg]hh]hi]hj]hm]uhoKChq]rhzX0Can now store result/metadata for custom states.rr}r(hTjhUj}ubaubaubh)r}r(hTXNceleryd: A warning is now emitted if the sending of task error e-mails fails. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXMceleryd: A warning is now emitted if the sending of task error e-mails fails.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKEhq]rhzXMceleryd: A warning is now emitted if the sending of task error e-mails fails.rr}r(hTjhUjubaubaubh)r}r(hTXceleryev: Curses monitor no longer crashes if the terminal window is resized. See http://github.com/ask/celery/issues/issue/160 hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXMceleryev: Curses monitor no longer crashes if the terminal window is resized.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKHhq]rhzXMceleryev: Curses monitor no longer crashes if the terminal window is resized.rr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX1See http://github.com/ask/celery/issues/issue/160hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKKhq]r(hzXSee rr}r(hTXSee hUjubh)r}r(hTX-http://github.com/ask/celery/issues/issue/160rhe}r(Urefurijhj]hi]hg]hh]hm]uhUjhq]rhzX-http://github.com/ask/celery/issues/issue/160rr}r(hTUhUjubahchubeubahcjPubeubh)r}r(hTXceleryd: On OS X it is not possible to run ``os.exec*`` in a process that is threaded. This breaks the SIGHUP restart handler, and is now disabled on OS X, emitting a warning instead. See http://github.com/ask/celery/issues/issue/152 hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXVceleryd: On OS X it is not possible to run ``os.exec*`` in a process that is threaded.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKMhq]r(hzX+celeryd: On OS X it is not possible to run rr}r(hTX+celeryd: On OS X it is not possible to run hUjubj.)r}r(hTX ``os.exec*``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXos.exec*rr}r(hTUhUjubahcj6ubhzX in a process that is threaded.rr}r(hTX in a process that is threaded.hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX`This breaks the SIGHUP restart handler, and is now disabled on OS X, emitting a warning instead.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKPhq]rhzX`This breaks the SIGHUP restart handler, and is now disabled on OS X, emitting a warning instead.rr}r(hTjhUjubaubahcjPubh)r}r(hTX1See http://github.com/ask/celery/issues/issue/152hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKShq]r(hzXSee rr}r(hTXSee hUjubh)r}r(hTX-http://github.com/ask/celery/issues/issue/152rhe}r(Urefurijhj]hi]hg]hh]hm]uhUjhq]rhzX-http://github.com/ask/celery/issues/issue/152rr}r(hTUhUjubahchubeubehcjPubeubh)r}r(hTX:mod:`celery.execute.trace`: Properly handle ``raise(str)``, which is still allowed in Python 2.4. See http://github.com/ask/celery/issues/issue/175 hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXb:mod:`celery.execute.trace`: Properly handle ``raise(str)``, which is still allowed in Python 2.4.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKUhq]r(je)r}r(hTX:mod:`celery.execute.trace`rhUjh^hahcjihe}r(UreftypeXmodjkjlXcelery.execute.traceU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoKUhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-modrehi]hj]hm]uhUjhq]rhzXcelery.execute.tracerr}r(hTUhUjubahcj6ubaubhzX: Properly handle rr}r(hTX: Properly handle hUjubj.)r}r(hTX``raise(str)``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX raise(str)rr}r(hTUhUjubahcj6ubhzX', which is still allowed in Python 2.4.rr}r(hTX', which is still allowed in Python 2.4.hUjubeubj:)r}r (hTUhe}r (hg]hh]hi]hj]hm]uhUjhq]r h)r }r (hTX1See http://github.com/ask/celery/issues/issue/175hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKXhq]r(hzXSee rr}r(hTXSee hUj ubh)r}r(hTX-http://github.com/ask/celery/issues/issue/175rhe}r(Urefurijhj]hi]hg]hh]hm]uhUj hq]rhzX-http://github.com/ask/celery/issues/issue/175rr}r(hTUhUjubahchubeubahcjPubeubh)r}r(hTXUsing urllib2 in a periodic task on OS X crashed because of the proxy autodetection used in OS X. This is now fixed by using a workaround. See http://github.com/ask/celery/issues/issue/143 hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r (hTXaUsing urllib2 in a periodic task on OS X crashed because of the proxy autodetection used in OS X.r!hUjh^hahchhe}r"(hg]hh]hi]hj]hm]uhoKZhq]r#hzXaUsing urllib2 in a periodic task on OS X crashed because of the proxy autodetection used in OS X.r$r%}r&(hTj!hUjubaubj:)r'}r((hTUhe}r)(hg]hh]hi]hj]hm]uhUjhq]r*h)r+}r,(hTXZThis is now fixed by using a workaround. See http://github.com/ask/celery/issues/issue/143hUj'h^hahchhe}r-(hg]hh]hi]hj]hm]uhoK]hq]r.(hzX-This is now fixed by using a workaround. See r/r0}r1(hTX-This is now fixed by using a workaround. See hUj+ubh)r2}r3(hTX-http://github.com/ask/celery/issues/issue/143r4he}r5(Urefurij4hj]hi]hg]hh]hm]uhUj+hq]r6hzX-http://github.com/ask/celery/issues/issue/143r7r8}r9(hTUhUj2ubahchubeubahcjPubeubh)r:}r;(hTXpDebian init scripts: Commands should not run in a subshell See http://github.com/ask/celery/issues/issue/163 hUjh^hahchhe}r<(hg]hh]hi]hj]hm]uhoNhphhq]r=(h)r>}r?(hTX:Debian init scripts: Commands should not run in a subshellr@hUj:h^hahchhe}rA(hg]hh]hi]hj]hm]uhoK`hq]rBhzX:Debian init scripts: Commands should not run in a subshellrCrD}rE(hTj@hUj>ubaubj:)rF}rG(hTUhe}rH(hg]hh]hi]hj]hm]uhUj:hq]rIh)rJ}rK(hTX1See http://github.com/ask/celery/issues/issue/163hUjFh^hahchhe}rL(hg]hh]hi]hj]hm]uhoKbhq]rM(hzXSee rNrO}rP(hTXSee hUjJubh)rQ}rR(hTX-http://github.com/ask/celery/issues/issue/163rShe}rT(UrefurijShj]hi]hg]hh]hm]uhUjJhq]rUhzX-http://github.com/ask/celery/issues/issue/163rVrW}rX(hTUhUjQubahchubeubahcjPubeubh)rY}rZ(hTXpDebian init scripts: Use abspath for celeryd to allow stat See http://github.com/ask/celery/issues/issue/162 hUjh^hahchhe}r[(hg]hh]hi]hj]hm]uhoNhphhq]r\(h)r]}r^(hTX:Debian init scripts: Use abspath for celeryd to allow statr_hUjYh^hahchhe}r`(hg]hh]hi]hj]hm]uhoKdhq]rahzX:Debian init scripts: Use abspath for celeryd to allow statrbrc}rd(hTj_hUj]ubaubj:)re}rf(hTUhe}rg(hg]hh]hi]hj]hm]uhUjYhq]rhh)ri}rj(hTX1See http://github.com/ask/celery/issues/issue/162hUjeh^hahchhe}rk(hg]hh]hi]hj]hm]uhoKfhq]rl(hzXSee rmrn}ro(hTXSee hUjiubh)rp}rq(hTX-http://github.com/ask/celery/issues/issue/162rrhe}rs(Urefurijrhj]hi]hg]hh]hm]uhUjihq]rthzX-http://github.com/ask/celery/issues/issue/162rurv}rw(hTUhUjpubahchubeubahcjPubeubeubeubhV)rx}ry(hTUhYKhUjh^hahchdhe}rz(hg]r{X documentationr|ahh]hi]hj]r}hahm]uhoKihphhq]r~(hs)r}r(hThhUjxh^hahchwhe}r(hj]hi]hg]hh]hm]jhuhoKihphhq]rhzX Documentationrr}r(hThhUjubaubh)r}r(hTUhUjxh^hahchhe}r(j X*hj]hi]hg]hh]hm]uhoKkhphhq]r(h)r}r(hTXggetting-started/broker-installation: Fixed typo ``set_permissions ""`` -> ``set_permissions ".*"``. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX/getting-started/broker-installation: Fixed typorhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKkhq]rhzX/getting-started/broker-installation: Fixed typorr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX3``set_permissions ""`` -> ``set_permissions ".*"``.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKmhq]r(j.)r}r(hTX``set_permissions ""``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXset_permissions ""rr}r(hTUhUjubahcj6ubhzX -> rr}r(hTX -> hUjubj.)r}r(hTX``set_permissions ".*"``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXset_permissions ".*"rr}r(hTUhUjubahcj6ubhzX.r}r(hTX.hUjubeubahcjPubeubh)r}r(hTXnTasks Userguide: Added section on database transactions. See http://github.com/ask/celery/issues/issue/169 hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX8Tasks Userguide: Added section on database transactions.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKohq]rhzX8Tasks Userguide: Added section on database transactions.rr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX1See http://github.com/ask/celery/issues/issue/169hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKqhq]r(hzXSee rr}r(hTXSee hUjubh)r}r(hTX-http://github.com/ask/celery/issues/issue/169rhe}r(Urefurijhj]hi]hg]hh]hm]uhUjhq]rhzX-http://github.com/ask/celery/issues/issue/169rr}r(hTUhUjubahchubeubahcjPubeubh)r}r(hTXvRouting Userguide: Fixed typo ``"feed": -> {"queue": "feeds"}``. See http://github.com/ask/celery/issues/issue/169 hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX@Routing Userguide: Fixed typo ``"feed": -> {"queue": "feeds"}``.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKshq]r(hzXRouting Userguide: Fixed typo rr}r(hTXRouting Userguide: Fixed typo hUjubj.)r}r(hTX!``"feed": -> {"queue": "feeds"}``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX"feed": -> {"queue": "feeds"}rr}r(hTUhUjubahcj6ubhzX.r}r(hTX.hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX1See http://github.com/ask/celery/issues/issue/169hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKuhq]r(hzXSee rr}r(hTXSee hUjubh)r}r(hTX-http://github.com/ask/celery/issues/issue/169rhe}r(Urefurijhj]hi]hg]hh]hm]uhUjhq]rhzX-http://github.com/ask/celery/issues/issue/169rr}r(hTUhUjubahchubeubahcjPubeubh)r}r(hTXlDocumented the default values for the ``CELERYD_CONCURRENCY`` and ``CELERYD_PREFETCH_MULTIPLIER`` settings. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXkDocumented the default values for the ``CELERYD_CONCURRENCY`` and ``CELERYD_PREFETCH_MULTIPLIER`` settings.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoKwhq]r(hzX&Documented the default values for the rr }r (hTX&Documented the default values for the hUjubj.)r }r (hTX``CELERYD_CONCURRENCY``he}r (hg]hh]hi]hj]hm]uhUjhq]r hzXCELERYD_CONCURRENCYr r }r (hTUhUj ubahcj6ubhzX and r r }r (hTX and hUjubj.)r }r (hTX``CELERYD_PREFETCH_MULTIPLIER``he}r (hg]hh]hi]hj]hm]uhUjhq]r hzXCELERYD_PREFETCH_MULTIPLIERr r }r (hTUhUj ubahcj6ubhzX settings.r r }r (hTX settings.hUjubeubaubh)r }r (hTX4Tasks Userguide: Fixed typos in the subtask example hUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTX3Tasks Userguide: Fixed typos in the subtask exampler hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKzhq]r hzX3Tasks Userguide: Fixed typos in the subtask exampler r }r! (hTj hUj ubaubaubh)r" }r# (hTX0celery.signals: Documented worker_process_init. hUjh^hahchhe}r$ (hg]hh]hi]hj]hm]uhoNhphhq]r% h)r& }r' (hTX/celery.signals: Documented worker_process_init.r( hUj" h^hahchhe}r) (hg]hh]hi]hj]hm]uhoK|hq]r* hzX/celery.signals: Documented worker_process_init.r+ r, }r- (hTj( hUj& ubaubaubh)r. }r/ (hTX[Daemonization cookbook: Need to export DJANGO_SETTINGS_MODULE in ``/etc/default/celeryd``. hUjh^hahchhe}r0 (hg]hh]hi]hj]hm]uhoNhphhq]r1 h)r2 }r3 (hTXZDaemonization cookbook: Need to export DJANGO_SETTINGS_MODULE in ``/etc/default/celeryd``.hUj. h^hahchhe}r4 (hg]hh]hi]hj]hm]uhoK~hq]r5 (hzXADaemonization cookbook: Need to export DJANGO_SETTINGS_MODULE in r6 r7 }r8 (hTXADaemonization cookbook: Need to export DJANGO_SETTINGS_MODULE in hUj2 ubj.)r9 }r: (hTX``/etc/default/celeryd``he}r; (hg]hh]hi]hj]hm]uhUj2 hq]r< hzX/etc/default/celerydr= r> }r? (hTUhUj9 ubahcj6ubhzX.r@ }rA (hTX.hUj2 ubeubaubh)rB }rC (hTX)Added some more FAQs from stack overflow hUjh^hahchhe}rD (hg]hh]hi]hj]hm]uhoNhphhq]rE h)rF }rG (hTX(Added some more FAQs from stack overflowrH hUjB h^hahchhe}rI (hg]hh]hi]hj]hm]uhoKhq]rJ hzX(Added some more FAQs from stack overflowrK rL }rM (hTjH hUjF ubaubaubh)rN }rO (hTXDaemonization cookbook: Fixed typo ``CELERYD_LOGFILE/CELERYD_PIDFILE`` to ``CELERYD_LOG_FILE`` / ``CELERYD_PID_FILE`` Also added troubleshooting section for the init scripts. hUjh^hahchhe}rP (hg]hh]hi]hj]hm]uhoNhphhq]rQ (h)rR }rS (hTXFDaemonization cookbook: Fixed typo ``CELERYD_LOGFILE/CELERYD_PIDFILE``hUjN h^hahchhe}rT (hg]hh]hi]hj]hm]uhoKhq]rU (hzX#Daemonization cookbook: Fixed typo rV rW }rX (hTX#Daemonization cookbook: Fixed typo hUjR ubj.)rY }rZ (hTX#``CELERYD_LOGFILE/CELERYD_PIDFILE``he}r[ (hg]hh]hi]hj]hm]uhUjR hq]r\ hzXCELERYD_LOGFILE/CELERYD_PIDFILEr] r^ }r_ (hTUhUjY ubahcj6ubeubj:)r` }ra (hTUhe}rb (hg]hh]hi]hj]hm]uhUjN hq]rc (h)rd }re (hTX.to ``CELERYD_LOG_FILE`` / ``CELERYD_PID_FILE``hUj` h^hahchhe}rf (hg]hh]hi]hj]hm]uhoKhq]rg (hzXto rh ri }rj (hTXto hUjd ubj.)rk }rl (hTX``CELERYD_LOG_FILE``he}rm (hg]hh]hi]hj]hm]uhUjd hq]rn hzXCELERYD_LOG_FILEro rp }rq (hTUhUjk ubahcj6ubhzX / rr rs }rt (hTX / hUjd ubj.)ru }rv (hTX``CELERYD_PID_FILE``he}rw (hg]hh]hi]hj]hm]uhUjd hq]rx hzXCELERYD_PID_FILEry rz }r{ (hTUhUju ubahcj6ubeubh)r| }r} (hTX8Also added troubleshooting section for the init scripts.r~ hUj` h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzX8Also added troubleshooting section for the init scripts.r r }r (hTj~ hUj| ubaubehcjPubeubeubeubeubhV)r }r (hTUhUh\h^hahchdhe}r (hg]hh]hi]hj]r hahm]r h auhoKhphhq]r (hs)r }r (hThhUj h^hahchwhe}r (hj]hi]hg]hh]hm]jhuhoKhphhq]r hzX2.0.2r r }r (hThhUj ubaubj)r }r (hTUhUj h^hahcjhe}r (hg]hh]hi]hj]hm]uhoKhphhq]r j)r }r (hTUhUj h^hahcjhe}r (hg]hh]hi]hj]hm]uhoKhphhq]r (j)r }r (hTX release-dater he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX release-dater r }r (hTj hUj ubahcjubj)r }r (hTX2010-07-22 11:31 A.M CEST he}r (hg]hh]hi]hj]hm]uhUj hq]r h)r }r (hTX2010-07-22 11:31 A.M CESTr hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzX2010-07-22 11:31 A.M CESTr r }r (hTj hUj ubaubahcjubeubaubh)r }r (hTUhUj h^hahchhe}r (j X*hj]hi]hg]hh]hm]uhoKhphhq]r (h)r }r (hTXRoutes: When using the dict route syntax, the exchange for a task could dissapear making the task unroutable. See http://github.com/ask/celery/issues/issue/158 hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTXmRoutes: When using the dict route syntax, the exchange for a task could dissapear making the task unroutable.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzXmRoutes: When using the dict route syntax, the exchange for a task could dissapear making the task unroutable.r r }r (hTj hUj ubaubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r h)r }r (hTX1See http://github.com/ask/celery/issues/issue/158hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzXSee r r }r (hTXSee hUj ubh)r }r (hTX-http://github.com/ask/celery/issues/issue/158r he}r (Urefurij hj]hi]hg]hh]hm]uhUj hq]r hzX-http://github.com/ask/celery/issues/issue/158r r }r (hTUhUj ubahchubeubahcjPubeubh)r }r (hTX%Test suite now passing on Python 2.4 hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTX$Test suite now passing on Python 2.4r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzX$Test suite now passing on Python 2.4r r }r (hTj hUj ubaubaubh)r }r (hTXNo longer have to type PYTHONPATH=. to use celeryconfig in current dir. This is accomplished by the default loader ensuring that the current directory is in ``sys.path`` when loading the config module. ``sys.path`` is reset to its original state after loading. Adding cwd to ``sys.path`` without the user knowing may be a security issue, as this means someone can drop a Python module in the users directory that executes arbitrary commands. This was the original reason not to do this, but if done *only when loading the config module*, this means that the behvavior will only apply to the modules imported in the config module, which I think is a good compromise (certainly better than just explictly setting PYTHONPATH=. anyway) hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTXGNo longer have to type PYTHONPATH=. to use celeryconfig in current dir.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzXGNo longer have to type PYTHONPATH=. to use celeryconfig in current dir.r r }r (hTj hUj ubaubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r (h)r }r (hTXThis is accomplished by the default loader ensuring that the current directory is in ``sys.path`` when loading the config module. ``sys.path`` is reset to its original state after loading.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzXUThis is accomplished by the default loader ensuring that the current directory is in r r }r (hTXUThis is accomplished by the default loader ensuring that the current directory is in hUj ubj.)r }r (hTX ``sys.path``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzXsys.pathr r }r (hTUhUj ubahcj6ubhzX! when loading the config module. r r }r (hTX! when loading the config module. hUj ubj.)r }r (hTX ``sys.path``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzXsys.pathr r }r (hTUhUj ubahcj6ubhzX. is reset to its original state after loading.r r }r (hTX. is reset to its original state after loading.hUj ubeubh)r }r (hTXAdding cwd to ``sys.path`` without the user knowing may be a security issue, as this means someone can drop a Python module in the users directory that executes arbitrary commands. This was the original reason not to do this, but if done *only when loading the config module*, this means that the behvavior will only apply to the modules imported in the config module, which I think is a good compromise (certainly better than just explictly setting PYTHONPATH=. anyway)hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzXAdding cwd to r r }r (hTXAdding cwd to hUj ubj.)r }r (hTX ``sys.path``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzXsys.pathr r }r (hTUhUj ubahcj6ubhzX without the user knowing may be a security issue, as this means someone can drop a Python module in the users directory that executes arbitrary commands. This was the original reason not to do this, but if done r r }r (hTX without the user knowing may be a security issue, as this means someone can drop a Python module in the users directory that executes arbitrary commands. This was the original reason not to do this, but if done hUj ubcdocutils.nodes emphasis r )r }r (hTX%*only when loading the config module*he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX#only when loading the config moduler r }r (hTUhUj ubahcUemphasisr ubhzX, this means that the behvavior will only apply to the modules imported in the config module, which I think is a good compromise (certainly better than just explictly setting PYTHONPATH=. anyway)r! r" }r# (hTX, this means that the behvavior will only apply to the modules imported in the config module, which I think is a good compromise (certainly better than just explictly setting PYTHONPATH=. anyway)hUj ubeubehcjPubeubh)r$ }r% (hTX&Experimental Cassandra backend added. hUj h^hahchhe}r& (hg]hh]hi]hj]hm]uhoNhphhq]r' h)r( }r) (hTX%Experimental Cassandra backend added.r* hUj$ h^hahchhe}r+ (hg]hh]hi]hj]hm]uhoKhq]r, hzX%Experimental Cassandra backend added.r- r. }r/ (hTj* hUj( ubaubaubh)r0 }r1 (hTXceleryd: SIGHUP handler accidentally propagated to worker pool processes. In combination with 7a7c44e39344789f11b5346e9cc8340f5fe4846c this would make each child process start a new celeryd when the terminal window was closed :/ hUj h^hahchhe}r2 (hg]hh]hi]hj]hm]uhoNhphhq]r3 (h)r4 }r5 (hTXIceleryd: SIGHUP handler accidentally propagated to worker pool processes.r6 hUj0 h^hahchhe}r7 (hg]hh]hi]hj]hm]uhoKhq]r8 hzXIceleryd: SIGHUP handler accidentally propagated to worker pool processes.r9 r: }r; (hTj6 hUj4 ubaubj:)r< }r= (hTUhe}r> (hg]hh]hi]hj]hm]uhUj0 hq]r? h)r@ }rA (hTXIn combination with 7a7c44e39344789f11b5346e9cc8340f5fe4846c this would make each child process start a new celeryd when the terminal window was closed :/rB hUj< h^hahchhe}rC (hg]hh]hi]hj]hm]uhoKhq]rD hzXIn combination with 7a7c44e39344789f11b5346e9cc8340f5fe4846c this would make each child process start a new celeryd when the terminal window was closed :/rE rF }rG (hTjB hUj@ ubaubahcjPubeubh)rH }rI (hTXceleryd: Do not install SIGHUP handler if running from a terminal. This fixes the problem where celeryd is launched in the background when closing the terminal. hUj h^hahchhe}rJ (hg]hh]hi]hj]hm]uhoNhphhq]rK (h)rL }rM (hTXBceleryd: Do not install SIGHUP handler if running from a terminal.rN hUjH h^hahchhe}rO (hg]hh]hi]hj]hm]uhoKhq]rP hzXBceleryd: Do not install SIGHUP handler if running from a terminal.rQ rR }rS (hTjN hUjL ubaubj:)rT }rU (hTUhe}rV (hg]hh]hi]hj]hm]uhUjH hq]rW h)rX }rY (hTX]This fixes the problem where celeryd is launched in the background when closing the terminal.rZ hUjT h^hahchhe}r[ (hg]hh]hi]hj]hm]uhoKhq]r\ hzX]This fixes the problem where celeryd is launched in the background when closing the terminal.r] r^ }r_ (hTjZ hUjX ubaubahcjPubeubh)r` }ra (hTX]celeryd: Now joins threads at shutdown. See http://github.com/ask/celery/issues/issue/152 hUj h^hahchhe}rb (hg]hh]hi]hj]hm]uhoNhphhq]rc (h)rd }re (hTX'celeryd: Now joins threads at shutdown.rf hUj` h^hahchhe}rg (hg]hh]hi]hj]hm]uhoKhq]rh hzX'celeryd: Now joins threads at shutdown.ri rj }rk (hTjf hUjd ubaubj:)rl }rm (hTUhe}rn (hg]hh]hi]hj]hm]uhUj` hq]ro h)rp }rq (hTX1See http://github.com/ask/celery/issues/issue/152hUjl h^hahchhe}rr (hg]hh]hi]hj]hm]uhoKhq]rs (hzXSee rt ru }rv (hTXSee hUjp ubh)rw }rx (hTX-http://github.com/ask/celery/issues/issue/152ry he}rz (Urefurijy hj]hi]hg]hh]hm]uhUjp hq]r{ hzX-http://github.com/ask/celery/issues/issue/152r| r} }r~ (hTUhUjw ubahchubeubahcjPubeubh)r }r (hTXTest teardown: Don't use atexit but nose's ``teardown()`` functionality instead. See http://github.com/ask/celery/issues/issue/154 hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTXPTest teardown: Don't use atexit but nose's ``teardown()`` functionality instead.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzX+Test teardown: Don't use atexit but nose's r r }r (hTX+Test teardown: Don't use atexit but nose's hUj ubj.)r }r (hTX``teardown()``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX teardown()r r }r (hTUhUj ubahcj6ubhzX functionality instead.r r }r (hTX functionality instead.hUj ubeubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r h)r }r (hTX1See http://github.com/ask/celery/issues/issue/154hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzXSee r r }r (hTXSee hUj ubh)r }r (hTX-http://github.com/ask/celery/issues/issue/154r he}r (Urefurij hj]hi]hg]hh]hm]uhUj hq]r hzX-http://github.com/ask/celery/issues/issue/154r r }r (hTUhUj ubahchubeubahcjPubeubh)r }r (hTX:Debian init script for celeryd: Stop now works correctly. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTX9Debian init script for celeryd: Stop now works correctly.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzX9Debian init script for celeryd: Stop now works correctly.r r }r (hTj hUj ubaubaubh)r }r (hTX>Task logger: ``warn`` method added (synonym for ``warning``) hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTX=Task logger: ``warn`` method added (synonym for ``warning``)hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzXTask logger: r r }r (hTXTask logger: hUj ubj.)r }r (hTX``warn``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzXwarnr r }r (hTUhUj ubahcj6ubhzX method added (synonym for r r }r (hTX method added (synonym for hUj ubj.)r }r (hTX ``warning``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzXwarningr r }r (hTUhUj ubahcj6ubhzX)r }r (hTX)hUj ubeubaubh)r }r (hTXCan now define a whitelist of errors to send error e-mails for. Example:: CELERY_TASK_ERROR_WHITELIST = ('myapp.MalformedInputError') See http://github.com/ask/celery/issues/issue/153 hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTX?Can now define a whitelist of errors to send error e-mails for.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzX?Can now define a whitelist of errors to send error e-mails for.r r }r (hTj hUj ubaubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r (h)r }r (hTX Example::hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzXExample:r r }r (hTXExample:hUj ubaubj)r }r (hTX;CELERY_TASK_ERROR_WHITELIST = ('myapp.MalformedInputError')hUj hcjhe}r (jjhj]hi]hg]hh]hm]uhoKhq]r hzX;CELERY_TASK_ERROR_WHITELIST = ('myapp.MalformedInputError')r r }r (hTUhUj ubaubh)r }r (hTX1See http://github.com/ask/celery/issues/issue/153hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzXSee r r }r (hTXSee hUj ubh)r }r (hTX-http://github.com/ask/celery/issues/issue/153r he}r (Urefurij hj]hi]hg]hh]hm]uhUj hq]r hzX-http://github.com/ask/celery/issues/issue/153r r }r (hTUhUj ubahchubeubehcjPubeubh)r }r (hTXYceleryd: Now handles overflow exceptions in ``time.mktime`` while parsing the ETA field. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXXceleryd: Now handles overflow exceptions in ``time.mktime`` while parsing the ETA field.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzX,celeryd: Now handles overflow exceptions in r r }r (hTX,celeryd: Now handles overflow exceptions in hUj ubj.)r }r (hTX``time.mktime``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX time.mktimer r }r (hTUhUj ubahcj6ubhzX while parsing the ETA field.r r }r (hTX while parsing the ETA field.hUj ubeubaubh)r }r (hTX\LoggerWrapper: Try to detect loggers logging back to stderr/stdout making an infinite loop. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTX[LoggerWrapper: Try to detect loggers logging back to stderr/stdout making an infinite loop.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzX[LoggerWrapper: Try to detect loggers logging back to stderr/stdout making an infinite loop.r r }r (hTj hUj ubaubaubh)r }r (hTXAdded :class:`celery.task.control.inspect`: Inspects a running worker. Examples:: # Inspect a single worker >>> i = inspect("myworker.example.com") # Inspect several workers >>> i = inspect(["myworker.example.com", "myworker2.example.com"]) # Inspect all workers consuming on this vhost. >>> i = inspect() ### Methods # Get currently executing tasks >>> i.active() # Get currently reserved tasks >>> i.reserved() # Get the current eta schedule >>> i.scheduled() # Worker statistics and info >>> i.stats() # List of currently revoked tasks >>> i.revoked() # List of registered tasks >>> i.registered_tasks() hUj h^hahchhe}r! (hg]hh]hi]hj]hm]uhoNhphhq]r" (h)r# }r$ (hTXFAdded :class:`celery.task.control.inspect`: Inspects a running worker.hUj h^hahchhe}r% (hg]hh]hi]hj]hm]uhoKhq]r& (hzXAdded r' r( }r) (hTXAdded hUj# ubje)r* }r+ (hTX$:class:`celery.task.control.inspect`r, hUj# h^hahcjihe}r- (UreftypeXclassjkjlXcelery.task.control.inspectU refdomainXpyr. hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoKhq]r/ j.)r0 }r1 (hTj, he}r2 (hg]hh]r3 (jwj. Xpy-classr4 ehi]hj]hm]uhUj* hq]r5 hzXcelery.task.control.inspectr6 r7 }r8 (hTUhUj0 ubahcj6ubaubhzX: Inspects a running worker.r9 r: }r; (hTX: Inspects a running worker.hUj# ubeubj:)r< }r= (hTUhe}r> (hg]hh]hi]hj]hm]uhUj hq]r? (h)r@ }rA (hTX Examples::hUj< h^hahchhe}rB (hg]hh]hi]hj]hm]uhoKhq]rC hzX Examples:rD rE }rF (hTX Examples:hUj@ ubaubj)rG }rH (hTX# Inspect a single worker >>> i = inspect("myworker.example.com") # Inspect several workers >>> i = inspect(["myworker.example.com", "myworker2.example.com"]) # Inspect all workers consuming on this vhost. >>> i = inspect() ### Methods # Get currently executing tasks >>> i.active() # Get currently reserved tasks >>> i.reserved() # Get the current eta schedule >>> i.scheduled() # Worker statistics and info >>> i.stats() # List of currently revoked tasks >>> i.revoked() # List of registered tasks >>> i.registered_tasks()hUj< hcjhe}rI (jjhj]hi]hg]hh]hm]uhoKhq]rJ hzX# Inspect a single worker >>> i = inspect("myworker.example.com") # Inspect several workers >>> i = inspect(["myworker.example.com", "myworker2.example.com"]) # Inspect all workers consuming on this vhost. >>> i = inspect() ### Methods # Get currently executing tasks >>> i.active() # Get currently reserved tasks >>> i.reserved() # Get the current eta schedule >>> i.scheduled() # Worker statistics and info >>> i.stats() # List of currently revoked tasks >>> i.revoked() # List of registered tasks >>> i.registered_tasks()rK rL }rM (hTUhUjG ubaubehcjPubeubh)rN }rO (hTX;Remote control commands ``dump_active``/``dump_reserved``/``dump_schedule`` now replies with detailed task requests. Containing the original arguments and fields of the task requested. In addition the remote control command ``set_loglevel`` has been added, this only changes the loglevel for the main process. hUj h^hahchhe}rP (hg]hh]hi]hj]hm]uhoNhphhq]rQ (h)rR }rS (hTXtRemote control commands ``dump_active``/``dump_reserved``/``dump_schedule`` now replies with detailed task requests.hUjN h^hahchhe}rT (hg]hh]hi]hj]hm]uhoKhq]rU (hzXRemote control commands rV rW }rX (hTXRemote control commands hUjR ubj.)rY }rZ (hTX``dump_active``he}r[ (hg]hh]hi]hj]hm]uhUjR hq]r\ hzX dump_activer] r^ }r_ (hTUhUjY ubahcj6ubhzX/r` }ra (hTX/hUjR ubj.)rb }rc (hTX``dump_reserved``he}rd (hg]hh]hi]hj]hm]uhUjR hq]re hzX dump_reservedrf rg }rh (hTUhUjb ubahcj6ubhzX/ri }rj (hTX/hUjR ubj.)rk }rl (hTX``dump_schedule``he}rm (hg]hh]hi]hj]hm]uhUjR hq]rn hzX dump_schedulero rp }rq (hTUhUjk ubahcj6ubhzX) now replies with detailed task requests.rr rs }rt (hTX) now replies with detailed task requests.hUjR ubeubj:)ru }rv (hTUhe}rw (hg]hh]hi]hj]hm]uhUjN hq]rx (h)ry }rz (hTXCContaining the original arguments and fields of the task requested.r{ hUju h^hahchhe}r| (hg]hh]hi]hj]hm]uhoKhq]r} hzXCContaining the original arguments and fields of the task requested.r~ r }r (hTj{ hUjy ubaubh)r }r (hTX|In addition the remote control command ``set_loglevel`` has been added, this only changes the loglevel for the main process.hUju h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (hzX'In addition the remote control command r r }r (hTX'In addition the remote control command hUj ubj.)r }r (hTX``set_loglevel``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX set_loglevelr r }r (hTUhUj ubahcj6ubhzXE has been added, this only changes the loglevel for the main process.r r }r (hTXE has been added, this only changes the loglevel for the main process.hUj ubeubehcjPubeubh)r }r (hTXjWorker control command execution now catches errors and returns their string representation in the reply. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXiWorker control command execution now catches errors and returns their string representation in the reply.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzXiWorker control command execution now catches errors and returns their string representation in the reply.r r }r (hTj hUj ubaubaubh)r }r (hTXFunctional test suite added :mod:`celery.tests.functional.case` contains utilities to start and stop an embedded celeryd process, for use in functional testing. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTXFunctional test suite addedr hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzXFunctional test suite addedr r }r (hTj hUj ubaubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r h)r }r (hTX:mod:`celery.tests.functional.case` contains utilities to start and stop an embedded celeryd process, for use in functional testing.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r (je)r }r (hTX#:mod:`celery.tests.functional.case`r hUj h^hahcjihe}r (UreftypeXmodjkjlXcelery.tests.functional.caseU refdomainXpyr hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoKhq]r j.)r }r (hTj he}r (hg]hh]r (jwj Xpy-modr ehi]hj]hm]uhUj hq]r hzXcelery.tests.functional.caser r }r (hTUhUj ubahcj6ubaubhzXa contains utilities to start and stop an embedded celeryd process, for use in functional testing.r r }r (hTXa contains utilities to start and stop an embedded celeryd process, for use in functional testing.hUj ubeubahcjPubeubeubeubhV)r }r (hTUhUh\h^hahchdhe}r (hg]hh]hi]hj]r hahm]r h auhoKhphhq]r (hs)r }r (hThhUj h^hahchwhe}r (hj]hi]hg]hh]hm]jhuhoKhphhq]r hzX2.0.1r r }r (hThhUj ubaubj)r }r (hTUhUj h^hahcjhe}r (hg]hh]hi]hj]hm]uhoKhphhq]r j)r }r (hTUhUj h^hahcjhe}r (hg]hh]hi]hj]hm]uhoKhphhq]r (j)r }r (hTX release-dater he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX release-dater r }r (hTj hUj ubahcjubj)r }r (hTX2010-07-09 03:02 P.M CEST he}r (hg]hh]hi]hj]hm]uhUj hq]r h)r }r (hTX2010-07-09 03:02 P.M CESTr hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzX2010-07-09 03:02 P.M CESTr r }r (hTj hUj ubaubahcjubeubaubh)r }r (hTUhUj h^hahchhe}r (j X*hj]hi]hg]hh]hm]uhoKhphhq]r (h)r }r (hTXomultiprocessing.pool: Now handles encoding errors, so that pickling errors doesn't crash the worker processes. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXnmultiprocessing.pool: Now handles encoding errors, so that pickling errors doesn't crash the worker processes.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoKhq]r hzXnmultiprocessing.pool: Now handles encoding errors, so that pickling errors doesn't crash the worker processes.r r }r (hTj hUj ubaubaubh)r }r (hTX&The remote control command replies was not working with RabbitMQ 1.8.0's stricter equivalence checks. If you've already hit this problem you may have to delete the declaration:: $ camqadm exchange.delete celerycrq or:: $ python manage.py camqadm exchange.delete celerycrq hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTXeThe remote control command replies was not working with RabbitMQ 1.8.0's stricter equivalence checks.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r hzXeThe remote control command replies was not working with RabbitMQ 1.8.0's stricter equivalence checks.r r }r (hTj hUj ubaubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r (h)r }r (hTXKIf you've already hit this problem you may have to delete the declaration::hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r hzXJIf you've already hit this problem you may have to delete the declaration:r r }r (hTXJIf you've already hit this problem you may have to delete the declaration:hUj ubaubj)r }r (hTX#$ camqadm exchange.delete celerycrqhUj hcjhe}r (jjhj]hi]hg]hh]hm]uhoMhq]r hzX#$ camqadm exchange.delete celerycrqr r }r (hTUhUj ubaubh)r }r (hTXor::hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM hq]r hzXor:r r }r! (hTXor:hUj ubaubj)r" }r# (hTX4$ python manage.py camqadm exchange.delete celerycrqhUj hcjhe}r$ (jjhj]hi]hg]hh]hm]uhoM hq]r% hzX4$ python manage.py camqadm exchange.delete celerycrqr& r' }r( (hTUhUj" ubaubehcjPubeubh)r) }r* (hTXA bug sneaked in the ETA scheduler that made it only able to execute one task per second(!) The scheduler sleeps between iterations so it doesn't consume too much CPU. It keeps a list of the scheduled items sorted by time, at each iteration it sleeps for the remaining time of the item with the nearest deadline. If there are no eta tasks it will sleep for a minimum amount of time, one second by default. A bug sneaked in here, making it sleep for one second for every task that was scheduled. This has been fixed, so now it should move tasks like hot knife through butter. In addition a new setting has been added to control the minimum sleep interval; ``CELERYD_ETA_SCHEDULER_PRECISION``. A good value for this would be a float between 0 and 1, depending on the needed precision. A value of 0.8 means that when the ETA of a task is met, it will take at most 0.8 seconds for the task to be moved to the ready queue. hUj h^hahchhe}r+ (hg]hh]hi]hj]hm]uhoNhphhq]r, (h)r- }r. (hTX[A bug sneaked in the ETA scheduler that made it only able to execute one task per second(!)r/ hUj) h^hahchhe}r0 (hg]hh]hi]hj]hm]uhoMhq]r1 hzX[A bug sneaked in the ETA scheduler that made it only able to execute one task per second(!)r2 r3 }r4 (hTj/ hUj- ubaubj:)r5 }r6 (hTUhe}r7 (hg]hh]hi]hj]hm]uhUj) hq]r8 (h)r9 }r: (hTX9The scheduler sleeps between iterations so it doesn't consume too much CPU. It keeps a list of the scheduled items sorted by time, at each iteration it sleeps for the remaining time of the item with the nearest deadline. If there are no eta tasks it will sleep for a minimum amount of time, one second by default.r; hUj5 h^hahchhe}r< (hg]hh]hi]hj]hm]uhoMhq]r= hzX9The scheduler sleeps between iterations so it doesn't consume too much CPU. It keeps a list of the scheduled items sorted by time, at each iteration it sleeps for the remaining time of the item with the nearest deadline. If there are no eta tasks it will sleep for a minimum amount of time, one second by default.r> r? }r@ (hTj; hUj9 ubaubh)rA }rB (hTXA bug sneaked in here, making it sleep for one second for every task that was scheduled. This has been fixed, so now it should move tasks like hot knife through butter.rC hUj5 h^hahchhe}rD (hg]hh]hi]hj]hm]uhoMhq]rE hzXA bug sneaked in here, making it sleep for one second for every task that was scheduled. This has been fixed, so now it should move tasks like hot knife through butter.rF rG }rH (hTjC hUjA ubaubh)rI }rJ (hTXVIn addition a new setting has been added to control the minimum sleep interval; ``CELERYD_ETA_SCHEDULER_PRECISION``. A good value for this would be a float between 0 and 1, depending on the needed precision. A value of 0.8 means that when the ETA of a task is met, it will take at most 0.8 seconds for the task to be moved to the ready queue.hUj5 h^hahchhe}rK (hg]hh]hi]hj]hm]uhoMhq]rL (hzXPIn addition a new setting has been added to control the minimum sleep interval; rM rN }rO (hTXPIn addition a new setting has been added to control the minimum sleep interval; hUjI ubj.)rP }rQ (hTX#``CELERYD_ETA_SCHEDULER_PRECISION``he}rR (hg]hh]hi]hj]hm]uhUjI hq]rS hzXCELERYD_ETA_SCHEDULER_PRECISIONrT rU }rV (hTUhUjP ubahcj6ubhzX. A good value for this would be a float between 0 and 1, depending on the needed precision. A value of 0.8 means that when the ETA of a task is met, it will take at most 0.8 seconds for the task to be moved to the ready queue.rW rX }rY (hTX. A good value for this would be a float between 0 and 1, depending on the needed precision. A value of 0.8 means that when the ETA of a task is met, it will take at most 0.8 seconds for the task to be moved to the ready queue.hUjI ubeubehcjPubeubh)rZ }r[ (hTXxPool: Supervisor did not release the semaphore. This would lead to a deadlock if all workers terminated prematurely. hUj h^hahchhe}r\ (hg]hh]hi]hj]hm]uhoNhphhq]r] (h)r^ }r_ (hTX/Pool: Supervisor did not release the semaphore.r` hUjZ h^hahchhe}ra (hg]hh]hi]hj]hm]uhoM"hq]rb hzX/Pool: Supervisor did not release the semaphore.rc rd }re (hTj` hUj^ ubaubj:)rf }rg (hTUhe}rh (hg]hh]hi]hj]hm]uhUjZ hq]ri h)rj }rk (hTXDThis would lead to a deadlock if all workers terminated prematurely.rl hUjf h^hahchhe}rm (hg]hh]hi]hj]hm]uhoM$hq]rn hzXDThis would lead to a deadlock if all workers terminated prematurely.ro rp }rq (hTjl hUjj ubaubahcjPubeubh)rr }rs (hTX>Added Python version trove classifiers: 2.4, 2.5, 2.6 and 2.7 hUj h^hahchhe}rt (hg]hh]hi]hj]hm]uhoNhphhq]ru h)rv }rw (hTX=Added Python version trove classifiers: 2.4, 2.5, 2.6 and 2.7rx hUjr h^hahchhe}ry (hg]hh]hi]hj]hm]uhoM&hq]rz hzX=Added Python version trove classifiers: 2.4, 2.5, 2.6 and 2.7r{ r| }r} (hTjx hUjv ubaubaubh)r~ }r (hTX!Tests now passing on Python 2.7. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTX Tests now passing on Python 2.7.r hUj~ h^hahchhe}r (hg]hh]hi]hj]hm]uhoM(hq]r hzX Tests now passing on Python 2.7.r r }r (hTj hUj ubaubaubh)r }r (hTXLTask.__reduce__: Tasks created using the task decorator can now be pickled. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXKTask.__reduce__: Tasks created using the task decorator can now be pickled.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM*hq]r hzXKTask.__reduce__: Tasks created using the task decorator can now be pickled.r r }r (hTj hUj ubaubaubh)r }r (hTX+setup.py: nose added to ``tests_require``. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTX*setup.py: nose added to ``tests_require``.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM,hq]r (hzXsetup.py: nose added to r r }r (hTXsetup.py: nose added to hUj ubj.)r }r (hTX``tests_require``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX tests_requirer r }r (hTUhUj ubahcj6ubhzX.r }r (hTX.hUj ubeubaubh)r }r (hTX-Pickle should now work with SQLAlchemy 0.5.x hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTX,Pickle should now work with SQLAlchemy 0.5.xr hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM.hq]r hzX,Pickle should now work with SQLAlchemy 0.5.xr r }r (hTj hUj ubaubaubh)r }r (hTXDNew homepage design by Jan Henrik Helmers: http://celeryproject.org hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXCNew homepage design by Jan Henrik Helmers: http://celeryproject.orghUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM0hq]r (hzX+New homepage design by Jan Henrik Helmers: r r }r (hTX+New homepage design by Jan Henrik Helmers: hUj ubh)r }r (hTXhttp://celeryproject.orgr he}r (Urefurij hj]hi]hg]hh]hm]uhUj hq]r hzXhttp://celeryproject.orgr r }r (hTUhUj ubahchubeubaubh)r }r (hTXBNew Sphinx theme by Armin Ronacher: http://celeryproject.org/docs hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXANew Sphinx theme by Armin Ronacher: http://celeryproject.org/docshUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM2hq]r (hzX$New Sphinx theme by Armin Ronacher: r r }r (hTX$New Sphinx theme by Armin Ronacher: hUj ubh)r }r (hTXhttp://celeryproject.org/docsr he}r (Urefurij hj]hi]hg]hh]hm]uhUj hq]r hzXhttp://celeryproject.org/docsr r }r (hTUhUj ubahchubeubaubh)r }r (hTXFixed "pending_xref" errors shown in the HTML rendering of the documentation. Apparently this was caused by new changes in Sphinx 1.0b2. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXFixed "pending_xref" errors shown in the HTML rendering of the documentation. Apparently this was caused by new changes in Sphinx 1.0b2.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM4hq]r hzXFixed "pending_xref" errors shown in the HTML rendering of the documentation. Apparently this was caused by new changes in Sphinx 1.0b2.r r }r (hTj hUj ubaubaubh)r }r (hTXRouter classes in ``CELERY_ROUTES`` are now imported lazily. Importing a router class in a module that also loads the Celery environment would cause a circular dependency. This is solved by importing it when needed after the environment is set up. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTX<Router classes in ``CELERY_ROUTES`` are now imported lazily.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM7hq]r (hzXRouter classes in r r }r (hTXRouter classes in hUj ubj.)r }r (hTX``CELERY_ROUTES``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX CELERY_ROUTESr r }r (hTUhUj ubahcj6ubhzX are now imported lazily.r r }r (hTX are now imported lazily.hUj ubeubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r h)r }r (hTXImporting a router class in a module that also loads the Celery environment would cause a circular dependency. This is solved by importing it when needed after the environment is set up.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM9hq]r hzXImporting a router class in a module that also loads the Celery environment would cause a circular dependency. This is solved by importing it when needed after the environment is set up.r r }r (hTj hUj ubaubahcjPubeubh)r }r (hTX``CELERY_ROUTES`` was broken if set to a single dict. This example in the docs should now work again:: CELERY_ROUTES = {"feed.tasks.import_feed": "feeds"} hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTX5``CELERY_ROUTES`` was broken if set to a single dict.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM=hq]r (j.)r }r (hTX``CELERY_ROUTES``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX CELERY_ROUTESr r }r (hTUhUj ubahcj6ubhzX$ was broken if set to a single dict.r r }r (hTX$ was broken if set to a single dict.hUj ubeubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r (h)r }r (hTX0This example in the docs should now work again::hUj h^hahchhe}r! (hg]hh]hi]hj]hm]uhoM?hq]r" hzX/This example in the docs should now work again:r# r$ }r% (hTX/This example in the docs should now work again:hUj ubaubj)r& }r' (hTX3CELERY_ROUTES = {"feed.tasks.import_feed": "feeds"}hUj hcjhe}r( (jjhj]hi]hg]hh]hm]uhoMAhq]r) hzX3CELERY_ROUTES = {"feed.tasks.import_feed": "feeds"}r* r+ }r, (hTUhUj& ubaubehcjPubeubh)r- }r. (hTX:``CREATE_MISSING_QUEUES`` was not honored by apply_async. hUj h^hahchhe}r/ (hg]hh]hi]hj]hm]uhoNhphhq]r0 h)r1 }r2 (hTX9``CREATE_MISSING_QUEUES`` was not honored by apply_async.hUj- h^hahchhe}r3 (hg]hh]hi]hj]hm]uhoMChq]r4 (j.)r5 }r6 (hTX``CREATE_MISSING_QUEUES``he}r7 (hg]hh]hi]hj]hm]uhUj1 hq]r8 hzXCREATE_MISSING_QUEUESr9 r: }r; (hTUhUj5 ubahcj6ubhzX was not honored by apply_async.r< r= }r> (hTX was not honored by apply_async.hUj1 ubeubaubh)r? }r@ (hTXNew remote control command: ``stats`` Dumps information about the worker, like pool process pids, and total number of tasks executed by type. Example reply:: [{'worker.local': 'total': {'tasks.sleeptask': 6}, 'pool': {'timeouts': [None, None], 'processes': [60376, 60377], 'max-concurrency': 2, 'max-tasks-per-child': None, 'put-guarded-by-semaphore': True}}] hUj h^hahchhe}rA (hg]hh]hi]hj]hm]uhoNhphhq]rB (h)rC }rD (hTX%New remote control command: ``stats``hUj? h^hahchhe}rE (hg]hh]hi]hj]hm]uhoMEhq]rF (hzXNew remote control command: rG rH }rI (hTXNew remote control command: hUjC ubj.)rJ }rK (hTX ``stats``he}rL (hg]hh]hi]hj]hm]uhUjC hq]rM hzXstatsrN rO }rP (hTUhUjJ ubahcj6ubeubj:)rQ }rR (hTUhe}rS (hg]hh]hi]hj]hm]uhUj? hq]rT (h)rU }rV (hTXgDumps information about the worker, like pool process pids, and total number of tasks executed by type.rW hUjQ h^hahchhe}rX (hg]hh]hi]hj]hm]uhoMGhq]rY hzXgDumps information about the worker, like pool process pids, and total number of tasks executed by type.rZ r[ }r\ (hTjW hUjU ubaubh)r] }r^ (hTXExample reply::hUjQ h^hahchhe}r_ (hg]hh]hi]hj]hm]uhoMJhq]r` hzXExample reply:ra rb }rc (hTXExample reply:hUj] ubaubj)rd }re (hTX [{'worker.local': 'total': {'tasks.sleeptask': 6}, 'pool': {'timeouts': [None, None], 'processes': [60376, 60377], 'max-concurrency': 2, 'max-tasks-per-child': None, 'put-guarded-by-semaphore': True}}]hUjQ hcjhe}rf (jjhj]hi]hg]hh]hm]uhoMLhq]rg hzX [{'worker.local': 'total': {'tasks.sleeptask': 6}, 'pool': {'timeouts': [None, None], 'processes': [60376, 60377], 'max-concurrency': 2, 'max-tasks-per-child': None, 'put-guarded-by-semaphore': True}}]rh ri }rj (hTUhUjd ubaubehcjPubeubh)rk }rl (hTXSNew remote control command: ``dump_active`` Gives a list of tasks currently being executed by the worker. By default arguments are passed through repr in case there are arguments that is not JSON encodable. If you know the arguments are JSON safe, you can pass the argument ``safe=True``. Example reply:: >>> broadcast("dump_active", arguments={"safe": False}, reply=True) [{'worker.local': [ {'args': '(1,)', 'time_start': 1278580542.6300001, 'name': 'tasks.sleeptask', 'delivery_info': { 'consumer_tag': '30', 'routing_key': 'celery', 'exchange': 'celery'}, 'hostname': 'casper.local', 'acknowledged': True, 'kwargs': '{}', 'id': '802e93e9-e470-47ed-b913-06de8510aca2', } ]}] hUj h^hahchhe}rm (hg]hh]hi]hj]hm]uhoNhphhq]rn (h)ro }rp (hTX+New remote control command: ``dump_active``hUjk h^hahchhe}rq (hg]hh]hi]hj]hm]uhoMThq]rr (hzXNew remote control command: rs rt }ru (hTXNew remote control command: hUjo ubj.)rv }rw (hTX``dump_active``he}rx (hg]hh]hi]hj]hm]uhUjo hq]ry hzX dump_activerz r{ }r| (hTUhUjv ubahcj6ubeubj:)r} }r~ (hTUhe}r (hg]hh]hi]hj]hm]uhUjk hq]r (h)r }r (hTXGives a list of tasks currently being executed by the worker. By default arguments are passed through repr in case there are arguments that is not JSON encodable. If you know the arguments are JSON safe, you can pass the argument ``safe=True``.hUj} h^hahchhe}r (hg]hh]hi]hj]hm]uhoMVhq]r (hzXGives a list of tasks currently being executed by the worker. By default arguments are passed through repr in case there are arguments that is not JSON encodable. If you know the arguments are JSON safe, you can pass the argument r r }r (hTXGives a list of tasks currently being executed by the worker. By default arguments are passed through repr in case there are arguments that is not JSON encodable. If you know the arguments are JSON safe, you can pass the argument hUj ubj.)r }r (hTX ``safe=True``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX safe=Truer r }r (hTUhUj ubahcj6ubhzX.r }r (hTX.hUj ubeubh)r }r (hTXExample reply::hUj} h^hahchhe}r (hg]hh]hi]hj]hm]uhoM[hq]r hzXExample reply:r r }r (hTXExample reply:hUj ubaubj)r }r (hTX>>> broadcast("dump_active", arguments={"safe": False}, reply=True) [{'worker.local': [ {'args': '(1,)', 'time_start': 1278580542.6300001, 'name': 'tasks.sleeptask', 'delivery_info': { 'consumer_tag': '30', 'routing_key': 'celery', 'exchange': 'celery'}, 'hostname': 'casper.local', 'acknowledged': True, 'kwargs': '{}', 'id': '802e93e9-e470-47ed-b913-06de8510aca2', } ]}]hUj} hcjhe}r (jjhj]hi]hg]hh]hm]uhoM]hq]r hzX>>> broadcast("dump_active", arguments={"safe": False}, reply=True) [{'worker.local': [ {'args': '(1,)', 'time_start': 1278580542.6300001, 'name': 'tasks.sleeptask', 'delivery_info': { 'consumer_tag': '30', 'routing_key': 'celery', 'exchange': 'celery'}, 'hostname': 'casper.local', 'acknowledged': True, 'kwargs': '{}', 'id': '802e93e9-e470-47ed-b913-06de8510aca2', } ]}]r r }r (hTUhUj ubaubehcjPubeubh)r }r (hTXAdded experimental support for persistent revokes. Use the ``-S|--statedb`` argument to celeryd to enable it:: $ celeryd --statedb=/var/run/celeryd This will use the file: ``/var/run/celeryd.db``, as the ``shelve`` module automatically adds the ``.db`` suffix. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTX2Added experimental support for persistent revokes.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMmhq]r hzX2Added experimental support for persistent revokes.r r }r (hTj hUj ubaubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r (h)r }r (hTX;Use the ``-S|--statedb`` argument to celeryd to enable it::hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMohq]r (hzXUse the r r }r (hTXUse the hUj ubj.)r }r (hTX``-S|--statedb``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX -S|--statedbr r }r (hTUhUj ubahcj6ubhzX" argument to celeryd to enable it:r r }r (hTX" argument to celeryd to enable it:hUj ubeubj)r }r (hTX$$ celeryd --statedb=/var/run/celerydhUj hcjhe}r (jjhj]hi]hg]hh]hm]uhoMqhq]r hzX$$ celeryd --statedb=/var/run/celerydr r }r (hTUhUj ubaubh)r }r (hTXpThis will use the file: ``/var/run/celeryd.db``, as the ``shelve`` module automatically adds the ``.db`` suffix.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMshq]r (hzXThis will use the file: r r }r (hTXThis will use the file: hUj ubj.)r }r (hTX``/var/run/celeryd.db``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX/var/run/celeryd.dbr r }r (hTUhUj ubahcj6ubhzX , as the r r }r (hTX , as the hUj ubj.)r }r (hTX ``shelve``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzXshelver r }r (hTUhUj ubahcj6ubhzX module automatically adds the r r }r (hTX module automatically adds the hUj ubj.)r }r (hTX``.db``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX.dbr r }r (hTUhUj ubahcj6ubhzX suffix.r r }r (hTX suffix.hUj ubeubehcjPubeubeubeubhV)r }r (hTUhUh\h^hahchdhe}r (hg]hh]hi]hj]r jahm]r h auhoMxhphhq]r (hs)r }r (hTj hUj h^hahchwhe}r (hj]hi]hg]hh]hm]jjuhoMxhphhq]r hzX2.0.0r r }r (hTj hUj ubaubj)r }r (hTUhUj h^hahcjhe}r (hg]hh]hi]hj]hm]uhoMyhphhq]r j)r }r (hTUhUj h^hahcjhe}r (hg]hh]hi]hj]hm]uhoMyhphhq]r(j)r}r(hTX release-daterhe}r(hg]hh]hi]hj]hm]uhUj hq]rhzX release-daterr}r(hTjhUjubahcjubj)r }r (hTX2010-07-02 02:30 P.M CEST he}r (hg]hh]hi]hj]hm]uhUj hq]r h)r }r(hTX2010-07-02 02:30 P.M CESTrhUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoMyhq]rhzX2010-07-02 02:30 P.M CESTrr}r(hTjhUj ubaubahcjubeubaubhV)r}r(hTUhUj h^hahchdhe}r(hg]hh]hi]hj]rjahm]rh,auhoM|hphhq]r(hs)r}r(hTj"hUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjuhoM|hphhq]rhzXForewordrr }r!(hTj"hUjubaubh)r"}r#(hTXCelery 2.0 contains backward incompatible changes, the most important being that the Django dependency has been removed so Celery no longer supports Django out of the box, but instead as an add-on package called `django-celery`_.hUjh^hahchhe}r$(hg]hh]hi]hj]hm]uhoM~hphhq]r%(hzXCelery 2.0 contains backward incompatible changes, the most important being that the Django dependency has been removed so Celery no longer supports Django out of the box, but instead as an add-on package called r&r'}r((hTXCelery 2.0 contains backward incompatible changes, the most important being that the Django dependency has been removed so Celery no longer supports Django out of the box, but instead as an add-on package called hUj"ubh)r)}r*(hTX`django-celery`_Uresolvedr+KhUj"hchhe}r,(UnameX django-celeryr-Urefurir.X)http://pypi.python.org/pypi/django-celeryr/hj]hi]hg]hh]hm]uhq]r0hzX django-celeryr1r2}r3(hTUhUj)ubaubhzX.r4}r5(hTX.hUj"ubeubh)r6}r7(hTXWe're very sorry for breaking backwards compatibility, but there's also many new and exciting features to make up for the time you lose upgrading, so be sure to read the :ref:`News <120news>` section.hUjh^hahchhe}r8(hg]hh]hi]hj]hm]uhoMhphhq]r9(hzXWe're very sorry for breaking backwards compatibility, but there's also many new and exciting features to make up for the time you lose upgrading, so be sure to read the r:r;}r<(hTXWe're very sorry for breaking backwards compatibility, but there's also many new and exciting features to make up for the time you lose upgrading, so be sure to read the hUj6ubje)r=}r>(hTX:ref:`News <120news>`r?hUj6h^hahcjihe}r@(UreftypeXrefjkjlX120newsU refdomainXstdrAhj]hi]U refexplicithg]hh]hm]jnjouhoMhq]rBj )rC}rD(hTj?he}rE(hg]hh]rF(jwjAXstd-refrGehi]hj]hm]uhUj=hq]rHhzXNewsrIrJ}rK(hTUhUjCubahcj ubaubhzX section.rLrM}rN(hTX section.hUj6ubeubh)rO}rP(hTXQuite a lot of potential users have been upset about the Django dependency, so maybe this is a chance to get wider adoption by the Python community as well.rQhUjh^hahchhe}rR(hg]hh]hi]hj]hm]uhoMhphhq]rShzXQuite a lot of potential users have been upset about the Django dependency, so maybe this is a chance to get wider adoption by the Python community as well.rTrU}rV(hTjQhUjOubaubh)rW}rX(hTX2Big thanks to all contributors, testers and users!rYhUjh^hahchhe}rZ(hg]hh]hi]hj]hm]uhoMhphhq]r[hzX2Big thanks to all contributors, testers and users!r\r]}r^(hTjYhUjWubaubeubhV)r_}r`(hTUhUj h^hahchdhe}ra(hg]hh]hi]hj]rbj0ahm]rch5auhoMhphhq]rd(hs)re}rf(hTj5hUj_h^hahchwhe}rg(hj]hi]hg]hh]hm]jj/uhoMhphhq]rhhzXUpgrading for Django-usersrirj}rk(hTj5hUjeubaubh)rl}rm(hTXJDjango integration has been moved to a separate package: `django-celery`_.rnhUj_h^hahchhe}ro(hg]hh]hi]hj]hm]uhoMhphhq]rp(hzX9Django integration has been moved to a separate package: rqrr}rs(hTX9Django integration has been moved to a separate package: hUjlubh)rt}ru(hTX`django-celery`_j+KhUjlhchhe}rv(UnameX django-celeryj.j/hj]hi]hg]hh]hm]uhq]rwhzX django-celeryrxry}rz(hTUhUjtubaubhzX.r{}r|(hTX.hUjlubeubh)r}}r~(hTUhUj_h^hahchhe}r(j X*hj]hi]hg]hh]hm]uhoMhphhq]r(h)r}r(hTXTo upgrade you need to install the `django-celery`_ module and change:: INSTALLED_APPS = "celery" to:: INSTALLED_APPS = "djcelery" hUj}h^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXGTo upgrade you need to install the `django-celery`_ module and change::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzX#To upgrade you need to install the rr}r(hTX#To upgrade you need to install the hUjubh)r}r(hTX`django-celery`_j+KhUjhchhe}r(UnameX django-celeryj.j/hj]hi]hg]hh]hm]uhq]rhzX django-celeryrr}r(hTUhUjubaubhzX module and change:rr}r(hTX module and change:hUjubeubj)r}r(hTXINSTALLED_APPS = "celery"hUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzXINSTALLED_APPS = "celery"rr}r(hTUhUjubaubh)r}r(hTXto::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXto:rr}r(hTXto:hUjubaubj)r}r(hTXINSTALLED_APPS = "djcelery"hUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzXINSTALLED_APPS = "djcelery"rr}r(hTUhUjubaubeubh)r}r(hTXIf you use ``mod_wsgi`` you need to add the following line to your ``.wsgi`` file:: import os os.environ["CELERY_LOADER"] = "django" hUj}h^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXSIf you use ``mod_wsgi`` you need to add the following line to your ``.wsgi`` file::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzX If you use rr}r(hTX If you use hUjubj.)r}r(hTX ``mod_wsgi``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXmod_wsgirr}r(hTUhUjubahcj6ubhzX, you need to add the following line to your rr}r(hTX, you need to add the following line to your hUjubj.)r}r(hTX ``.wsgi``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX.wsgirr}r(hTUhUjubahcj6ubhzX file:rr}r(hTX file:hUjubeubj)r}r(hTX0import os os.environ["CELERY_LOADER"] = "django"hUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzX0import os os.environ["CELERY_LOADER"] = "django"rr}r(hTUhUjubaubeubh)r}r(hTXaThe following modules has been moved to `django-celery`_: ===================================== ===================================== **Module name** **Replace with** ===================================== ===================================== ``celery.models`` ``djcelery.models`` ``celery.managers`` ``djcelery.managers`` ``celery.views`` ``djcelery.views`` ``celery.urls`` ``djcelery.urls`` ``celery.management`` ``djcelery.management`` ``celery.loaders.djangoapp`` ``djcelery.loaders`` ``celery.backends.database`` ``djcelery.backends.database`` ``celery.backends.cache`` ``djcelery.backends.cache`` ===================================== ===================================== hUj}h^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX9The following modules has been moved to `django-celery`_:hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzX(The following modules has been moved to rr}r(hTX(The following modules has been moved to hUjubh)r}r(hTX`django-celery`_j+KhUjhchhe}r(UnameX django-celeryj.j/hj]hi]hg]hh]hm]uhq]rhzX django-celeryrr}r(hTUhUjubaubhzX:r}r(hTX:hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rcdocutils.nodes table r)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rcdocutils.nodes tgroup r)r}r(hTUhe}r(hj]hi]hg]hh]hm]UcolsKuhUjhq]r(cdocutils.nodes colspec r)r}r(hTUhe}r(hj]hi]hg]hh]hm]UcolwidthK%uhUjhq]hcUcolspecrubj)r}r(hTUhe}r(hj]hi]hg]hh]hm]UcolwidthK%uhUjhq]hcjubcdocutils.nodes thead r)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rcdocutils.nodes row r)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(cdocutils.nodes entry r)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r h)r }r (hTX**Module name**r hUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]rcdocutils.nodes strong r)r}r(hTj he}r(hg]hh]hi]hj]hm]uhUj hq]rhzX Module namerr}r(hTUhUjubahcUstrongrubaubahcUentryrubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX**Replace with**rhUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r!j)r"}r#(hTjhe}r$(hg]hh]hi]hj]hm]uhUjhq]r%hzX Replace withr&r'}r((hTUhUj"ubahcjubaubahcjubehcUrowr)ubahcUtheadr*ubcdocutils.nodes tbody r+)r,}r-(hTUhe}r.(hg]hh]hi]hj]hm]uhUjhq]r/(j)r0}r1(hTUhe}r2(hg]hh]hi]hj]hm]uhUj,hq]r3(j)r4}r5(hTUhe}r6(hg]hh]hi]hj]hm]uhUj0hq]r7h)r8}r9(hTX``celery.models``r:hUj4h^hahchhe}r;(hg]hh]hi]hj]hm]uhoMhq]r<j.)r=}r>(hTj:he}r?(hg]hh]hi]hj]hm]uhUj8hq]r@hzX celery.modelsrArB}rC(hTUhUj=ubahcj6ubaubahcjubj)rD}rE(hTUhe}rF(hg]hh]hi]hj]hm]uhUj0hq]rGh)rH}rI(hTX``djcelery.models``rJhUjDh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMhq]rLj.)rM}rN(hTjJhe}rO(hg]hh]hi]hj]hm]uhUjHhq]rPhzXdjcelery.modelsrQrR}rS(hTUhUjMubahcj6ubaubahcjubehcj)ubj)rT}rU(hTUhe}rV(hg]hh]hi]hj]hm]uhUj,hq]rW(j)rX}rY(hTUhe}rZ(hg]hh]hi]hj]hm]uhUjThq]r[h)r\}r](hTX``celery.managers``r^hUjXh^hahchhe}r_(hg]hh]hi]hj]hm]uhoMhq]r`j.)ra}rb(hTj^he}rc(hg]hh]hi]hj]hm]uhUj\hq]rdhzXcelery.managersrerf}rg(hTUhUjaubahcj6ubaubahcjubj)rh}ri(hTUhe}rj(hg]hh]hi]hj]hm]uhUjThq]rkh)rl}rm(hTX``djcelery.managers``rnhUjhh^hahchhe}ro(hg]hh]hi]hj]hm]uhoMhq]rpj.)rq}rr(hTjnhe}rs(hg]hh]hi]hj]hm]uhUjlhq]rthzXdjcelery.managersrurv}rw(hTUhUjqubahcj6ubaubahcjubehcj)ubj)rx}ry(hTUhe}rz(hg]hh]hi]hj]hm]uhUj,hq]r{(j)r|}r}(hTUhe}r~(hg]hh]hi]hj]hm]uhUjxhq]rh)r}r(hTX``celery.views``rhUj|h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX celery.viewsrr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjxhq]rh)r}r(hTX``djcelery.views``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXdjcelery.viewsrr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUj,hq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``celery.urls``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX celery.urlsrr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``djcelery.urls``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX djcelery.urlsrr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUj,hq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``celery.management``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelery.managementrr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``djcelery.management``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXdjcelery.managementrr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUj,hq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``celery.loaders.djangoapp``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelery.loaders.djangoapprr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``djcelery.loaders``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXdjcelery.loadersrr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r (hTUhe}r (hg]hh]hi]hj]hm]uhUj,hq]r (j)r }r (hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``celery.backends.database``rhUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelery.backends.databaserr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r }r!(hTX``djcelery.backends.database``r"hUjh^hahchhe}r#(hg]hh]hi]hj]hm]uhoMhq]r$j.)r%}r&(hTj"he}r'(hg]hh]hi]hj]hm]uhUj hq]r(hzXdjcelery.backends.databaser)r*}r+(hTUhUj%ubahcj6ubaubahcjubehcj)ubj)r,}r-(hTUhe}r.(hg]hh]hi]hj]hm]uhUj,hq]r/(j)r0}r1(hTUhe}r2(hg]hh]hi]hj]hm]uhUj,hq]r3h)r4}r5(hTX``celery.backends.cache``r6hUj0h^hahchhe}r7(hg]hh]hi]hj]hm]uhoMhq]r8j.)r9}r:(hTj6he}r;(hg]hh]hi]hj]hm]uhUj4hq]r<hzXcelery.backends.cacher=r>}r?(hTUhUj9ubahcj6ubaubahcjubj)r@}rA(hTUhe}rB(hg]hh]hi]hj]hm]uhUj,hq]rCh)rD}rE(hTX``djcelery.backends.cache``rFhUj@h^hahchhe}rG(hg]hh]hi]hj]hm]uhoMhq]rHj.)rI}rJ(hTjFhe}rK(hg]hh]hi]hj]hm]uhUjDhq]rLhzXdjcelery.backends.cacherMrN}rO(hTUhUjIubahcj6ubaubahcjubehcj)ubehcUtbodyrPubehcUtgrouprQubahcUtablerRubahcjPubeubeubh)rS}rT(hTXImporting :mod:`djcelery` will automatically setup Celery to use Django loader. loader. It does this by setting the :envvar:`CELERY_LOADER` environment variable to ``"django"`` (it won't change it if a loader is already set.)hUj_h^hahchhe}rU(hg]hh]hi]hj]hm]uhoMhphhq]rV(hzX Importing rWrX}rY(hTX Importing hUjSubje)rZ}r[(hTX:mod:`djcelery`r\hUjSh^hahcjihe}r](UreftypeXmodjkjlXdjceleryU refdomainXpyr^hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r_j.)r`}ra(hTj\he}rb(hg]hh]rc(jwj^Xpy-modrdehi]hj]hm]uhUjZhq]rehzXdjceleryrfrg}rh(hTUhUj`ubahcj6ubaubhzX\ will automatically setup Celery to use Django loader. loader. It does this by setting the rirj}rk(hTX\ will automatically setup Celery to use Django loader. loader. It does this by setting the hUjSubcsphinx.addnodes index rl)rm}rn(hTUhe}ro(hj]hi]hg]hh]hm]Uentriesrp]rq((UsinglerrX CELERY_LOADERrsUindex-0rtUtru(jrX#environment variable; CELERY_LOADERjtUtrveuhUjShq]hcUindexrwubcdocutils.nodes target rx)ry}rz(hTUhe}r{(hg]hh]hi]hj]r|jtahm]uhUjShq]hcUtargetr}ubje)r~}r(hTX:envvar:`CELERY_LOADER`rhUjSh^hahcjihe}r(UreftypeXenvvarjkjljsU refdomainXstdrhj]hi]U refexplicithg]hh]hm]jnjouhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjX std-envvarrehi]hj]hm]uhUj~hq]rhzX CELERY_LOADERrr}r(hTUhUjubahcj6ubaubhzX environment variable to rr}r(hTX environment variable to hUjSubj.)r}r(hTX ``"django"``he}r(hg]hh]hi]hj]hm]uhUjShq]rhzX"django"rr}r(hTUhUjubahcj6ubhzX1 (it won't change it if a loader is already set.)rr}r(hTX1 (it won't change it if a loader is already set.)hUjSubeubh)r}r(hTXWhen the Django loader is used, the "database" and "cache" result backend aliases will point to the :mod:`djcelery` backends instead of the built-in backends, and configuration will be read from the Django settings.hUj_h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhphhq]r(hzXdWhen the Django loader is used, the "database" and "cache" result backend aliases will point to the rr}r(hTXdWhen the Django loader is used, the "database" and "cache" result backend aliases will point to the hUjubje)r}r(hTX:mod:`djcelery`rhUjh^hahcjihe}r(UreftypeXmodjkjlXdjceleryU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-modrehi]hj]hm]uhUjhq]rhzXdjceleryrr}r(hTUhUjubahcj6ubaubhzXd backends instead of the built-in backends, and configuration will be read from the Django settings.rr}r(hTXd backends instead of the built-in backends, and configuration will be read from the Django settings.hUjubeubjx)r}r(hTX>.. _`django-celery`: http://pypi.python.org/pypi/django-celeryhYKhUj_h^hahcj}he}r(j.j/hj]rU django-celeryrahi]hg]hh]hm]rhHauhoMhphhq]ubeubhV)r}r(hTUhUj h^hahchdhe}r(hg]hh]hi]hj]rjCahm]rh1auhoMhphhq]r(hs)r}r(hTjHhUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjBuhoMhphhq]rhzXUpgrading for othersrr}r(hTjHhUjubaubhV)r}r(hTUhUjh^hahchdhe}r(hg]hh]hi]hj]rjZahm]rh3auhoMhphhq]r(hs)r}r(hTj_hUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjYuhoMhphhq]rhzXDatabase result backendrr}r(hTj_hUjubaubh)r}r(hTXThe database result backend is now using `SQLAlchemy`_ instead of the Django ORM, see `Supported Databases`_ for a table of supported databases.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhphhq]r(hzX)The database result backend is now using rr}r(hTX)The database result backend is now using hUjubh)r}r(hTX `SQLAlchemy`_j+KhUjhchhe}r(UnameX SQLAlchemyj.Xhttp://www.sqlalchemy.orgrhj]hi]hg]hh]hm]uhq]rhzX SQLAlchemyrr}r(hTUhUjubaubhzX instead of the Django ORM, see rr}r(hTX instead of the Django ORM, see hUjubh)r}r(hTX`Supported Databases`_j+KhUjhchhe}r(UnameXSupported Databasesj.X@http://www.sqlalchemy.org/docs/dbengine.html#supported-databasesrhj]hi]hg]hh]hm]uhq]rhzXSupported Databasesrr}r(hTUhUjubaubhzX$ for a table of supported databases.rr}r(hTX$ for a table of supported databases.hUjubeubh)r}r(hTXThe ``DATABASE_*`` settings has been replaced by a single setting: ``CELERY_RESULT_DBURI``. The value here should be an `SQLAlchemy Connection String`_, some examples include:hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhphhq]r(hzXThe rr}r(hTXThe hUjubj.)r}r(hTX``DATABASE_*``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX DATABASE_*rr}r(hTUhUjubahcj6ubhzX1 settings has been replaced by a single setting: rr}r(hTX1 settings has been replaced by a single setting: hUjubj.)r}r(hTX``CELERY_RESULT_DBURI``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_RESULT_DBURIrr}r(hTUhUjubahcj6ubhzX. The value here should be an rr }r (hTX. The value here should be an hUjubh)r }r (hTX`SQLAlchemy Connection String`_j+KhUjhchhe}r (UnameXSQLAlchemy Connection Stringj.XHhttp://www.sqlalchemy.org/docs/dbengine.html#create-engine-url-argumentsrhj]hi]hg]hh]hm]uhq]rhzXSQLAlchemy Connection Stringrr}r(hTUhUj ubaubhzX, some examples include:rr}r(hTX, some examples include:hUjubeubj)r}r(hTX*# sqlite (filename) CELERY_RESULT_DBURI = "sqlite:///celerydb.sqlite" # mysql CELERY_RESULT_DBURI = "mysql://scott:tiger@localhost/foo" # postgresql CELERY_RESULT_DBURI = "postgresql://scott:tiger@localhost/mydatabase" # oracle CELERY_RESULT_DBURI = "oracle://scott:tiger@127.0.0.1:1521/sidname"hUjh^hahcjhe}r(UlinenosrUlanguagerXpythonjjhj]hi]hg]hh]hm]uhoMhphhq]rhzX*# sqlite (filename) CELERY_RESULT_DBURI = "sqlite:///celerydb.sqlite" # mysql CELERY_RESULT_DBURI = "mysql://scott:tiger@localhost/foo" # postgresql CELERY_RESULT_DBURI = "postgresql://scott:tiger@localhost/mydatabase" # oracle CELERY_RESULT_DBURI = "oracle://scott:tiger@127.0.0.1:1521/sidname"rr}r(hTUhUjubaubh)r}r (hTXSSee `SQLAlchemy Connection Strings`_ for more information about connection strings.hUjh^hahchhe}r!(hg]hh]hi]hj]hm]uhoMhphhq]r"(hzXSee r#r$}r%(hTXSee hUjubh)r&}r'(hTX `SQLAlchemy Connection Strings`_j+KhUjhchhe}r((UnameXSQLAlchemy Connection Stringsj.XHhttp://www.sqlalchemy.org/docs/dbengine.html#create-engine-url-argumentsr)hj]hi]hg]hh]hm]uhq]r*hzXSQLAlchemy Connection Stringsr+r,}r-(hTUhUj&ubaubhzX/ for more information about connection strings.r.r/}r0(hTX/ for more information about connection strings.hUjubeubh)r1}r2(hTXsTo specify additional SQLAlchemy database engine options you can use the ``CELERY_RESULT_ENGINE_OPTIONS`` setting::hUjh^hahchhe}r3(hg]hh]hi]hj]hm]uhoMhphhq]r4(hzXITo specify additional SQLAlchemy database engine options you can use the r5r6}r7(hTXITo specify additional SQLAlchemy database engine options you can use the hUj1ubj.)r8}r9(hTX ``CELERY_RESULT_ENGINE_OPTIONS``he}r:(hg]hh]hi]hj]hm]uhUj1hq]r;hzXCELERY_RESULT_ENGINE_OPTIONSr<r=}r>(hTUhUj8ubahcj6ubhzX setting:r?r@}rA(hTX setting:hUj1ubeubj)rB}rC(hTX]# echo enables verbose logging from SQLAlchemy. CELERY_RESULT_ENGINE_OPTIONS = {"echo": True}hUjh^hahcjhe}rD(jjhj]hi]hg]hh]hm]uhoMhphhq]rEhzX]# echo enables verbose logging from SQLAlchemy. CELERY_RESULT_ENGINE_OPTIONS = {"echo": True}rFrG}rH(hTUhUjBubaubjx)rI}rJ(hTX/.. _`SQLAlchemy`: http://www.sqlalchemy.orghYKhUjh^hahcj}he}rK(j.jhj]rLU sqlalchemyrMahi]hg]hh]hm]rNh+auhoMhphhq]ubjx)rO}rP(hTX_.. _`Supported Databases`: http://www.sqlalchemy.org/docs/dbengine.html#supported-databaseshYKhUjh^hahcj}he}rQ(j.jhj]rRUsupported-databasesrSahi]hg]hh]hm]rThauhoMhphhq]ubjx)rU}rV(hTXp.. _`SQLAlchemy Connection String`: http://www.sqlalchemy.org/docs/dbengine.html#create-engine-url-argumentshYKhUjh^hahcj}he}rW(j.jhj]rXUsqlalchemy-connection-stringrYahi]hg]hh]hm]rZhauhoMhphhq]ubjx)r[}r\(hTXq.. _`SQLAlchemy Connection Strings`: http://www.sqlalchemy.org/docs/dbengine.html#create-engine-url-argumentshYKhUjh^hahcj}he}r](j.j)hj]r^Usqlalchemy-connection-stringsr_ahi]hg]hh]hm]r`hauhoMhphhq]ubeubhV)ra}rb(hTUhUjh^hahchdhe}rc(hg]hh]hi]hj]rdjmahm]reh)auhoMhphhq]rf(hs)rg}rh(hTjrhUjah^hahchwhe}ri(hj]hi]hg]hh]hm]jjluhoMhphhq]rjhzXCache result backendrkrl}rm(hTjrhUjgubaubh)rn}ro(hTX~The cache result backend is no longer using the Django cache framework, but it supports mostly the same configuration syntax::hUjah^hahchhe}rp(hg]hh]hi]hj]hm]uhoMhphhq]rqhzX}The cache result backend is no longer using the Django cache framework, but it supports mostly the same configuration syntax:rrrs}rt(hTX}The cache result backend is no longer using the Django cache framework, but it supports mostly the same configuration syntax:hUjnubaubj)ru}rv(hTXFCELERY_CACHE_BACKEND = "memcached://A.example.com:11211;B.example.com"hUjah^hahcjhe}rw(jjhj]hi]hg]hh]hm]uhoMhphhq]rxhzXFCELERY_CACHE_BACKEND = "memcached://A.example.com:11211;B.example.com"ryrz}r{(hTUhUjuubaubh)r|}r}(hTXTo use the cache backend you must either have the `pylibmc`_ or `python-memcached`_ library installed, of which the former is regarded as the best choice.hUjah^hahchhe}r~(hg]hh]hi]hj]hm]uhoMhphhq]r(hzX2To use the cache backend you must either have the rr}r(hTX2To use the cache backend you must either have the hUj|ubh)r}r(hTX `pylibmc`_j+KhUj|hchhe}r(UnameXpylibmcrj.X#http://pypi.python.org/pypi/pylibmcrhj]hi]hg]hh]hm]uhq]rhzXpylibmcrr}r(hTUhUjubaubhzX or rr}r(hTX or hUj|ubh)r}r(hTX`python-memcached`_j+KhUj|hchhe}r(UnameXpython-memcachedrj.X,http://pypi.python.org/pypi/python-memcachedrhj]hi]hg]hh]hm]uhq]rhzXpython-memcachedrr}r(hTUhUjubaubhzXG library installed, of which the former is regarded as the best choice.rr}r(hTXG library installed, of which the former is regarded as the best choice.hUj|ubeubjx)r}r(hTX2.. _`pylibmc`: http://pypi.python.org/pypi/pylibmchYKhUjah^hahcj}he}r(j.jhj]rUpylibmcrahi]hg]hh]hm]rh%auhoMhphhq]ubjx)r}r(hTXD.. _`python-memcached`: http://pypi.python.org/pypi/python-memcachedhYKhUjah^hahcj}he}r(j.jhj]rUpython-memcachedrahi]hg]hh]hm]rhGauhoMhphhq]ubh)r}r(hTXThe support backend types are ``memcached://`` and ``memory://``, we haven't felt the need to support any of the other backends provided by Django.hUjah^hahchhe}r(hg]hh]hi]hj]hm]uhoMhphhq]r(hzXThe support backend types are rr}r(hTXThe support backend types are hUjubj.)r}r(hTX``memcached://``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX memcached://rr}r(hTUhUjubahcj6ubhzX and rr}r(hTX and hUjubj.)r}r(hTX ``memory://``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX memory://rr}r(hTUhUjubahcj6ubhzXS, we haven't felt the need to support any of the other backends provided by Django.rr}r(hTXS, we haven't felt the need to support any of the other backends provided by Django.hUjubeubeubeubhV)r}r(hTUhYKhUj h^hahchdhe}r(hg]rXbackward incompatible changesrahh]hi]hj]rjahm]uhoMhphhq]r(hs)r}r(hTjhUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjuhoMhphhq]rhzXBackward incompatible changesrr}r(hTjhUjubaubh)r}r(hTUhUjh^hahchhe}r(j X*hj]hi]hg]hh]hm]uhoMhphhq]r(h)r}r(hTXDefault (python) loader now prints warning on missing ``celeryconfig.py`` instead of raising :exc:`ImportError`. celeryd raises :exc:`~celery.exceptions.ImproperlyConfigured` if the configuration is not set up. This makes it possible to use ``--help`` etc, without having a working configuration. Also this makes it possible to use the client side of celery without being configured:: >>> from carrot.connection import BrokerConnection >>> conn = BrokerConnection("localhost", "guest", "guest", "/") >>> from celery.execute import send_task >>> r = send_task("celery.ping", args=(), kwargs={}, connection=conn) >>> from celery.backends.amqp import AMQPBackend >>> r.backend = AMQPBackend(connection=conn) >>> r.get() 'pong' hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXpDefault (python) loader now prints warning on missing ``celeryconfig.py`` instead of raising :exc:`ImportError`.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzX6Default (python) loader now prints warning on missing rr}r(hTX6Default (python) loader now prints warning on missing hUjubj.)r}r(hTX``celeryconfig.py``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXceleryconfig.pyrr}r(hTUhUjubahcj6ubhzX instead of raising rr}r(hTX instead of raising hUjubje)r}r(hTX:exc:`ImportError`rhUjh^hahcjihe}r(UreftypeXexcjkjlX ImportErrorU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-excrehi]hj]hm]uhUjhq]rhzX ImportErrorrr}r(hTUhUjubahcj6ubaubhzX.r}r(hTX.hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTXceleryd raises :exc:`~celery.exceptions.ImproperlyConfigured` if the configuration is not set up. This makes it possible to use ``--help`` etc, without having a working configuration.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXceleryd raises rr}r(hTXceleryd raises hUjubje)r}r(hTX.:exc:`~celery.exceptions.ImproperlyConfigured`rhUjh^hahcjihe}r(UreftypeXexcjkjlX&celery.exceptions.ImproperlyConfiguredU refdomainXpyr hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r j.)r }r (hTjhe}r (hg]hh]r(jwj Xpy-excrehi]hj]hm]uhUjhq]rhzXImproperlyConfiguredrr}r(hTUhUj ubahcj6ubaubhzXC if the configuration is not set up. This makes it possible to use rr}r(hTXC if the configuration is not set up. This makes it possible to use hUjubj.)r}r(hTX ``--help``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX--helprr}r(hTUhUjubahcj6ubhzX- etc, without having a working configuration.rr}r (hTX- etc, without having a working configuration.hUjubeubh)r!}r"(hTXWAlso this makes it possible to use the client side of celery without being configured::hUjh^hahchhe}r#(hg]hh]hi]hj]hm]uhoMhq]r$hzXVAlso this makes it possible to use the client side of celery without being configured:r%r&}r'(hTXVAlso this makes it possible to use the client side of celery without being configured:hUj!ubaubj)r(}r)(hTXR>>> from carrot.connection import BrokerConnection >>> conn = BrokerConnection("localhost", "guest", "guest", "/") >>> from celery.execute import send_task >>> r = send_task("celery.ping", args=(), kwargs={}, connection=conn) >>> from celery.backends.amqp import AMQPBackend >>> r.backend = AMQPBackend(connection=conn) >>> r.get() 'pong'hUjhcjhe}r*(jjhj]hi]hg]hh]hm]uhoMhq]r+hzXR>>> from carrot.connection import BrokerConnection >>> conn = BrokerConnection("localhost", "guest", "guest", "/") >>> from celery.execute import send_task >>> r = send_task("celery.ping", args=(), kwargs={}, connection=conn) >>> from celery.backends.amqp import AMQPBackend >>> r.backend = AMQPBackend(connection=conn) >>> r.get() 'pong'r,r-}r.(hTUhUj(ubaubehcjPubeubh)r/}r0(hTXThe following deprecated settings has been removed (as scheduled by the `deprecation timeline`_): ===================================== ===================================== **Setting name** **Replace with** ===================================== ===================================== ``CELERY_AMQP_CONSUMER_QUEUES`` ``CELERY_QUEUES`` ``CELERY_AMQP_EXCHANGE`` ``CELERY_DEFAULT_EXCHANGE`` ``CELERY_AMQP_EXCHANGE_TYPE`` ``CELERY_DEFAULT_EXCHANGE_TYPE`` ``CELERY_AMQP_CONSUMER_ROUTING_KEY`` ``CELERY_QUEUES`` ``CELERY_AMQP_PUBLISHER_ROUTING_KEY`` ``CELERY_DEFAULT_ROUTING_KEY`` ===================================== ===================================== hUjh^hahchhe}r1(hg]hh]hi]hj]hm]uhoNhphhq]r2(h)r3}r4(hTXaThe following deprecated settings has been removed (as scheduled by the `deprecation timeline`_):hUj/h^hahchhe}r5(hg]hh]hi]hj]hm]uhoMhq]r6(hzXHThe following deprecated settings has been removed (as scheduled by the r7r8}r9(hTXHThe following deprecated settings has been removed (as scheduled by the hUj3ubh)r:}r;(hTX`deprecation timeline`_j+KhUj3hchhe}r<(UnameXdeprecation timelinej.X7http://ask.github.com/celery/internals/deprecation.htmlr=hj]hi]hg]hh]hm]uhq]r>hzXdeprecation timeliner?r@}rA(hTUhUj:ubaubhzX):rBrC}rD(hTX):hUj3ubeubj:)rE}rF(hTUhe}rG(hg]hh]hi]hj]hm]uhUj/hq]rHj)rI}rJ(hTUhe}rK(hg]hh]hi]hj]hm]uhUjEhq]rLj)rM}rN(hTUhe}rO(hj]hi]hg]hh]hm]UcolsKuhUjIhq]rP(j)rQ}rR(hTUhe}rS(hj]hi]hg]hh]hm]UcolwidthK%uhUjMhq]hcjubj)rT}rU(hTUhe}rV(hj]hi]hg]hh]hm]UcolwidthK%uhUjMhq]hcjubj)rW}rX(hTUhe}rY(hg]hh]hi]hj]hm]uhUjMhq]rZj)r[}r\(hTUhe}r](hg]hh]hi]hj]hm]uhUjWhq]r^(j)r_}r`(hTUhe}ra(hg]hh]hi]hj]hm]uhUj[hq]rbh)rc}rd(hTX**Setting name**rehUj_h^hahchhe}rf(hg]hh]hi]hj]hm]uhoMhq]rgj)rh}ri(hTjehe}rj(hg]hh]hi]hj]hm]uhUjchq]rkhzX Setting namerlrm}rn(hTUhUjhubahcjubaubahcjubj)ro}rp(hTUhe}rq(hg]hh]hi]hj]hm]uhUj[hq]rrh)rs}rt(hTX**Replace with**ruhUjoh^hahchhe}rv(hg]hh]hi]hj]hm]uhoMhq]rwj)rx}ry(hTjuhe}rz(hg]hh]hi]hj]hm]uhUjshq]r{hzX Replace withr|r}}r~(hTUhUjxubahcjubaubahcjubehcj)ubahcj*ubj+)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjMhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``CELERY_AMQP_CONSUMER_QUEUES``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_AMQP_CONSUMER_QUEUESrr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``CELERY_QUEUES``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_QUEUESrr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``CELERY_AMQP_EXCHANGE``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_AMQP_EXCHANGErr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``CELERY_DEFAULT_EXCHANGE``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_DEFAULT_EXCHANGErr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``CELERY_AMQP_EXCHANGE_TYPE``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_AMQP_EXCHANGE_TYPErr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX ``CELERY_DEFAULT_EXCHANGE_TYPE``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_DEFAULT_EXCHANGE_TYPErr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX$``CELERY_AMQP_CONSUMER_ROUTING_KEY``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_AMQP_CONSUMER_ROUTING_KEYrr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``CELERY_QUEUES``r hUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r j.)r }r (hTj he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_QUEUESrr}r(hTUhUj ubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX%``CELERY_AMQP_PUBLISHER_ROUTING_KEY``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r }r!(hTjhe}r"(hg]hh]hi]hj]hm]uhUjhq]r#hzX!CELERY_AMQP_PUBLISHER_ROUTING_KEYr$r%}r&(hTUhUj ubahcj6ubaubahcjubj)r'}r((hTUhe}r)(hg]hh]hi]hj]hm]uhUjhq]r*h)r+}r,(hTX``CELERY_DEFAULT_ROUTING_KEY``r-hUj'h^hahchhe}r.(hg]hh]hi]hj]hm]uhoMhq]r/j.)r0}r1(hTj-he}r2(hg]hh]hi]hj]hm]uhUj+hq]r3hzXCELERY_DEFAULT_ROUTING_KEYr4r5}r6(hTUhUj0ubahcj6ubaubahcjubehcj)ubehcjPubehcjQubahcjRubahcjPubeubeubjx)r7}r8(hTXW.. _`deprecation timeline`: http://ask.github.com/celery/internals/deprecation.htmlhYKhUjh^hahcj}he}r9(j.j=hj]r:Udeprecation-timeliner;ahi]hg]hh]hm]r<hDauhoMhphhq]ubh)r=}r>(hTUhUjh^hahchhe}r?(j X*hj]hi]hg]hh]hm]uhoMhphhq]r@(h)rA}rB(hTXThe ``celery.task.rest`` module has been removed, use :mod:`celery.task.http` instead (as scheduled by the `deprecation timeline`_). hUj=h^hahchhe}rC(hg]hh]hi]hj]hm]uhoNhphhq]rDh)rE}rF(hTXThe ``celery.task.rest`` module has been removed, use :mod:`celery.task.http` instead (as scheduled by the `deprecation timeline`_).hUjAh^hahchhe}rG(hg]hh]hi]hj]hm]uhoMhq]rH(hzXThe rIrJ}rK(hTXThe hUjEubj.)rL}rM(hTX``celery.task.rest``he}rN(hg]hh]hi]hj]hm]uhUjEhq]rOhzXcelery.task.restrPrQ}rR(hTUhUjLubahcj6ubhzX module has been removed, use rSrT}rU(hTX module has been removed, use hUjEubje)rV}rW(hTX:mod:`celery.task.http`rXhUjEh^hahcjihe}rY(UreftypeXmodjkjlXcelery.task.httpU refdomainXpyrZhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r[j.)r\}r](hTjXhe}r^(hg]hh]r_(jwjZXpy-modr`ehi]hj]hm]uhUjVhq]rahzXcelery.task.httprbrc}rd(hTUhUj\ubahcj6ubaubhzX instead (as scheduled by the rerf}rg(hTX instead (as scheduled by the hUjEubh)rh}ri(hTX`deprecation timeline`_j+KhUjEhchhe}rj(UnameXdeprecation timelinej.j=hj]hi]hg]hh]hm]uhq]rkhzXdeprecation timelinerlrm}rn(hTUhUjhubaubhzX).rorp}rq(hTX).hUjEubeubaubh)rr}rs(hTXXIt's no longer allowed to skip the class name in loader names. (as scheduled by the `deprecation timeline`_): Assuming the implicit ``Loader`` class name is no longer supported, if you use e.g.:: CELERY_LOADER = "myapp.loaders" You need to include the loader class name, like this:: CELERY_LOADER = "myapp.loaders.Loader" hUj=h^hahchhe}rt(hg]hh]hi]hj]hm]uhoNhphhq]ru(h)rv}rw(hTXmIt's no longer allowed to skip the class name in loader names. (as scheduled by the `deprecation timeline`_):hUjrh^hahchhe}rx(hg]hh]hi]hj]hm]uhoM"hq]ry(hzXTIt's no longer allowed to skip the class name in loader names. (as scheduled by the rzr{}r|(hTXTIt's no longer allowed to skip the class name in loader names. (as scheduled by the hUjvubh)r}}r~(hTX`deprecation timeline`_j+KhUjvhchhe}r(UnameXdeprecation timelinej.j=hj]hi]hg]hh]hm]uhq]rhzXdeprecation timelinerr}r(hTUhUj}ubaubhzX):rr}r(hTX):hUjvubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjrhq]r(h)r}r(hTXUAssuming the implicit ``Loader`` class name is no longer supported, if you use e.g.::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM%hq]r(hzXAssuming the implicit rr}r(hTXAssuming the implicit hUjubj.)r}r(hTX ``Loader``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXLoaderrr}r(hTUhUjubahcj6ubhzX4 class name is no longer supported, if you use e.g.:rr}r(hTX4 class name is no longer supported, if you use e.g.:hUjubeubj)r}r(hTXCELERY_LOADER = "myapp.loaders"hUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoM(hq]rhzXCELERY_LOADER = "myapp.loaders"rr}r(hTUhUjubaubh)r}r(hTX6You need to include the loader class name, like this::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM*hq]rhzX5You need to include the loader class name, like this:rr}r(hTX5You need to include the loader class name, like this:hUjubaubj)r}r(hTX&CELERY_LOADER = "myapp.loaders.Loader"hUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoM,hq]rhzX&CELERY_LOADER = "myapp.loaders.Loader"rr}r(hTUhUjubaubehcjPubeubh)r}r(hTXk``CELERY_TASK_RESULT_EXPIRES`` now defaults to 1 day. Previous default setting was to expire in 5 days. hUj=h^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX5``CELERY_TASK_RESULT_EXPIRES`` now defaults to 1 day.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM.hq]r(j.)r}r(hTX``CELERY_TASK_RESULT_EXPIRES``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_TASK_RESULT_EXPIRESrr}r(hTUhUjubahcj6ubhzX now defaults to 1 day.rr}r(hTX now defaults to 1 day.hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX1Previous default setting was to expire in 5 days.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM0hq]rhzX1Previous default setting was to expire in 5 days.rr}r(hTjhUjubaubahcjPubeubh)r}r(hTXaAMQP backend: Don't use different values for `auto_delete`. This bug became visible with RabbitMQ 1.8.0, which no longer allows conflicting declarations for the auto_delete and durable settings. If you've already used celery with this backend chances are you have to delete the previous declaration:: $ camqadm exchange.delete celeryresults hUj=h^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX;AMQP backend: Don't use different values for `auto_delete`.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM2hq]r(hzX-AMQP backend: Don't use different values for rr}r(hTX-AMQP backend: Don't use different values for hUjubcdocutils.nodes title_reference r)r}r(hTX `auto_delete`he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX auto_deleterr}r(hTUhUjubahcUtitle_referencerubhzX.r}r(hTX.hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTXThis bug became visible with RabbitMQ 1.8.0, which no longer allows conflicting declarations for the auto_delete and durable settings.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM4hq]rhzXThis bug became visible with RabbitMQ 1.8.0, which no longer allows conflicting declarations for the auto_delete and durable settings.rr}r(hTjhUjubaubh)r}r(hTXiIf you've already used celery with this backend chances are you have to delete the previous declaration::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM7hq]rhzXhIf you've already used celery with this backend chances are you have to delete the previous declaration:rr}r(hTXhIf you've already used celery with this backend chances are you have to delete the previous declaration:hUjubaubj)r}r(hTX'$ camqadm exchange.delete celeryresultshUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoM:hq]rhzX'$ camqadm exchange.delete celeryresultsrr}r(hTUhUjubaubehcjPubeubh)r}r(hTXNow uses pickle instead of cPickle on Python versions <= 2.5 cPikle is broken in Python <= 2.5. It unsafely and incorrectly uses relative instead of absolute imports, so e.g:: exceptions.KeyError becomes:: celery.exceptions.KeyError Your best choice is to upgrade to Python 2.6, as while the pure pickle version has worse performance, it is the only safe option for older Python versions. hUj=h^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX<Now uses pickle instead of cPickle on Python versions <= 2.5rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM<hq]rhzX<Now uses pickle instead of cPickle on Python versions <= 2.5rr }r (hTjhUjubaubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTX"cPikle is broken in Python <= 2.5.rhUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoM>hq]rhzX"cPikle is broken in Python <= 2.5.rr}r(hTjhUjubaubh)r}r(hTXOIt unsafely and incorrectly uses relative instead of absolute imports, so e.g::hUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoM@hq]rhzXNIt unsafely and incorrectly uses relative instead of absolute imports, so e.g:rr}r(hTXNIt unsafely and incorrectly uses relative instead of absolute imports, so e.g:hUjubaubj)r}r(hTXexceptions.KeyErrorhUj hcjhe}r (jjhj]hi]hg]hh]hm]uhoMChq]r!hzXexceptions.KeyErrorr"r#}r$(hTUhUjubaubh)r%}r&(hTX becomes::hUj h^hahchhe}r'(hg]hh]hi]hj]hm]uhoMEhq]r(hzXbecomes:r)r*}r+(hTXbecomes:hUj%ubaubj)r,}r-(hTXcelery.exceptions.KeyErrorhUj hcjhe}r.(jjhj]hi]hg]hh]hm]uhoMGhq]r/hzXcelery.exceptions.KeyErrorr0r1}r2(hTUhUj,ubaubh)r3}r4(hTXYour best choice is to upgrade to Python 2.6, as while the pure pickle version has worse performance, it is the only safe option for older Python versions.r5hUj h^hahchhe}r6(hg]hh]hi]hj]hm]uhoMIhq]r7hzXYour best choice is to upgrade to Python 2.6, as while the pure pickle version has worse performance, it is the only safe option for older Python versions.r8r9}r:(hTj5hUj3ubaubehcjPubeubeubjx)r;}r<(hTX .. _120news:hUjh^hahcj}he}r=(hj]hi]hg]hh]hm]jjuhoMMhphhq]ubeubhV)r>}r?(hTUhYKhUj h^haUexpect_referenced_by_namer@}rAhEj;shchdhe}rB(hg]rCXnewsrDahh]hi]hj]rE(jUid5rFehm]rGhEauhoMPhphUexpect_referenced_by_idrH}rIjj;shq]rJ(hs)rK}rL(hTjhUj>h^hahchwhe}rM(hj]hi]hg]hh]hm]jjuhoMPhphhq]rNhzXNewsrOrP}rQ(hTjhUjKubaubh)rR}rS(hTUhUj>h^hahchhe}rT(j X*hj]hi]hg]hh]hm]uhoMRhphhq]rU(h)rV}rW(hTX**celeryev**: Curses Celery Monitor and Event Viewer. This is a simple monitor allowing you to see what tasks are executing in real-time and investigate tracebacks and results of ready tasks. It also enables you to set new rate limits and revoke tasks. Screenshot: .. image:: http://celeryproject.org/img/celeryevshotsm.jpg If you run ``celeryev`` with the ``-d`` switch it will act as an event dumper, simply dumping the events it receives to standard out:: $ celeryev -d -> celeryev: starting capture... casper.local [2010-06-04 10:42:07.020000] heartbeat casper.local [2010-06-04 10:42:14.750000] task received: tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} eta=2010-06-04T10:42:16.669290, retries=0 casper.local [2010-06-04 10:42:17.230000] task started tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} casper.local [2010-06-04 10:42:17.960000] task succeeded: tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} result=4, runtime=0.782663106918 The fields here are, in order: *sender hostname*, *timestamp*, *event type* and *additional event fields*. hUjRh^hahchhe}rX(hg]hh]hi]hj]hm]uhoNhphhq]rY(h)rZ}r[(hTX5**celeryev**: Curses Celery Monitor and Event Viewer.hUjVh^hahchhe}r\(hg]hh]hi]hj]hm]uhoMRhq]r](j)r^}r_(hTX **celeryev**he}r`(hg]hh]hi]hj]hm]uhUjZhq]rahzXceleryevrbrc}rd(hTUhUj^ubahcjubhzX): Curses Celery Monitor and Event Viewer.rerf}rg(hTX): Curses Celery Monitor and Event Viewer.hUjZubeubj:)rh}ri(hTUhe}rj(hg]hh]hi]hj]hm]uhUjVhq]rk(h)rl}rm(hTXThis is a simple monitor allowing you to see what tasks are executing in real-time and investigate tracebacks and results of ready tasks. It also enables you to set new rate limits and revoke tasks.rnhUjhh^hahchhe}ro(hg]hh]hi]hj]hm]uhoMThq]rphzXThis is a simple monitor allowing you to see what tasks are executing in real-time and investigate tracebacks and results of ready tasks. It also enables you to set new rate limits and revoke tasks.rqrr}rs(hTjnhUjlubaubh)rt}ru(hTX Screenshot:rvhUjhh^hahchhe}rw(hg]hh]hi]hj]hm]uhoMXhq]rxhzX Screenshot:ryrz}r{(hTjvhUjtubaubcdocutils.nodes image r|)r}}r~(hTX;.. image:: http://celeryproject.org/img/celeryevshotsm.jpg he}r(UuriX/http://celeryproject.org/img/celeryevshotsm.jpgrhj]hi]hg]hh]U candidatesr}rU?jshm]uhUjhhq]hcUimagerubh)r}r(hTXIf you run ``celeryev`` with the ``-d`` switch it will act as an event dumper, simply dumping the events it receives to standard out::hUjhh^hahchhe}r(hg]hh]hi]hj]hm]uhoM\hq]r(hzX If you run rr}r(hTX If you run hUjubj.)r}r(hTX ``celeryev``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXceleryevrr}r(hTUhUjubahcj6ubhzX with the rr}r(hTX with the hUjubj.)r}r(hTX``-d``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX-drr}r(hTUhUjubahcj6ubhzX^ switch it will act as an event dumper, simply dumping the events it receives to standard out:rr}r(hTX^ switch it will act as an event dumper, simply dumping the events it receives to standard out:hUjubeubj)r}r(hTX$ celeryev -d -> celeryev: starting capture... casper.local [2010-06-04 10:42:07.020000] heartbeat casper.local [2010-06-04 10:42:14.750000] task received: tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} eta=2010-06-04T10:42:16.669290, retries=0 casper.local [2010-06-04 10:42:17.230000] task started tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} casper.local [2010-06-04 10:42:17.960000] task succeeded: tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} result=4, runtime=0.782663106918 The fields here are, in order: *sender hostname*, *timestamp*, *event type* and *additional event fields*.hUjhhcjhe}r(jjhj]hi]hg]hh]hm]uhoM_hq]rhzX$ celeryev -d -> celeryev: starting capture... casper.local [2010-06-04 10:42:07.020000] heartbeat casper.local [2010-06-04 10:42:14.750000] task received: tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} eta=2010-06-04T10:42:16.669290, retries=0 casper.local [2010-06-04 10:42:17.230000] task started tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} casper.local [2010-06-04 10:42:17.960000] task succeeded: tasks.add(61a68756-27f4-4879-b816-3cf815672b0e) args=[2, 2] kwargs={} result=4, runtime=0.782663106918 The fields here are, in order: *sender hostname*, *timestamp*, *event type* and *additional event fields*.rr}r(hTUhUjubaubehcjPubeubh)r}r(hTXAMQP result backend: Now supports ``.ready()``, ``.successful()``, ``.result``, ``.status``, and even responds to changes in task state hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXAMQP result backend: Now supports ``.ready()``, ``.successful()``, ``.result``, ``.status``, and even responds to changes in task statehUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMnhq]r(hzX"AMQP result backend: Now supports rr}r(hTX"AMQP result backend: Now supports hUjubj.)r}r(hTX ``.ready()``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX.ready()rr}r(hTUhUjubahcj6ubhzX, rr}r(hTX, hUjubj.)r}r(hTX``.successful()``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX .successful()rr}r(hTUhUjubahcj6ubhzX, rr}r(hTX, hUjubj.)r}r(hTX ``.result``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX.resultrr}r(hTUhUjubahcj6ubhzX, rr}r(hTX, hUjubj.)r}r(hTX ``.status``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX.statusrr}r(hTUhUjubahcj6ubhzX,, and even responds to changes in task staterr}r(hTX,, and even responds to changes in task statehUjubeubaubh)r}r(hTXjNew user guides: * :doc:`userguide/workers` * :doc:`userguide/tasksets` * :doc:`userguide/routing` hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXNew user guides:rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMqhq]rhzXNew user guides:rr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTUhe}r(j X*hj]hi]hg]hh]hm]uhUjhq]r(h)r}r(hTX:doc:`userguide/workers`rhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTjhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMshq]rje)r}r(hTjhUjh^hahcjihe}r(UreftypeXdocrjkjlXuserguide/workersU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoMshq]rj.)r}r(hTjhe}r(hg]hh]r(jwjehi]hj]hm]uhUjhq]rhzXuserguide/workersrr}r(hTUhUjubahcj6ubaubaubahchubh)r}r(hTX:doc:`userguide/tasksets`rhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r (hTjhUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoMthq]r je)r }r (hTjhUjh^hahcjihe}r(UreftypeXdocrjkjlXuserguide/tasksetsU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoMthq]rj.)r}r(hTjhe}r(hg]hh]r(jwjehi]hj]hm]uhUj hq]rhzXuserguide/tasksetsrr}r(hTUhUjubahcj6ubaubaubahchubh)r}r(hTX:doc:`userguide/routing` he}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX:doc:`userguide/routing`rhUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoMuhq]r!je)r"}r#(hTjhUjh^hahcjihe}r$(UreftypeXdocr%jkjlXuserguide/routingU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoMuhq]r&j.)r'}r((hTjhe}r)(hg]hh]r*(jwj%ehi]hj]hm]uhUj"hq]r+hzXuserguide/routingr,r-}r.(hTUhUj'ubahcj6ubaubaubahchubehchubahcjPubeubh)r/}r0(hTXDceleryd: Standard out/error is now being redirected to the logfile. hUjRh^hahchhe}r1(hg]hh]hi]hj]hm]uhoNhphhq]r2h)r3}r4(hTXCceleryd: Standard out/error is now being redirected to the logfile.r5hUj/h^hahchhe}r6(hg]hh]hi]hj]hm]uhoMwhq]r7hzXCceleryd: Standard out/error is now being redirected to the logfile.r8r9}r:(hTj5hUj3ubaubaubh)r;}r<(hTX:mod:`billiard` has been moved back to the celery repository. ===================================== ===================================== **Module name** **celery equivalent** ===================================== ===================================== ``billiard.pool`` ``celery.concurrency.processes.pool`` ``billiard.serialization`` ``celery.serialization`` ``billiard.utils.functional`` ``celery.utils.functional`` ===================================== ===================================== The :mod:`billiard` distribution may be maintained, depending on interest. hUjRh^hahchhe}r=(hg]hh]hi]hj]hm]uhoNhphhq]r>(h)r?}r@(hTX=:mod:`billiard` has been moved back to the celery repository.hUj;h^hahchhe}rA(hg]hh]hi]hj]hm]uhoMyhq]rB(je)rC}rD(hTX:mod:`billiard`rEhUj?h^hahcjihe}rF(UreftypeXmodjkjlXbilliardU refdomainXpyrGhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMyhq]rHj.)rI}rJ(hTjEhe}rK(hg]hh]rL(jwjGXpy-modrMehi]hj]hm]uhUjChq]rNhzXbilliardrOrP}rQ(hTUhUjIubahcj6ubaubhzX. has been moved back to the celery repository.rRrS}rT(hTX. has been moved back to the celery repository.hUj?ubeubj:)rU}rV(hTUhe}rW(hg]hh]hi]hj]hm]uhUj;hq]rX(j)rY}rZ(hTUhe}r[(hg]hh]hi]hj]hm]uhUjUhq]r\j)r]}r^(hTUhe}r_(hj]hi]hg]hh]hm]UcolsKuhUjYhq]r`(j)ra}rb(hTUhe}rc(hj]hi]hg]hh]hm]UcolwidthK%uhUj]hq]hcjubj)rd}re(hTUhe}rf(hj]hi]hg]hh]hm]UcolwidthK%uhUj]hq]hcjubj)rg}rh(hTUhe}ri(hg]hh]hi]hj]hm]uhUj]hq]rjj)rk}rl(hTUhe}rm(hg]hh]hi]hj]hm]uhUjghq]rn(j)ro}rp(hTUhe}rq(hg]hh]hi]hj]hm]uhUjkhq]rrh)rs}rt(hTX**Module name**ruhUjoh^hahchhe}rv(hg]hh]hi]hj]hm]uhoM|hq]rwj)rx}ry(hTjuhe}rz(hg]hh]hi]hj]hm]uhUjshq]r{hzX Module namer|r}}r~(hTUhUjxubahcjubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjkhq]rh)r}r(hTX**celery equivalent**rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM|hq]rj)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelery equivalentrr}r(hTUhUjubahcjubaubahcjubehcj)ubahcj*ubj+)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUj]hq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``billiard.pool``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM~hq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX billiard.poolrr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX%``celery.concurrency.processes.pool``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM~hq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX!celery.concurrency.processes.poolrr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``billiard.serialization``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXbilliard.serializationrr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``celery.serialization``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelery.serializationrr}r(hTUhUjubahcj6ubaubahcjubehcj)ubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``billiard.utils.functional``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXbilliard.utils.functionalrr}r(hTUhUjubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX``celery.utils.functional``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelery.utils.functionalrr}r(hTUhUjubahcj6ubaubahcjubehcj)ubehcjPubehcjQubahcjRubh)r}r(hTXJThe :mod:`billiard` distribution may be maintained, depending on interest.hUjUh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXThe rr}r(hTXThe hUjubje)r}r(hTX:mod:`billiard`rhUjh^hahcjihe}r (UreftypeXmodjkjlXbilliardU refdomainXpyr hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r j.)r }r (hTjhe}r(hg]hh]r(jwj Xpy-modrehi]hj]hm]uhUjhq]rhzXbilliardrr}r(hTUhUj ubahcj6ubaubhzX7 distribution may be maintained, depending on interest.rr}r(hTX7 distribution may be maintained, depending on interest.hUjubeubehcjPubeubh)r}r(hTX'now depends on :mod:`carrot` >= 0.10.5 hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTX&now depends on :mod:`carrot` >= 0.10.5hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXnow depends on r r!}r"(hTXnow depends on hUjubje)r#}r$(hTX :mod:`carrot`r%hUjh^hahcjihe}r&(UreftypeXmodjkjlXcarrotU refdomainXpyr'hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r(j.)r)}r*(hTj%he}r+(hg]hh]r,(jwj'Xpy-modr-ehi]hj]hm]uhUj#hq]r.hzXcarrotr/r0}r1(hTUhUj)ubahcj6ubaubhzX >= 0.10.5r2r3}r4(hTX >= 0.10.5hUjubeubaubh)r5}r6(hTX now depends on :mod:`pyparsing` hUjRh^hahchhe}r7(hg]hh]hi]hj]hm]uhoNhphhq]r8h)r9}r:(hTXnow depends on :mod:`pyparsing`hUj5h^hahchhe}r;(hg]hh]hi]hj]hm]uhoMhq]r<(hzXnow depends on r=r>}r?(hTXnow depends on hUj9ubje)r@}rA(hTX:mod:`pyparsing`rBhUj9h^hahcjihe}rC(UreftypeXmodjkjlX pyparsingU refdomainXpyrDhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rEj.)rF}rG(hTjBhe}rH(hg]hh]rI(jwjDXpy-modrJehi]hj]hm]uhUj@hq]rKhzX pyparsingrLrM}rN(hTUhUjFubahcj6ubaubeubaubh)rO}rP(hTX9celeryd: Added ``--purge`` as an alias to ``--discard``. hUjRh^hahchhe}rQ(hg]hh]hi]hj]hm]uhoNhphhq]rRh)rS}rT(hTX8celeryd: Added ``--purge`` as an alias to ``--discard``.hUjOh^hahchhe}rU(hg]hh]hi]hj]hm]uhoMhq]rV(hzXceleryd: Added rWrX}rY(hTXceleryd: Added hUjSubj.)rZ}r[(hTX ``--purge``he}r\(hg]hh]hi]hj]hm]uhUjShq]r]hzX--purger^r_}r`(hTUhUjZubahcj6ubhzX as an alias to rarb}rc(hTX as an alias to hUjSubj.)rd}re(hTX ``--discard``he}rf(hg]hh]hi]hj]hm]uhUjShq]rghzX --discardrhri}rj(hTUhUjdubahcj6ubhzX.rk}rl(hTX.hUjSubeubaubh)rm}rn(hTX[celeryd: Ctrl+C (SIGINT) once does warm shutdown, hitting Ctrl+C twice forces termination. hUjRh^hahchhe}ro(hg]hh]hi]hj]hm]uhoNhphhq]rph)rq}rr(hTXZceleryd: Ctrl+C (SIGINT) once does warm shutdown, hitting Ctrl+C twice forces termination.rshUjmh^hahchhe}rt(hg]hh]hi]hj]hm]uhoMhq]ruhzXZceleryd: Ctrl+C (SIGINT) once does warm shutdown, hitting Ctrl+C twice forces termination.rvrw}rx(hTjshUjqubaubaubh)ry}rz(hTXAdded support for using complex crontab-expressions in periodic tasks. For example, you can now use:: >>> crontab(minute="*/15") or even:: >>> crontab(minute="*/30", hour="8-17,1-2", day_of_week="thu-fri") See :doc:`getting-started/periodic-tasks`. hUjRh^hahchhe}r{(hg]hh]hi]hj]hm]uhoNhphhq]r|(h)r}}r~(hTXeAdded support for using complex crontab-expressions in periodic tasks. For example, you can now use::hUjyh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXdAdded support for using complex crontab-expressions in periodic tasks. For example, you can now use:rr}r(hTXdAdded support for using complex crontab-expressions in periodic tasks. For example, you can now use:hUj}ubaubj)r}r(hTX>>> crontab(minute="*/15")hUjyhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzX>>> crontab(minute="*/15")rr}r(hTUhUjubaubh)r}r(hTX or even::hUjyh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXor even:rr}r(hTXor even:hUjubaubj)r}r(hTXB>>> crontab(minute="*/30", hour="8-17,1-2", day_of_week="thu-fri")hUjyhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzXB>>> crontab(minute="*/30", hour="8-17,1-2", day_of_week="thu-fri")rr}r(hTUhUjubaubh)r}r(hTX*See :doc:`getting-started/periodic-tasks`.hUjyh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXSee rr}r(hTXSee hUjubje)r}r(hTX%:doc:`getting-started/periodic-tasks`rhUjh^hahcjihe}r(UreftypeXdocrjkjlXgetting-started/periodic-tasksU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjehi]hj]hm]uhUjhq]rhzXgetting-started/periodic-tasksrr}r(hTUhUjubahcj6ubaubhzX.r}r(hTX.hUjubeubeubh)r}r(hTXWceleryd: Now waits for available pool processes before applying new tasks to the pool. This means it doesn't have to wait for dozens of tasks to finish at shutdown because it has applied prefetched tasks without having any pool processes available to immediately accept them. See http://github.com/ask/celery/issues/closed#issue/122 hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXVceleryd: Now waits for available pool processes before applying new tasks to the pool.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXVceleryd: Now waits for available pool processes before applying new tasks to the pool.rr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTXThis means it doesn't have to wait for dozens of tasks to finish at shutdown because it has applied prefetched tasks without having any pool processes available to immediately accept them.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXThis means it doesn't have to wait for dozens of tasks to finish at shutdown because it has applied prefetched tasks without having any pool processes available to immediately accept them.rr}r(hTjhUjubaubh)r}r(hTX8See http://github.com/ask/celery/issues/closed#issue/122hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXSee rr}r(hTXSee hUjubh)r}r(hTX4http://github.com/ask/celery/issues/closed#issue/122rhe}r(Urefurijhj]hi]hg]hh]hm]uhUjhq]rhzX4http://github.com/ask/celery/issues/closed#issue/122rr}r(hTUhUjubahchubeubehcjPubeubh)r}r(hTXNew built-in way to do task callbacks using :class:`~celery.task.sets.subtask`. See :doc:`userguide/tasksets` for more information. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXONew built-in way to do task callbacks using :class:`~celery.task.sets.subtask`.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzX,New built-in way to do task callbacks using rr}r(hTX,New built-in way to do task callbacks using hUjubje)r}r(hTX":class:`~celery.task.sets.subtask`rhUjh^hahcjihe}r(UreftypeXclassjkjlXcelery.task.sets.subtaskU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-classrehi]hj]hm]uhUjhq]rhzXsubtaskrr}r(hTUhUjubahcj6ubaubhzX.r}r(hTX.hUjubeubh)r}r(hTX3See :doc:`userguide/tasksets` for more information.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXSee rr}r(hTXSee hUjubje)r}r(hTX:doc:`userguide/tasksets`rhUjh^hahcjihe}r(UreftypeXdocrjkjlXuserguide/tasksetsU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjehi]hj]hm]uhUjhq]rhzXuserguide/tasksetsrr}r(hTUhUjubahcj6ubaubhzX for more information.rr }r (hTX for more information.hUjubeubeubh)r }r (hTX TaskSets can now contain several types of tasks. :class:`~celery.task.sets.TaskSet` has been refactored to use a new syntax, please see :doc:`userguide/tasksets` for more information. The previous syntax is still supported, but will be deprecated in version 1.4. hUjRh^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX0TaskSets can now contain several types of tasks.rhUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX0TaskSets can now contain several types of tasks.rr}r(hTjhUjubaubh)r}r(hTX:class:`~celery.task.sets.TaskSet` has been refactored to use a new syntax, please see :doc:`userguide/tasksets` for more information.hUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(je)r}r(hTX":class:`~celery.task.sets.TaskSet`rhUjh^hahcjihe}r(UreftypeXclassjkjlXcelery.task.sets.TaskSetU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r j.)r!}r"(hTjhe}r#(hg]hh]r$(jwjXpy-classr%ehi]hj]hm]uhUjhq]r&hzXTaskSetr'r(}r)(hTUhUj!ubahcj6ubaubhzX5 has been refactored to use a new syntax, please see r*r+}r,(hTX5 has been refactored to use a new syntax, please see hUjubje)r-}r.(hTX:doc:`userguide/tasksets`r/hUjh^hahcjihe}r0(UreftypeXdocr1jkjlXuserguide/tasksetsU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoMhq]r2j.)r3}r4(hTj/he}r5(hg]hh]r6(jwj1ehi]hj]hm]uhUj-hq]r7hzXuserguide/tasksetsr8r9}r:(hTUhUj3ubahcj6ubaubhzX for more information.r;r<}r=(hTX for more information.hUjubeubh)r>}r?(hTXNThe previous syntax is still supported, but will be deprecated in version 1.4.r@hUj h^hahchhe}rA(hg]hh]hi]hj]hm]uhoMhq]rBhzXNThe previous syntax is still supported, but will be deprecated in version 1.4.rCrD}rE(hTj@hUj>ubaubeubh)rF}rG(hTXcTaskSet failed() result was incorrect. See http://github.com/ask/celery/issues/closed#issue/132 hUjRh^hahchhe}rH(hg]hh]hi]hj]hm]uhoNhphhq]rI(h)rJ}rK(hTX&TaskSet failed() result was incorrect.rLhUjFh^hahchhe}rM(hg]hh]hi]hj]hm]uhoMhq]rNhzX&TaskSet failed() result was incorrect.rOrP}rQ(hTjLhUjJubaubj:)rR}rS(hTUhe}rT(hg]hh]hi]hj]hm]uhUjFhq]rUh)rV}rW(hTX8See http://github.com/ask/celery/issues/closed#issue/132hUjRh^hahchhe}rX(hg]hh]hi]hj]hm]uhoMhq]rY(hzXSee rZr[}r\(hTXSee hUjVubh)r]}r^(hTX4http://github.com/ask/celery/issues/closed#issue/132r_he}r`(Urefurij_hj]hi]hg]hh]hm]uhUjVhq]rahzX4http://github.com/ask/celery/issues/closed#issue/132rbrc}rd(hTUhUj]ubahchubeubahcjPubeubh)re}rf(hTXjNow creates different loggers per task class. See http://github.com/ask/celery/issues/closed#issue/129 hUjRh^hahchhe}rg(hg]hh]hi]hj]hm]uhoNhphhq]rh(h)ri}rj(hTX-Now creates different loggers per task class.rkhUjeh^hahchhe}rl(hg]hh]hi]hj]hm]uhoMhq]rmhzX-Now creates different loggers per task class.rnro}rp(hTjkhUjiubaubj:)rq}rr(hTUhe}rs(hg]hh]hi]hj]hm]uhUjehq]rth)ru}rv(hTX8See http://github.com/ask/celery/issues/closed#issue/129hUjqh^hahchhe}rw(hg]hh]hi]hj]hm]uhoMhq]rx(hzXSee ryrz}r{(hTXSee hUjuubh)r|}r}(hTX4http://github.com/ask/celery/issues/closed#issue/129r~he}r(Urefurij~hj]hi]hg]hh]hm]uhUjuhq]rhzX4http://github.com/ask/celery/issues/closed#issue/129rr}r(hTUhUj|ubahchubeubahcjPubeubh)r}r(hTX;Missing queue definitions are now created automatically. You can disable this using the CELERY_CREATE_MISSING_QUEUES setting. The missing queues are created with the following options:: CELERY_QUEUES[name] = {"exchange": name, "exchange_type": "direct", "routing_key": "name} This feature is added for easily setting up routing using the ``-Q`` option to ``celeryd``:: $ celeryd -Q video, image See the new routing section of the userguide for more information: :doc:`userguide/routing`. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX8Missing queue definitions are now created automatically.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX8Missing queue definitions are now created automatically.rr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTXDYou can disable this using the CELERY_CREATE_MISSING_QUEUES setting.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXDYou can disable this using the CELERY_CREATE_MISSING_QUEUES setting.rr}r(hTjhUjubaubh)r}r(hTX;The missing queues are created with the following options::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX:The missing queues are created with the following options:rr}r(hTX:The missing queues are created with the following options:hUjubaubj)r}r(hTXCELERY_QUEUES[name] = {"exchange": name, "exchange_type": "direct", "routing_key": "name}hUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzXCELERY_QUEUES[name] = {"exchange": name, "exchange_type": "direct", "routing_key": "name}rr}r(hTUhUjubaubehcjPubh)r}r(hTX\This feature is added for easily setting up routing using the ``-Q`` option to ``celeryd``::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzX>This feature is added for easily setting up routing using the rr}r(hTX>This feature is added for easily setting up routing using the hUjubj.)r}r(hTX``-Q``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX-Qrr}r(hTUhUjubahcj6ubhzX option to rr}r(hTX option to hUjubj.)r}r(hTX ``celeryd``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelerydrr}r(hTUhUjubahcj6ubhzX:r}r(hTX:hUjubeubj)r}r(hTX$ celeryd -Q video, imagehUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzX$ celeryd -Q video, imagerr}r(hTUhUjubaubh)r}r(hTX\See the new routing section of the userguide for more information: :doc:`userguide/routing`.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXCSee the new routing section of the userguide for more information: rr}r(hTXCSee the new routing section of the userguide for more information: hUjubje)r}r(hTX:doc:`userguide/routing`rhUjh^hahcjihe}r(UreftypeXdocrjkjlXuserguide/routingU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjehi]hj]hm]uhUjhq]rhzXuserguide/routingrr}r(hTUhUjubahcj6ubaubhzX.r}r(hTX.hUjubeubehcjPubeubh)r}r(hTXNew Task option: ``Task.queue`` If set, message options will be taken from the corresponding entry in ``CELERY_QUEUES``. ``exchange``, ``exchange_type`` and ``routing_key`` will be ignored hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXNew Task option: ``Task.queue``hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXNew Task option: rr}r(hTXNew Task option: hUjubj.)r}r(hTX``Task.queue``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX Task.queuerr}r(hTUhUjubahcj6ubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTXIf set, message options will be taken from the corresponding entry in ``CELERY_QUEUES``. ``exchange``, ``exchange_type`` and ``routing_key`` will be ignoredhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXFIf set, message options will be taken from the corresponding entry in rr}r(hTXFIf set, message options will be taken from the corresponding entry in hUjubj.)r}r(hTX``CELERY_QUEUES``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_QUEUESrr}r (hTUhUjubahcj6ubhzX. r r }r (hTX. hUjubj.)r }r(hTX ``exchange``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXexchangerr}r(hTUhUj ubahcj6ubhzX, rr}r(hTX, hUjubj.)r}r(hTX``exchange_type``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX exchange_typerr}r(hTUhUjubahcj6ubhzX and rr}r (hTX and hUjubj.)r!}r"(hTX``routing_key``he}r#(hg]hh]hi]hj]hm]uhUjhq]r$hzX routing_keyr%r&}r'(hTUhUj!ubahcj6ubhzX will be ignoredr(r)}r*(hTX will be ignoredhUjubeubahcjPubeubh)r+}r,(hTXAdded support for task soft and hard timelimits. New settings added: * CELERYD_TASK_TIME_LIMIT Hard time limit. The worker processing the task will be killed and replaced with a new one when this is exceeded. * CELERYD_SOFT_TASK_TIME_LIMIT Soft time limit. The celery.exceptions.SoftTimeLimitExceeded exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes. New command line arguments to celeryd added: ``--time-limit`` and ``--soft-time-limit``. What's left? This won't work on platforms not supporting signals (and specifically the ``SIGUSR1`` signal) yet. So an alternative the ability to disable the feature alltogether on nonconforming platforms must be implemented. Also when the hard time limit is exceeded, the task result should be a ``TimeLimitExceeded`` exception. hUjRh^hahchhe}r-(hg]hh]hi]hj]hm]uhoNhphhq]r.(h)r/}r0(hTX0Added support for task soft and hard timelimits.r1hUj+h^hahchhe}r2(hg]hh]hi]hj]hm]uhoMhq]r3hzX0Added support for task soft and hard timelimits.r4r5}r6(hTj1hUj/ubaubj:)r7}r8(hTUhe}r9(hg]hh]hi]hj]hm]uhUj+hq]r:(h)r;}r<(hTXNew settings added:r=hUj7h^hahchhe}r>(hg]hh]hi]hj]hm]uhoMhq]r?hzXNew settings added:r@rA}rB(hTj=hUj;ubaubh)rC}rD(hTUhe}rE(j X*hj]hi]hg]hh]hm]uhUj7hq]rF(h)rG}rH(hTXCELERYD_TASK_TIME_LIMIT Hard time limit. The worker processing the task will be killed and replaced with a new one when this is exceeded.he}rI(hg]hh]hi]hj]hm]uhUjChq]rJ(h)rK}rL(hTXCELERYD_TASK_TIME_LIMITrMhUjGh^hahchhe}rN(hg]hh]hi]hj]hm]uhoMhq]rOhzXCELERYD_TASK_TIME_LIMITrPrQ}rR(hTjMhUjKubaubj:)rS}rT(hTUhe}rU(hg]hh]hi]hj]hm]uhUjGhq]rVh)rW}rX(hTXqHard time limit. The worker processing the task will be killed and replaced with a new one when this is exceeded.rYhUjSh^hahchhe}rZ(hg]hh]hi]hj]hm]uhoMhq]r[hzXqHard time limit. The worker processing the task will be killed and replaced with a new one when this is exceeded.r\r]}r^(hTjYhUjWubaubahcjPubehchubh)r_}r`(hTXCELERYD_SOFT_TASK_TIME_LIMIT Soft time limit. The celery.exceptions.SoftTimeLimitExceeded exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes. he}ra(hg]hh]hi]hj]hm]uhUjChq]rb(h)rc}rd(hTXCELERYD_SOFT_TASK_TIME_LIMITrehUj_h^hahchhe}rf(hg]hh]hi]hj]hm]uhoMhq]rghzXCELERYD_SOFT_TASK_TIME_LIMITrhri}rj(hTjehUjcubaubj:)rk}rl(hTUhe}rm(hg]hh]hi]hj]hm]uhUj_hq]rnh)ro}rp(hTXSoft time limit. The celery.exceptions.SoftTimeLimitExceeded exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes.rqhUjkh^hahchhe}rr(hg]hh]hi]hj]hm]uhoMhq]rshzXSoft time limit. The celery.exceptions.SoftTimeLimitExceeded exception will be raised when this is exceeded. The task can catch this to e.g. clean up before the hard time limit comes.rtru}rv(hTjqhUjoubaubahcjPubehchubehchubh)rw}rx(hTXXNew command line arguments to celeryd added: ``--time-limit`` and ``--soft-time-limit``.hUj7h^hahchhe}ry(hg]hh]hi]hj]hm]uhoMhq]rz(hzX-New command line arguments to celeryd added: r{r|}r}(hTX-New command line arguments to celeryd added: hUjwubj.)r~}r(hTX``--time-limit``he}r(hg]hh]hi]hj]hm]uhUjwhq]rhzX --time-limitrr}r(hTUhUj~ubahcj6ubhzX and rr}r(hTX and hUjwubj.)r}r(hTX``--soft-time-limit``he}r(hg]hh]hi]hj]hm]uhUjwhq]rhzX--soft-time-limitrr}r(hTUhUjubahcj6ubhzX.r}r(hTX.hUjwubeubh)r}r(hTX What's left?rhUj7h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX What's left?rr}r(hTjhUjubaubh)r}r(hTXThis won't work on platforms not supporting signals (and specifically the ``SIGUSR1`` signal) yet. So an alternative the ability to disable the feature alltogether on nonconforming platforms must be implemented.hUj7h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXJThis won't work on platforms not supporting signals (and specifically the rr}r(hTXJThis won't work on platforms not supporting signals (and specifically the hUjubj.)r}r(hTX ``SIGUSR1``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXSIGUSR1rr}r(hTUhUjubahcj6ubhzX~ signal) yet. So an alternative the ability to disable the feature alltogether on nonconforming platforms must be implemented.rr}r(hTX~ signal) yet. So an alternative the ability to disable the feature alltogether on nonconforming platforms must be implemented.hUjubeubh)r}r(hTXgAlso when the hard time limit is exceeded, the task result should be a ``TimeLimitExceeded`` exception.hUj7h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXGAlso when the hard time limit is exceeded, the task result should be a rr}r(hTXGAlso when the hard time limit is exceeded, the task result should be a hUjubj.)r}r(hTX``TimeLimitExceeded``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXTimeLimitExceededrr}r(hTUhUjubahcj6ubhzX exception.rr}r(hTX exception.hUjubeubehcjPubeubh)r}r(hTXXTest suite is now passing without a running broker, using the carrot in-memory backend. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXWTest suite is now passing without a running broker, using the carrot in-memory backend.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXWTest suite is now passing without a running broker, using the carrot in-memory backend.rr}r(hTjhUjubaubaubh)r}r(hTXLog output is now available in colors. ===================================== ===================================== **Log level** **Color** ===================================== ===================================== ``DEBUG`` Blue ``WARNING`` Yellow ``CRITICAL`` Magenta ``ERROR`` Red ===================================== ===================================== This is only enabled when the log output is a tty. You can explicitly enable/disable this feature using the ``CELERYD_LOG_COLOR`` setting. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX&Log output is now available in colors.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX&Log output is now available in colors.rr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rj)r}r(hTUhe}r(hj]hi]hg]hh]hm]UcolsKuhUjhq]r(j)r}r(hTUhe}r(hj]hi]hg]hh]hm]UcolwidthK%uhUjhq]hcjubj)r}r(hTUhe}r(hj]hi]hg]hh]hm]UcolwidthK%uhUjhq]hcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX **Log level**rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX Log levelrr}r(hTUhUjubahcjubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX **Color**rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj)r}r(hTjhe}r(hg]hh]hi]hj]hm]uhUjhq]r hzXColorr r }r (hTUhUjubahcjubaubahcjubehcj)ubahcj*ubj+)r }r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUj hq]r(j)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX ``DEBUG``rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rj.)r}r(hTjhe}r (hg]hh]hi]hj]hm]uhUjhq]r!hzXDEBUGr"r#}r$(hTUhUjubahcj6ubaubahcjubj)r%}r&(hTUhe}r'(hg]hh]hi]hj]hm]uhUjhq]r(h)r)}r*(hTXBluer+hUj%h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r-hzXBluer.r/}r0(hTj+hUj)ubaubahcjubehcj)ubj)r1}r2(hTUhe}r3(hg]hh]hi]hj]hm]uhUj hq]r4(j)r5}r6(hTUhe}r7(hg]hh]hi]hj]hm]uhUj1hq]r8h)r9}r:(hTX ``WARNING``r;hUj5h^hahchhe}r<(hg]hh]hi]hj]hm]uhoMhq]r=j.)r>}r?(hTj;he}r@(hg]hh]hi]hj]hm]uhUj9hq]rAhzXWARNINGrBrC}rD(hTUhUj>ubahcj6ubaubahcjubj)rE}rF(hTUhe}rG(hg]hh]hi]hj]hm]uhUj1hq]rHh)rI}rJ(hTXYellowrKhUjEh^hahchhe}rL(hg]hh]hi]hj]hm]uhoMhq]rMhzXYellowrNrO}rP(hTjKhUjIubaubahcjubehcj)ubj)rQ}rR(hTUhe}rS(hg]hh]hi]hj]hm]uhUj hq]rT(j)rU}rV(hTUhe}rW(hg]hh]hi]hj]hm]uhUjQhq]rXh)rY}rZ(hTX ``CRITICAL``r[hUjUh^hahchhe}r\(hg]hh]hi]hj]hm]uhoMhq]r]j.)r^}r_(hTj[he}r`(hg]hh]hi]hj]hm]uhUjYhq]rahzXCRITICALrbrc}rd(hTUhUj^ubahcj6ubaubahcjubj)re}rf(hTUhe}rg(hg]hh]hi]hj]hm]uhUjQhq]rhh)ri}rj(hTXMagentarkhUjeh^hahchhe}rl(hg]hh]hi]hj]hm]uhoMhq]rmhzXMagentarnro}rp(hTjkhUjiubaubahcjubehcj)ubj)rq}rr(hTUhe}rs(hg]hh]hi]hj]hm]uhUj hq]rt(j)ru}rv(hTUhe}rw(hg]hh]hi]hj]hm]uhUjqhq]rxh)ry}rz(hTX ``ERROR``r{hUjuh^hahchhe}r|(hg]hh]hi]hj]hm]uhoMhq]r}j.)r~}r(hTj{he}r(hg]hh]hi]hj]hm]uhUjyhq]rhzXERRORrr}r(hTUhUj~ubahcj6ubaubahcjubj)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjqhq]rh)r}r(hTXRedrhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXRedrr}r(hTjhUjubaubahcjubehcj)ubehcjPubehcjQubahcjRubh)r}r(hTXThis is only enabled when the log output is a tty. You can explicitly enable/disable this feature using the ``CELERYD_LOG_COLOR`` setting.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXlThis is only enabled when the log output is a tty. You can explicitly enable/disable this feature using the rr}r(hTXlThis is only enabled when the log output is a tty. You can explicitly enable/disable this feature using the hUjubj.)r}r(hTX``CELERYD_LOG_COLOR``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERYD_LOG_COLORrr}r(hTUhUjubahcj6ubhzX setting.rr}r(hTX setting.hUjubeubehcjPubeubh)r}r(hTXAdded support for task router classes (like the django multidb routers) * New setting: CELERY_ROUTES This is a single, or a list of routers to traverse when sending tasks. Dicts in this list converts to a :class:`celery.routes.MapRoute` instance. Examples: >>> CELERY_ROUTES = {"celery.ping": "default", "mytasks.add": "cpu-bound", "video.encode": { "queue": "video", "exchange": "media" "routing_key": "media.video.encode"}} >>> CELERY_ROUTES = ("myapp.tasks.Router", {"celery.ping": "default}) Where ``myapp.tasks.Router`` could be: .. code-block:: python class Router(object): def route_for_task(self, task, args=None, kwargs=None): if task == "celery.ping": return "default" route_for_task may return a string or a dict. A string then means it's a queue name in ``CELERY_QUEUES``, a dict means it's a custom route. When sending tasks, the routers are consulted in order. The first router that doesn't return ``None`` is the route to use. The message options is then merged with the found route settings, where the routers settings have priority. Example if :func:`~celery.execute.apply_async` has these arguments:: >>> Task.apply_async(immediate=False, exchange="video", ... routing_key="video.compress") and a router returns:: {"immediate": True, "exchange": "urgent"} the final message options will be:: immediate=True, exchange="urgent", routing_key="video.compress" (and any default message options defined in the :class:`~celery.task.base.Task` class) hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXGAdded support for task router classes (like the django multidb routers)rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXGAdded support for task router classes (like the django multidb routers)rr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTUhe}r(j X*hj]hi]hg]hh]hm]uhUjhq]rh)r}r(hTXNew setting: CELERY_ROUTES he}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTXNew setting: CELERY_ROUTESrhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXNew setting: CELERY_ROUTESrr}r(hTjhUjubaubahchubahchubh)r}r(hTXThis is a single, or a list of routers to traverse when sending tasks. Dicts in this list converts to a :class:`celery.routes.MapRoute` instance.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXhThis is a single, or a list of routers to traverse when sending tasks. Dicts in this list converts to a rr}r(hTXhThis is a single, or a list of routers to traverse when sending tasks. Dicts in this list converts to a hUjubje)r}r(hTX:class:`celery.routes.MapRoute`rhUjh^hahcjihe}r(UreftypeXclassjkjlXcelery.routes.MapRouteU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-classrehi]hj]hm]uhUjhq]rhzXcelery.routes.MapRouterr}r(hTUhUjubahcj6ubaubhzX instance.rr}r(hTX instance.hUjubeubh)r}r(hTX Examples:rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX Examples:rr}r(hTjhUjubaubcdocutils.nodes doctest_block r)r}r(hTX>>> CELERY_ROUTES = {"celery.ping": "default", "mytasks.add": "cpu-bound", "video.encode": { "queue": "video", "exchange": "media" "routing_key": "media.video.encode"}}he}r(jjhj]hi]hg]hh]hm]uhUjhq]rhzX>>> CELERY_ROUTES = {"celery.ping": "default", "mytasks.add": "cpu-bound", "video.encode": { "queue": "video", "exchange": "media" "routing_key": "media.video.encode"}}rr}r(hTUhUjubahcU doctest_blockrubj)r}r(hTXZ>>> CELERY_ROUTES = ("myapp.tasks.Router", {"celery.ping": "default})he}r(jjhj]hi]hg]hh]hm]uhUjhq]rhzXZ>>> CELERY_ROUTES = ("myapp.tasks.Router", {"celery.ping": "default})rr}r(hTUhUjubahcjubh)r}r(hTX&Where ``myapp.tasks.Router`` could be:hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXWhere rr}r(hTXWhere hUjubj.)r}r(hTX``myapp.tasks.Router``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXmyapp.tasks.Routerrr}r(hTUhUjubahcj6ubhzX could be:rr}r(hTX could be:hUjubeubj)r}r(hTXclass Router(object): def route_for_task(self, task, args=None, kwargs=None): if task == "celery.ping": return "default"hUjh^hahcjhe}r(jjXpythonjjhj]hi]hg]hh]hm]uhoMhq]rhzXclass Router(object): def route_for_task(self, task, args=None, kwargs=None): if task == "celery.ping": return "default"rr }r (hTUhUjubaubh)r }r (hTXroute_for_task may return a string or a dict. A string then means it's a queue name in ``CELERY_QUEUES``, a dict means it's a custom route.hUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r(hzXWroute_for_task may return a string or a dict. A string then means it's a queue name in rr}r(hTXWroute_for_task may return a string or a dict. A string then means it's a queue name in hUj ubj.)r}r(hTX``CELERY_QUEUES``he}r(hg]hh]hi]hj]hm]uhUj hq]rhzX CELERY_QUEUESrr}r(hTUhUjubahcj6ubhzX#, a dict means it's a custom route.rr}r(hTX#, a dict means it's a custom route.hUj ubeubh)r}r(hTXWhen sending tasks, the routers are consulted in order. The first router that doesn't return ``None`` is the route to use. The message options is then merged with the found route settings, where the routers settings have priority.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzX]When sending tasks, the routers are consulted in order. The first router that doesn't return r r!}r"(hTX]When sending tasks, the routers are consulted in order. The first router that doesn't return hUjubj.)r#}r$(hTX``None``he}r%(hg]hh]hi]hj]hm]uhUjhq]r&hzXNoner'r(}r)(hTUhUj#ubahcj6ubhzX is the route to use. The message options is then merged with the found route settings, where the routers settings have priority.r*r+}r,(hTX is the route to use. The message options is then merged with the found route settings, where the routers settings have priority.hUjubeubh)r-}r.(hTXDExample if :func:`~celery.execute.apply_async` has these arguments::hUjh^hahchhe}r/(hg]hh]hi]hj]hm]uhoM!hq]r0(hzX Example if r1r2}r3(hTX Example if hUj-ubje)r4}r5(hTX#:func:`~celery.execute.apply_async`r6hUj-h^hahcjihe}r7(UreftypeXfuncjkjlXcelery.execute.apply_asyncU refdomainXpyr8hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM!hq]r9j.)r:}r;(hTj6he}r<(hg]hh]r=(jwj8Xpy-funcr>ehi]hj]hm]uhUj4hq]r?hzX apply_async()r@rA}rB(hTUhUj:ubahcj6ubaubhzX has these arguments:rCrD}rE(hTX has these arguments:hUj-ubeubj)rF}rG(hTXj>>> Task.apply_async(immediate=False, exchange="video", ... routing_key="video.compress")hUjhcjhe}rH(jjhj]hi]hg]hh]hm]uhoM#hq]rIhzXj>>> Task.apply_async(immediate=False, exchange="video", ... routing_key="video.compress")rJrK}rL(hTUhUjFubaubh)rM}rN(hTXand a router returns::hUjh^hahchhe}rO(hg]hh]hi]hj]hm]uhoM&hq]rPhzXand a router returns:rQrR}rS(hTXand a router returns:hUjMubaubj)rT}rU(hTX*{"immediate": True, "exchange": "urgent"}hUjhcjhe}rV(jjhj]hi]hg]hh]hm]uhoM(hq]rWhzX*{"immediate": True, "exchange": "urgent"}rXrY}rZ(hTUhUjTubaubh)r[}r\(hTX#the final message options will be::hUjh^hahchhe}r](hg]hh]hi]hj]hm]uhoM+hq]r^hzX"the final message options will be:r_r`}ra(hTX"the final message options will be:hUj[ubaubj)rb}rc(hTX?immediate=True, exchange="urgent", routing_key="video.compress"hUjhcjhe}rd(jjhj]hi]hg]hh]hm]uhoM-hq]rehzX?immediate=True, exchange="urgent", routing_key="video.compress"rfrg}rh(hTUhUjbubaubh)ri}rj(hTXV(and any default message options defined in the :class:`~celery.task.base.Task` class)hUjh^hahchhe}rk(hg]hh]hi]hj]hm]uhoM/hq]rl(hzX0(and any default message options defined in the rmrn}ro(hTX0(and any default message options defined in the hUjiubje)rp}rq(hTX:class:`~celery.task.base.Task`rrhUjih^hahcjihe}rs(UreftypeXclassjkjlXcelery.task.base.TaskU refdomainXpyrthj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM/hq]ruj.)rv}rw(hTjrhe}rx(hg]hh]ry(jwjtXpy-classrzehi]hj]hm]uhUjphq]r{hzXTaskr|r}}r~(hTUhUjvubahcj6ubaubhzX class)rr}r(hTX class)hUjiubeubehcjPubeubh)r}r(hTX]New Task handler called after the task returns: :meth:`~celery.task.base.Task.after_return`. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTX\New Task handler called after the task returns: :meth:`~celery.task.base.Task.after_return`.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM2hq]r(hzX0New Task handler called after the task returns: rr}r(hTX0New Task handler called after the task returns: hUjubje)r}r(hTX+:meth:`~celery.task.base.Task.after_return`rhUjh^hahcjihe}r(UreftypeXmethjkjlX"celery.task.base.Task.after_returnU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM2hq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-methrehi]hj]hm]uhUjhq]rhzXafter_return()rr}r(hTUhUjubahcj6ubaubhzX.r}r(hTX.hUjubeubaubh)r}r(hTX:class:`~celery.datastructures.ExceptionInfo` now passed to :meth:`~celery.task.base.Task.on_retry`/ :meth:`~celery.task.base.Task.on_failure` as einfo keyword argument. hUjRh^Nhchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rcdocutils.nodes definition_list r)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rcdocutils.nodes definition_list_item r)r}r(hTX:class:`~celery.datastructures.ExceptionInfo` now passed to :meth:`~celery.task.base.Task.on_retry`/ :meth:`~celery.task.base.Task.on_failure` as einfo keyword argument. hUjh^hahcUdefinition_list_itemrhe}r(hg]hh]hi]hj]hm]uhoM7hq]r(cdocutils.nodes term r)r}r(hTX;:class:`~celery.datastructures.ExceptionInfo` now passed tohUjh^hahcUtermrhe}r(hg]hh]hi]hj]hm]uhoM7hq]r(je)r}r(hTX-:class:`~celery.datastructures.ExceptionInfo`rhUjh^hahcjihe}r(UreftypeXclassjkjlX#celery.datastructures.ExceptionInfoU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM7hq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-classrehi]hj]hm]uhUjhq]rhzX ExceptionInforr}r(hTUhUjubahcj6ubaubhzX now passed torr}r(hTX now passed tohUjubeubcdocutils.nodes definition r)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTXm:meth:`~celery.task.base.Task.on_retry`/ :meth:`~celery.task.base.Task.on_failure` as einfo keyword argument.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM6hq]r(je)r}r(hTX':meth:`~celery.task.base.Task.on_retry`rhUjh^hahcjihe}r(UreftypeXmethjkjlXcelery.task.base.Task.on_retryU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM6hq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-methrehi]hj]hm]uhUjhq]rhzX on_retry()rr}r(hTUhUjubahcj6ubaubhzX/ rr}r(hTX/ hUjubje)r}r(hTX):meth:`~celery.task.base.Task.on_failure`rhUjh^hahcjihe}r(UreftypeXmethjkjlX celery.task.base.Task.on_failureU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM6hq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-methrehi]hj]hm]uhUjhq]rhzX on_failure()rr}r(hTUhUjubahcj6ubaubhzX as einfo keyword argument.rr}r(hTX as einfo keyword argument.hUjubeubahcU definitionrubeubahcUdefinition_listrubaubh)r}r(hTXceleryd: Added ``CELERYD_MAX_TASKS_PER_CHILD`` / :option:`--maxtasksperchild` Defines the maximum number of tasks a pool worker can process before the process is terminated and replaced by a new one. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXMceleryd: Added ``CELERYD_MAX_TASKS_PER_CHILD`` / :option:`--maxtasksperchild`hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM9hq]r(hzXceleryd: Added rr}r(hTXceleryd: Added hUjubj.)r}r(hTX``CELERYD_MAX_TASKS_PER_CHILD``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERYD_MAX_TASKS_PER_CHILDrr}r(hTUhUjubahcj6ubhzX / rr}r(hTX / hUjubje)r }r (hTX:option:`--maxtasksperchild`r hUjh^hahcjihe}r (UreftypeXoptionjkjlX--maxtasksperchildU refdomainXstdr U refprogramrNhj]hi]U refexplicithg]hh]hm]jnjouhoM9hq]rcsphinx.addnodes literal_emphasis r)r}r(hTj he}r(hg]hh]r(jwj X std-optionrehi]hj]hm]uhUj hq]rhzX--maxtasksperchildrr}r(hTUhUjubahcUliteral_emphasisrubaubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r (hTXyDefines the maximum number of tasks a pool worker can process before the process is terminated and replaced by a new one.r!hUjh^hahchhe}r"(hg]hh]hi]hj]hm]uhoM<hq]r#hzXyDefines the maximum number of tasks a pool worker can process before the process is terminated and replaced by a new one.r$r%}r&(hTj!hUjubaubahcjPubeubh)r'}r((hTXRevoked tasks now marked with state ``REVOKED``, and ``result.get()`` will now raise :exc:`~celery.exceptions.TaskRevokedError`. hUjRh^hahchhe}r)(hg]hh]hi]hj]hm]uhoNhphhq]r*h)r+}r,(hTXRevoked tasks now marked with state ``REVOKED``, and ``result.get()`` will now raise :exc:`~celery.exceptions.TaskRevokedError`.hUj'h^hahchhe}r-(hg]hh]hi]hj]hm]uhoM?hq]r.(hzX$Revoked tasks now marked with state r/r0}r1(hTX$Revoked tasks now marked with state hUj+ubj.)r2}r3(hTX ``REVOKED``he}r4(hg]hh]hi]hj]hm]uhUj+hq]r5hzXREVOKEDr6r7}r8(hTUhUj2ubahcj6ubhzX, and r9r:}r;(hTX, and hUj+ubj.)r<}r=(hTX``result.get()``he}r>(hg]hh]hi]hj]hm]uhUj+hq]r?hzX result.get()r@rA}rB(hTUhUj<ubahcj6ubhzX will now raise rCrD}rE(hTX will now raise hUj+ubje)rF}rG(hTX*:exc:`~celery.exceptions.TaskRevokedError`rHhUj+h^hahcjihe}rI(UreftypeXexcjkjlX"celery.exceptions.TaskRevokedErrorU refdomainXpyrJhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM?hq]rKj.)rL}rM(hTjHhe}rN(hg]hh]rO(jwjJXpy-excrPehi]hj]hm]uhUjFhq]rQhzXTaskRevokedErrorrRrS}rT(hTUhUjLubahcj6ubaubhzX.rU}rV(hTX.hUj+ubeubaubh)rW}rX(hTX8:func:`celery.task.control.ping` now works as expected. hUjRh^hahchhe}rY(hg]hh]hi]hj]hm]uhoNhphhq]rZh)r[}r\(hTX7:func:`celery.task.control.ping` now works as expected.hUjWh^hahchhe}r](hg]hh]hi]hj]hm]uhoMBhq]r^(je)r_}r`(hTX :func:`celery.task.control.ping`rahUj[h^hahcjihe}rb(UreftypeXfuncjkjlXcelery.task.control.pingU refdomainXpyrchj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMBhq]rdj.)re}rf(hTjahe}rg(hg]hh]rh(jwjcXpy-funcriehi]hj]hm]uhUj_hq]rjhzXcelery.task.control.ping()rkrl}rm(hTUhUjeubahcj6ubaubhzX now works as expected.rnro}rp(hTX now works as expected.hUj[ubeubaubh)rq}rr(hTXl``apply(throw=True)`` / ``CELERY_EAGER_PROPAGATES_EXCEPTIONS``: Makes eager execution re-raise task errors. hUjRh^hahchhe}rs(hg]hh]hi]hj]hm]uhoNhphhq]rth)ru}rv(hTXk``apply(throw=True)`` / ``CELERY_EAGER_PROPAGATES_EXCEPTIONS``: Makes eager execution re-raise task errors.hUjqh^hahchhe}rw(hg]hh]hi]hj]hm]uhoMDhq]rx(j.)ry}rz(hTX``apply(throw=True)``he}r{(hg]hh]hi]hj]hm]uhUjuhq]r|hzXapply(throw=True)r}r~}r(hTUhUjyubahcj6ubhzX / rr}r(hTX / hUjuubj.)r}r(hTX&``CELERY_EAGER_PROPAGATES_EXCEPTIONS``he}r(hg]hh]hi]hj]hm]uhUjuhq]rhzX"CELERY_EAGER_PROPAGATES_EXCEPTIONSrr}r(hTUhUjubahcj6ubhzX-: Makes eager execution re-raise task errors.rr}r(hTX-: Makes eager execution re-raise task errors.hUjuubeubaubh)r}r(hTXfNew signal: :data:`~celery.signals.worker_process_init`: Sent inside the pool worker process at init. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXeNew signal: :data:`~celery.signals.worker_process_init`: Sent inside the pool worker process at init.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMGhq]r(hzX New signal: rr}r(hTX New signal: hUjubje)r}r(hTX+:data:`~celery.signals.worker_process_init`rhUjh^hahcjihe}r(UreftypeXdatajkjlX"celery.signals.worker_process_initU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMGhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-datarehi]hj]hm]uhUjhq]rhzXworker_process_initrr}r(hTUhUjubahcj6ubaubhzX.: Sent inside the pool worker process at init.rr}r(hTX.: Sent inside the pool worker process at init.hUjubeubaubh)r}r(hTXYceleryd :option:`-Q` option: Ability to specifiy list of queues to use, disabling other configured queues. For example, if ``CELERY_QUEUES`` defines four queues: ``image``, ``video``, ``data`` and ``default``, the following command would make celeryd only consume from the ``image`` and ``video`` queues:: $ celeryd -Q image,video hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXjceleryd :option:`-Q` option: Ability to specifiy list of queues to use, disabling other configured queues.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMJhq]r(hzXceleryd rr}r(hTXceleryd hUjubje)r}r(hTX :option:`-Q`rhUjh^hahcjihe}r(UreftypeXoptionjkjlX-QU refdomainXstdrjNhj]hi]U refexplicithg]hh]hm]jnjouhoMJhq]rj)r}r(hTjhe}r(hg]hh]r(jwjX std-optionrehi]hj]hm]uhUjhq]rhzX-Qrr}r(hTUhUjubahcjubaubhzXV option: Ability to specifiy list of queues to use, disabling other configured queues.rr}r(hTXV option: Ability to specifiy list of queues to use, disabling other configured queues.hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]r(h)r}r(hTXFor example, if ``CELERY_QUEUES`` defines four queues: ``image``, ``video``, ``data`` and ``default``, the following command would make celeryd only consume from the ``image`` and ``video`` queues::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMMhq]r(hzXFor example, if rr}r(hTXFor example, if hUjubj.)r}r(hTX``CELERY_QUEUES``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_QUEUESrr}r(hTUhUjubahcj6ubhzX defines four queues: rr}r(hTX defines four queues: hUjubj.)r}r(hTX ``image``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXimagerr}r(hTUhUjubahcj6ubhzX, rr}r(hTX, hUjubj.)r}r(hTX ``video``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXvideorr}r(hTUhUjubahcj6ubhzX, rr}r(hTX, hUjubj.)r}r(hTX``data``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXdatarr}r(hTUhUjubahcj6ubhzX and rr}r(hTX and hUjubj.)r}r(hTX ``default``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXdefaultrr}r(hTUhUjubahcj6ubhzXA, the following command would make celeryd only consume from the rr}r(hTXA, the following command would make celeryd only consume from the hUjubj.)r}r(hTX ``image``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXimagerr }r (hTUhUjubahcj6ubhzX and r r }r (hTX and hUjubj.)r}r(hTX ``video``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXvideorr}r(hTUhUjubahcj6ubhzX queues:rr}r(hTX queues:hUjubeubj)r}r(hTX$ celeryd -Q image,videohUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMQhq]rhzX$ celeryd -Q image,videorr}r(hTUhUjubaubehcjPubeubh)r}r (hTXceleryd: New return value for the ``revoke`` control command: Now returns:: {"ok": "task $id revoked"} instead of ``True``. hUjRh^hahchhe}r!(hg]hh]hi]hj]hm]uhoNhphhq]r"(h)r#}r$(hTX=celeryd: New return value for the ``revoke`` control command:hUjh^hahchhe}r%(hg]hh]hi]hj]hm]uhoMShq]r&(hzX"celeryd: New return value for the r'r(}r)(hTX"celeryd: New return value for the hUj#ubj.)r*}r+(hTX ``revoke``he}r,(hg]hh]hi]hj]hm]uhUj#hq]r-hzXrevoker.r/}r0(hTUhUj*ubahcj6ubhzX control command:r1r2}r3(hTX control command:hUj#ubeubj:)r4}r5(hTUhe}r6(hg]hh]hi]hj]hm]uhUjhq]r7(h)r8}r9(hTX Now returns::hUj4h^hahchhe}r:(hg]hh]hi]hj]hm]uhoMUhq]r;hzX Now returns:r<r=}r>(hTX Now returns:hUj8ubaubj)r?}r@(hTX{"ok": "task $id revoked"}hUj4hcjhe}rA(jjhj]hi]hg]hh]hm]uhoMWhq]rBhzX{"ok": "task $id revoked"}rCrD}rE(hTUhUj?ubaubh)rF}rG(hTXinstead of ``True``.hUj4h^hahchhe}rH(hg]hh]hi]hj]hm]uhoMYhq]rI(hzX instead of rJrK}rL(hTX instead of hUjFubj.)rM}rN(hTX``True``he}rO(hg]hh]hi]hj]hm]uhUjFhq]rPhzXTruerQrR}rS(hTUhUjMubahcj6ubhzX.rT}rU(hTX.hUjFubeubehcjPubeubh)rV}rW(hTXceleryd: Can now enable/disable events using remote control Example usage: >>> from celery.task.control import broadcast >>> broadcast("enable_events") >>> broadcast("disable_events") hUjRh^hahchhe}rX(hg]hh]hi]hj]hm]uhoNhphhq]rY(h)rZ}r[(hTX;celeryd: Can now enable/disable events using remote controlr\hUjVh^hahchhe}r](hg]hh]hi]hj]hm]uhoM[hq]r^hzX;celeryd: Can now enable/disable events using remote controlr_r`}ra(hTj\hUjZubaubj:)rb}rc(hTUhe}rd(hg]hh]hi]hj]hm]uhUjVhq]re(h)rf}rg(hTXExample usage:rhhUjbh^hahchhe}ri(hg]hh]hi]hj]hm]uhoM]hq]rjhzXExample usage:rkrl}rm(hTjhhUjfubaubj)rn}ro(hTXl>>> from celery.task.control import broadcast >>> broadcast("enable_events") >>> broadcast("disable_events")he}rp(jjhj]hi]hg]hh]hm]uhUjbhq]rqhzXl>>> from celery.task.control import broadcast >>> broadcast("enable_events") >>> broadcast("disable_events")rrrs}rt(hTUhUjnubahcjubehcjPubeubh)ru}rv(hTXRemoved top-level tests directory. Test config now in celery.tests.config This means running the unittests doesn't require any special setup. ``celery/tests/__init__`` now configures the ``CELERY_CONFIG_MODULE`` and ``CELERY_LOADER``, so when ``nosetests`` imports that, the unit test environment is all set up. Before you run the tests you need to install the test requirements:: $ pip install -r contrib/requirements/test.txt Running all tests:: $ nosetests Specifying the tests to run:: $ nosetests celery.tests.test_task Producing HTML coverage:: $ nosetests --with-coverage3 The coverage output is then located in ``celery/tests/cover/index.html``. hUjRh^hahchhe}rw(hg]hh]hi]hj]hm]uhoNhphhq]rx(h)ry}rz(hTXIRemoved top-level tests directory. Test config now in celery.tests.configr{hUjuh^hahchhe}r|(hg]hh]hi]hj]hm]uhoMchq]r}hzXIRemoved top-level tests directory. Test config now in celery.tests.configr~r}r(hTj{hUjyubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjuhq]r(h)r}r(hTXThis means running the unittests doesn't require any special setup. ``celery/tests/__init__`` now configures the ``CELERY_CONFIG_MODULE`` and ``CELERY_LOADER``, so when ``nosetests`` imports that, the unit test environment is all set up.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMehq]r(hzXDThis means running the unittests doesn't require any special setup. rr}r(hTXDThis means running the unittests doesn't require any special setup. hUjubj.)r}r(hTX``celery/tests/__init__``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelery/tests/__init__rr}r(hTUhUjubahcj6ubhzX now configures the rr}r(hTX now configures the hUjubj.)r}r(hTX``CELERY_CONFIG_MODULE``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXCELERY_CONFIG_MODULErr}r(hTUhUjubahcj6ubhzX and rr}r(hTX and hUjubj.)r}r(hTX``CELERY_LOADER``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX CELERY_LOADERrr}r(hTUhUjubahcj6ubhzX , so when rr}r(hTX , so when hUjubj.)r}r(hTX ``nosetests``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX nosetestsrr}r(hTUhUjubahcj6ubhzX7 imports that, the unit test environment is all set up.rr}r(hTX7 imports that, the unit test environment is all set up.hUjubeubh)r}r(hTXDBefore you run the tests you need to install the test requirements::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMjhq]rhzXCBefore you run the tests you need to install the test requirements:rr}r(hTXCBefore you run the tests you need to install the test requirements:hUjubaubj)r}r(hTX.$ pip install -r contrib/requirements/test.txthUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMlhq]rhzX.$ pip install -r contrib/requirements/test.txtrr}r(hTUhUjubaubh)r}r(hTXRunning all tests::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMnhq]rhzXRunning all tests:rr}r(hTXRunning all tests:hUjubaubj)r}r(hTX $ nosetestshUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMphq]rhzX $ nosetestsrr}r(hTUhUjubaubh)r}r(hTXSpecifying the tests to run::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMrhq]rhzXSpecifying the tests to run:rr}r(hTXSpecifying the tests to run:hUjubaubj)r}r(hTX"$ nosetests celery.tests.test_taskhUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMthq]rhzX"$ nosetests celery.tests.test_taskrr}r(hTUhUjubaubh)r}r(hTXProducing HTML coverage::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMvhq]rhzXProducing HTML coverage:rr}r(hTXProducing HTML coverage:hUjubaubj)r}r(hTX$ nosetests --with-coverage3hUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMxhq]rhzX$ nosetests --with-coverage3rr}r(hTUhUjubaubh)r}r(hTXIThe coverage output is then located in ``celery/tests/cover/index.html``.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMzhq]r(hzX'The coverage output is then located in rr}r(hTX'The coverage output is then located in hUjubj.)r}r(hTX!``celery/tests/cover/index.html``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXcelery/tests/cover/index.htmlrr}r(hTUhUjubahcj6ubhzX.r}r(hTX.hUjubeubehcjPubeubh)r}r(hTX?celeryd: New option ``--version``: Dump version info and exit. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTX>celeryd: New option ``--version``: Dump version info and exit.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM|hq]r(hzXceleryd: New option rr}r(hTXceleryd: New option hUjubj.)r}r(hTX ``--version``he}r (hg]hh]hi]hj]hm]uhUjhq]r hzX --versionr r }r (hTUhUjubahcj6ubhzX: Dump version info and exit.rr}r(hTX: Dump version info and exit.hUjubeubaubh)r}r(hTXd:mod:`celeryd-multi `: Tool for shell scripts to start multiple workers. hUjRh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXc:mod:`celeryd-multi `: Tool for shell scripts to start multiple workers.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM~hq]r(je)r}r(hTX0:mod:`celeryd-multi `rhUjh^hahcjihe}r(UreftypeXmodjkjlXceleryd.bin.celeryd_multiU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM~hq]rj.)r}r (hTjhe}r!(hg]hh]r"(jwjXpy-modr#ehi]hj]hm]uhUjhq]r$hzX celeryd-multir%r&}r'(hTUhUjubahcj6ubaubhzX3: Tool for shell scripts to start multiple workers.r(r)}r*(hTX3: Tool for shell scripts to start multiple workers.hUjubeubaubeubj:)r+}r,(hTUhUj>h^hahcjPhe}r-(hg]hh]hi]hj]hm]uhoNhphhq]r.(h)r/}r0(hTXSome examples::hUj+h^hahchhe}r1(hg]hh]hi]hj]hm]uhoMhq]r2hzXSome examples:r3r4}r5(hTXSome examples:hUj/ubaubj)r6}r7(hTXc# Advanced example with 10 workers: # * Three of the workers processes the images and video queue # * Two of the workers processes the data queue with loglevel DEBUG # * the rest processes the default' queue. $ celeryd-multi start 10 -l INFO -Q:1-3 images,video -Q:4,5:data -Q default -L:4,5 DEBUG # get commands to start 10 workers, with 3 processes each $ celeryd-multi start 3 -c 3 celeryd -n celeryd1.myhost -c 3 celeryd -n celeryd2.myhost -c 3 celeryd- n celeryd3.myhost -c 3 # start 3 named workers $ celeryd-multi start image video data -c 3 celeryd -n image.myhost -c 3 celeryd -n video.myhost -c 3 celeryd -n data.myhost -c 3 # specify custom hostname $ celeryd-multi start 2 -n worker.example.com -c 3 celeryd -n celeryd1.worker.example.com -c 3 celeryd -n celeryd2.worker.example.com -c 3 # Additionl options are added to each celeryd', # but you can also modify the options for ranges of or single workers # 3 workers: Two with 3 processes, and one with 10 processes. $ celeryd-multi start 3 -c 3 -c:1 10 celeryd -n celeryd1.myhost -c 10 celeryd -n celeryd2.myhost -c 3 celeryd -n celeryd3.myhost -c 3 # can also specify options for named workers $ celeryd-multi start image video data -c 3 -c:image 10 celeryd -n image.myhost -c 10 celeryd -n video.myhost -c 3 celeryd -n data.myhost -c 3 # ranges and lists of workers in options is also allowed: # (-c:1-3 can also be written as -c:1,2,3) $ celeryd-multi start 5 -c 3 -c:1-3 10 celeryd-multi -n celeryd1.myhost -c 10 celeryd-multi -n celeryd2.myhost -c 10 celeryd-multi -n celeryd3.myhost -c 10 celeryd-multi -n celeryd4.myhost -c 3 celeryd-multi -n celeryd5.myhost -c 3 # lists also works with named workers $ celeryd-multi start foo bar baz xuzzy -c 3 -c:foo,bar,baz 10 celeryd-multi -n foo.myhost -c 10 celeryd-multi -n bar.myhost -c 10 celeryd-multi -n baz.myhost -c 10 celeryd-multi -n xuzzy.myhost -c 3hUj+hcjhe}r8(jjhj]hi]hg]hh]hm]uhoMhq]r9hzXc# Advanced example with 10 workers: # * Three of the workers processes the images and video queue # * Two of the workers processes the data queue with loglevel DEBUG # * the rest processes the default' queue. $ celeryd-multi start 10 -l INFO -Q:1-3 images,video -Q:4,5:data -Q default -L:4,5 DEBUG # get commands to start 10 workers, with 3 processes each $ celeryd-multi start 3 -c 3 celeryd -n celeryd1.myhost -c 3 celeryd -n celeryd2.myhost -c 3 celeryd- n celeryd3.myhost -c 3 # start 3 named workers $ celeryd-multi start image video data -c 3 celeryd -n image.myhost -c 3 celeryd -n video.myhost -c 3 celeryd -n data.myhost -c 3 # specify custom hostname $ celeryd-multi start 2 -n worker.example.com -c 3 celeryd -n celeryd1.worker.example.com -c 3 celeryd -n celeryd2.worker.example.com -c 3 # Additionl options are added to each celeryd', # but you can also modify the options for ranges of or single workers # 3 workers: Two with 3 processes, and one with 10 processes. $ celeryd-multi start 3 -c 3 -c:1 10 celeryd -n celeryd1.myhost -c 10 celeryd -n celeryd2.myhost -c 3 celeryd -n celeryd3.myhost -c 3 # can also specify options for named workers $ celeryd-multi start image video data -c 3 -c:image 10 celeryd -n image.myhost -c 10 celeryd -n video.myhost -c 3 celeryd -n data.myhost -c 3 # ranges and lists of workers in options is also allowed: # (-c:1-3 can also be written as -c:1,2,3) $ celeryd-multi start 5 -c 3 -c:1-3 10 celeryd-multi -n celeryd1.myhost -c 10 celeryd-multi -n celeryd2.myhost -c 10 celeryd-multi -n celeryd3.myhost -c 10 celeryd-multi -n celeryd4.myhost -c 3 celeryd-multi -n celeryd5.myhost -c 3 # lists also works with named workers $ celeryd-multi start foo bar baz xuzzy -c 3 -c:foo,bar,baz 10 celeryd-multi -n foo.myhost -c 10 celeryd-multi -n bar.myhost -c 10 celeryd-multi -n baz.myhost -c 10 celeryd-multi -n xuzzy.myhost -c 3r:r;}r<(hTUhUj6ubaubeubh)r=}r>(hTUhUj>h^hahchhe}r?(j X*hj]hi]hg]hh]hm]uhoMhphhq]r@(h)rA}rB(hTXnThe worker now calls the result backends ``process_cleanup`` method *after* task execution instead of before. hUj=h^hahchhe}rC(hg]hh]hi]hj]hm]uhoNhphhq]rDh)rE}rF(hTXmThe worker now calls the result backends ``process_cleanup`` method *after* task execution instead of before.hUjAh^hahchhe}rG(hg]hh]hi]hj]hm]uhoMhq]rH(hzX)The worker now calls the result backends rIrJ}rK(hTX)The worker now calls the result backends hUjEubj.)rL}rM(hTX``process_cleanup``he}rN(hg]hh]hi]hj]hm]uhUjEhq]rOhzXprocess_cleanuprPrQ}rR(hTUhUjLubahcj6ubhzX method rSrT}rU(hTX method hUjEubj )rV}rW(hTX*after*he}rX(hg]hh]hi]hj]hm]uhUjEhq]rYhzXafterrZr[}r\(hTUhUjVubahcj ubhzX" task execution instead of before.r]r^}r_(hTX" task execution instead of before.hUjEubeubaubh)r`}ra(hTX'AMQP result backend now supports Pika. hUj=h^hahchhe}rb(hg]hh]hi]hj]hm]uhoNhphhq]rch)rd}re(hTX&AMQP result backend now supports Pika.rfhUj`h^hahchhe}rg(hg]hh]hi]hj]hm]uhoMhq]rhhzX&AMQP result backend now supports Pika.rirj}rk(hTjfhUjdubaubaubeubeubeubhV)rl}rm(hTUhUh\h^hahchdhe}rn(hg]hh]hi]hj]rojahm]rphauhoMhphhq]rq(hs)rr}rs(hTjhUjlh^hahchwhe}rt(hj]hi]hg]hh]hm]jjuhoMhphhq]ruhzX1.0.6rvrw}rx(hTjhUjrubaubj)ry}rz(hTUhUjlh^hahcjhe}r{(hg]hh]hi]hj]hm]uhoMhphhq]r|j)r}}r~(hTUhUjyh^hahcjhe}r(hg]hh]hi]hj]hm]uhoMhphhq]r(j)r}r(hTX release-daterhe}r(hg]hh]hi]hj]hm]uhUj}hq]rhzX release-daterr}r(hTjhUjubahcjubj)r}r(hTX2010-06-30 09:57 A.M CEST he}r(hg]hh]hi]hj]hm]uhUj}hq]rh)r}r(hTX2010-06-30 09:57 A.M CESTrhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX2010-06-30 09:57 A.M CESTrr}r(hTjhUjubaubahcjubeubaubh)r}r(hTUhUjlh^hahchhe}r(j X*hj]hi]hg]hh]hm]uhoMhphhq]rh)r}r(hTXZRabbitMQ 1.8.0 has extended their exchange equivalence tests to include ``auto_delete`` and ``durable``. This broke the AMQP backend. If you've already used the AMQP backend this means you have to delete the previous definitions:: $ camqadm exchange.delete celeryresults or:: $ python manage.py camqadm exchange.delete celeryresults hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXRabbitMQ 1.8.0 has extended their exchange equivalence tests to include ``auto_delete`` and ``durable``. This broke the AMQP backend.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXHRabbitMQ 1.8.0 has extended their exchange equivalence tests to include rr}r(hTXHRabbitMQ 1.8.0 has extended their exchange equivalence tests to include hUjubj.)r}r(hTX``auto_delete``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX auto_deleterr}r(hTUhUjubahcj6ubhzX and rr}r(hTX and hUjubj.)r}r(hTX ``durable``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzXdurablerr}r(hTUhUjubahcj6ubhzX. This broke the AMQP backend.rr}r(hTX. This broke the AMQP backend.hUjubeubh)r}r(hTX`If you've already used the AMQP backend this means you have to delete the previous definitions::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX_If you've already used the AMQP backend this means you have to delete the previous definitions:rr}r(hTX_If you've already used the AMQP backend this means you have to delete the previous definitions:hUjubaubj)r}r(hTX'$ camqadm exchange.delete celeryresultshUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzX'$ camqadm exchange.delete celeryresultsrr}r(hTUhUjubaubh)r}r(hTXor::hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXor:rr}r(hTXor:hUjubaubj)r}r(hTX8$ python manage.py camqadm exchange.delete celeryresultshUjhcjhe}r(jjhj]hi]hg]hh]hm]uhoMhq]rhzX8$ python manage.py camqadm exchange.delete celeryresultsrr}r(hTUhUjubaubeubaubeubhV)r}r(hTUhUh\h^hahchdhe}r(hg]hh]hi]hj]rjahm]rhauhoMhphhq]r(hs)r}r(hTjhUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjuhoMhphhq]rhzX1.0.5rr}r(hTjhUjubaubj)r}r(hTUhUjh^hahcjhe}r(hg]hh]hi]hj]hm]uhoMhphhq]rj)r}r(hTUhUjh^hahcjhe}r(hg]hh]hi]hj]hm]uhoMhphhq]r(j)r}r(hTX release-daterhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX release-daterr}r(hTjhUjubahcjubj)r}r(hTX2010-06-01 02:36 P.M CEST he}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX2010-06-01 02:36 P.M CESTrhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX2010-06-01 02:36 P.M CESTrr}r(hTjhUjubaubahcjubeubaubhV)r}r(hTUhUjh^hahchdhe}r(hg]hh]hi]hj]rjahm]rh!auhoMhphhq]r(hs)r}r(hTjhUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjuhoMhphhq]rhzXCriticalrr}r (hTjhUjubaubh)r }r (hTUhUjh^hahchhe}r (j X*hj]hi]hg]hh]hm]uhoMhphhq]r (h)r}r(hTXSIGINT/Ctrl+C killed the pool, abrubtly terminating the currently executing tasks. Fixed by making the pool worker processes ignore :const:`SIGINT`. hUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXRSIGINT/Ctrl+C killed the pool, abrubtly terminating the currently executing tasks.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXRSIGINT/Ctrl+C killed the pool, abrubtly terminating the currently executing tasks.rr}r(hTjhUjubaubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTXAFixed by making the pool worker processes ignore :const:`SIGINT`.hUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r!(hzX1Fixed by making the pool worker processes ignore r"r#}r$(hTX1Fixed by making the pool worker processes ignore hUjubje)r%}r&(hTX:const:`SIGINT`r'hUjh^hahcjihe}r((UreftypeXconstjkjlXSIGINTU refdomainXpyr)hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r*j.)r+}r,(hTj'he}r-(hg]hh]r.(jwj)Xpy-constr/ehi]hj]hm]uhUj%hq]r0hzXSIGINTr1r2}r3(hTUhUj+ubahcj6ubaubhzX.r4}r5(hTX.hUjubeubahcjPubeubh)r6}r7(hTXShould not close the consumers before the pool is terminated, just cancel the consumers. Issue #122. http://github.com/ask/celery/issues/issue/122 hUj h^hahchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r9(h)r:}r;(hTXXShould not close the consumers before the pool is terminated, just cancel the consumers.r<hUj6h^hahchhe}r=(hg]hh]hi]hj]hm]uhoMhq]r>hzXXShould not close the consumers before the pool is terminated, just cancel the consumers.r?r@}rA(hTj<hUj:ubaubj:)rB}rC(hTUhe}rD(hg]hh]hi]hj]hm]uhUj6hq]rEh)rF}rG(hTX9Issue #122. http://github.com/ask/celery/issues/issue/122hUjBh^hahchhe}rH(hg]hh]hi]hj]hm]uhoMhq]rI(hzX Issue #122. rJrK}rL(hTX Issue #122. hUjFubh)rM}rN(hTX-http://github.com/ask/celery/issues/issue/122rOhe}rP(UrefurijOhj]hi]hg]hh]hm]uhUjFhq]rQhzX-http://github.com/ask/celery/issues/issue/122rRrS}rT(hTUhUjMubahchubeubahcjPubeubh)rU}rV(hTX(Now depends on :mod:`billiard` >= 0.3.1 hUj h^hahchhe}rW(hg]hh]hi]hj]hm]uhoNhphhq]rXh)rY}rZ(hTX'Now depends on :mod:`billiard` >= 0.3.1hUjUh^hahchhe}r[(hg]hh]hi]hj]hm]uhoMhq]r\(hzXNow depends on r]r^}r_(hTXNow depends on hUjYubje)r`}ra(hTX:mod:`billiard`rbhUjYh^hahcjihe}rc(UreftypeXmodjkjlXbilliardU refdomainXpyrdhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rej.)rf}rg(hTjbhe}rh(hg]hh]ri(jwjdXpy-modrjehi]hj]hm]uhUj`hq]rkhzXbilliardrlrm}rn(hTUhUjfubahcj6ubaubhzX >= 0.3.1rorp}rq(hTX >= 0.3.1hUjYubeubaubh)rr}rs(hTXceleryd: Previously exceptions raised by worker components could stall startup, now it correctly logs the exceptions and shuts down. hUj h^hahchhe}rt(hg]hh]hi]hj]hm]uhoNhphhq]ruh)rv}rw(hTXceleryd: Previously exceptions raised by worker components could stall startup, now it correctly logs the exceptions and shuts down.rxhUjrh^hahchhe}ry(hg]hh]hi]hj]hm]uhoMhq]rzhzXceleryd: Previously exceptions raised by worker components could stall startup, now it correctly logs the exceptions and shuts down.r{r|}r}(hTjxhUjvubaubaubh)r~}r(hTXceleryd: Prefetch counts was set too late. QoS is now set as early as possible, so celeryd can't slurp in all the messages at start-up. hUj h^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXceleryd: Prefetch counts was set too late. QoS is now set as early as possible, so celeryd can't slurp in all the messages at start-up.rhUj~h^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXceleryd: Prefetch counts was set too late. QoS is now set as early as possible, so celeryd can't slurp in all the messages at start-up.rr}r(hTjhUjubaubaubeubeubhV)r}r(hTUhYKhUjh^hahchdhe}r(hg]rXchangesrahh]hi]hj]rjahm]uhoMhphhq]r(hs)r}r(hTjhUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjuhoMhphhq]rhzXChangesrr}r(hTjhUjubaubh)r}r(hTUhUjh^hahchhe}r(j X*hj]hi]hg]hh]hm]uhoMhphhq]r(h)r}r(hTX:mod:`celery.contrib.abortable`: Abortable tasks. Tasks that defines steps of execution, the task can then be aborted after each step has completed. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTX1:mod:`celery.contrib.abortable`: Abortable tasks.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(je)r}r(hTX:mod:`celery.contrib.abortable`rhUjh^hahcjihe}r(UreftypeXmodjkjlXcelery.contrib.abortableU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-modrehi]hj]hm]uhUjhq]rhzXcelery.contrib.abortablerr}r(hTUhUjubahcj6ubaubhzX: Abortable tasks.rr}r(hTX: Abortable tasks.hUjubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTXbTasks that defines steps of execution, the task can then be aborted after each step has completed.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXbTasks that defines steps of execution, the task can then be aborted after each step has completed.rr}r(hTjhUjubaubahcjPubeubh)r}r(hTX_:class:`~celery.events.EventDispatcher`: No longer creates AMQP channel if events are disabled hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTX^:class:`~celery.events.EventDispatcher`: No longer creates AMQP channel if events are disabledhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(je)r}r(hTX':class:`~celery.events.EventDispatcher`rhUjh^hahcjihe}r(UreftypeXclassjkjlXcelery.events.EventDispatcherU refdomainXpyrhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjXpy-classrehi]hj]hm]uhUjhq]rhzXEventDispatcherrr}r(hTUhUjubahcj6ubaubhzX7: No longer creates AMQP channel if events are disabledrr}r(hTX7: No longer creates AMQP channel if events are disabledhUjubeubaubh)r}r(hTXyAdded required RPM package names under ``[bdist_rpm]`` section, to support building RPMs from the sources using setup.py hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTXxAdded required RPM package names under ``[bdist_rpm]`` section, to support building RPMs from the sources using setup.pyhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzX'Added required RPM package names under rr}r(hTX'Added required RPM package names under hUjubj.)r}r(hTX``[bdist_rpm]``he}r(hg]hh]hi]hj]hm]uhUjhq]rhzX [bdist_rpm]rr}r(hTUhUjubahcj6ubhzXB section, to support building RPMs from the sources using setup.pyrr}r(hTXB section, to support building RPMs from the sources using setup.pyhUjubeubaubh)r}r(hTX`Running unittests: :envvar:`NOSE_VERBOSE` environment var now enables verbose output from Nose. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTX_Running unittests: :envvar:`NOSE_VERBOSE` environment var now enables verbose output from Nose.hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]r(hzXRunning unittests: rr}r(hTXRunning unittests: hUjubjl)r}r(hTUhe}r(hj]hi]hg]hh]hm]jp]r((jrX NOSE_VERBOSErUindex-1rUtr(jrX"environment variable; NOSE_VERBOSEjUtreuhUjhq]hcjwubjx)r}r(hTUhe}r(hg]hh]hi]hj]rjahm]uhUjhq]hcj}ubje)r}r (hTX:envvar:`NOSE_VERBOSE`r hUjh^hahcjihe}r (UreftypeXenvvarjkjljU refdomainXstdr hj]hi]U refexplicithg]hh]hm]jnjouhoMhq]r j.)r}r(hTj he}r(hg]hh]r(jwj X std-envvarrehi]hj]hm]uhUjhq]rhzX NOSE_VERBOSErr}r(hTUhUjubahcj6ubaubhzX6 environment var now enables verbose output from Nose.rr}r(hTX6 environment var now enables verbose output from Nose.hUjubeubaubh)r}r(hTX:func:`celery.execute.apply`: Pass logfile/loglevel arguments as task kwargs. Issue #110 http://github.com/ask/celery/issues/issue/110 hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]r(h)r}r(hTXM:func:`celery.execute.apply`: Pass logfile/loglevel arguments as task kwargs.hUjh^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r!(je)r"}r#(hTX:func:`celery.execute.apply`r$hUjh^hahcjihe}r%(UreftypeXfuncjkjlXcelery.execute.applyU refdomainXpyr&hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r'j.)r(}r)(hTj$he}r*(hg]hh]r+(jwj&Xpy-funcr,ehi]hj]hm]uhUj"hq]r-hzXcelery.execute.apply()r.r/}r0(hTUhUj(ubahcj6ubaubhzX1: Pass logfile/loglevel arguments as task kwargs.r1r2}r3(hTX1: Pass logfile/loglevel arguments as task kwargs.hUjubeubj:)r4}r5(hTUhe}r6(hg]hh]hi]hj]hm]uhUjhq]r7h)r8}r9(hTX8Issue #110 http://github.com/ask/celery/issues/issue/110hUj4h^hahchhe}r:(hg]hh]hi]hj]hm]uhoMhq]r;(hzX Issue #110 r<r=}r>(hTX Issue #110 hUj8ubh)r?}r@(hTX-http://github.com/ask/celery/issues/issue/110rAhe}rB(UrefurijAhj]hi]hg]hh]hm]uhUj8hq]rChzX-http://github.com/ask/celery/issues/issue/110rDrE}rF(hTUhUj?ubahchubeubahcjPubeubh)rG}rH(hTXcelery.execute.apply: Should return exception, not :class:`~celery.datastructures.ExceptionInfo` on error. Issue #111 http://github.com/ask/celery/issues/issue/111 hUjh^hahchhe}rI(hg]hh]hi]hj]hm]uhoNhphhq]rJ(h)rK}rL(hTXjcelery.execute.apply: Should return exception, not :class:`~celery.datastructures.ExceptionInfo` on error.hUjGh^hahchhe}rM(hg]hh]hi]hj]hm]uhoMhq]rN(hzX3celery.execute.apply: Should return exception, not rOrP}rQ(hTX3celery.execute.apply: Should return exception, not hUjKubje)rR}rS(hTX-:class:`~celery.datastructures.ExceptionInfo`rThUjKh^hahcjihe}rU(UreftypeXclassjkjlX#celery.datastructures.ExceptionInfoU refdomainXpyrVhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rWj.)rX}rY(hTjThe}rZ(hg]hh]r[(jwjVXpy-classr\ehi]hj]hm]uhUjRhq]r]hzX ExceptionInfor^r_}r`(hTUhUjXubahcj6ubaubhzX on error.rarb}rc(hTX on error.hUjKubeubj:)rd}re(hTUhe}rf(hg]hh]hi]hj]hm]uhUjGhq]rgh)rh}ri(hTX8Issue #111 http://github.com/ask/celery/issues/issue/111hUjdh^hahchhe}rj(hg]hh]hi]hj]hm]uhoMhq]rk(hzX Issue #111 rlrm}rn(hTX Issue #111 hUjhubh)ro}rp(hTX-http://github.com/ask/celery/issues/issue/111rqhe}rr(Urefurijqhj]hi]hg]hh]hm]uhUjhhq]rshzX-http://github.com/ask/celery/issues/issue/111rtru}rv(hTUhUjoubahchubeubahcjPubeubh)rw}rx(hTXtAdded new entries to the :doc:`FAQs `: * Should I use retry or acks_late? * Can I execute a task by name? hUjh^hahchhe}ry(hg]hh]hi]hj]hm]uhoNhphhq]rz(h)r{}r|(hTX+Added new entries to the :doc:`FAQs `:hUjwh^hahchhe}r}(hg]hh]hi]hj]hm]uhoMhq]r~(hzXAdded new entries to the rr}r(hTXAdded new entries to the hUj{ubje)r}r(hTX:doc:`FAQs `rhUj{h^hahcjihe}r(UreftypeXdocrjkjlXfaqU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoMhq]rj.)r}r(hTjhe}r(hg]hh]r(jwjehi]hj]hm]uhUjhq]rhzXFAQsrr}r(hTUhUjubahcj6ubaubhzX:r}r(hTX:hUj{ubeubj:)r}r(hTUhe}r(hg]hh]hi]hj]hm]uhUjwhq]rh)r}r(hTUhe}r(j X*hj]hi]hg]hh]hm]uhUjhq]r(h)r}r(hTX Should I use retry or acks_late?rhe}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTjhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX Should I use retry or acks_late?rr}r(hTjhUjubaubahchubh)r}r(hTXCan I execute a task by name? he}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTXCan I execute a task by name?rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzXCan I execute a task by name?rr}r(hTjhUjubaubahchubehchubahcjPubeubeubeubeubhV)r}r(hTUhUh\h^hahchdhe}r(hg]hh]hi]hj]rjahm]rhauhoMhphhq]r(hs)r}r(hTjhUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjuhoMhphhq]rhzX1.0.4rr}r(hTjhUjubaubj)r}r(hTUhUjh^hahcjhe}r(hg]hh]hi]hj]hm]uhoMhphhq]rj)r}r(hTUhUjh^hahcjhe}r(hg]hh]hi]hj]hm]uhoMhphhq]r(j)r}r(hTX release-daterhe}r(hg]hh]hi]hj]hm]uhUjhq]rhzX release-daterr}r(hTjhUjubahcjubj)r}r(hTX2010-05-31 09:54 A.M CEST he}r(hg]hh]hi]hj]hm]uhUjhq]rh)r}r(hTX2010-05-31 09:54 A.M CESTrhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoMhq]rhzX2010-05-31 09:54 A.M CESTrr}r(hTjhUjubaubahcjubeubaubh)r}r(hTUhUjh^hahchhe}r(j X*hj]hi]hg]hh]hm]uhoM hphhq]rh)r}r(hTX?Changlog merged with 1.0.5 as the release was never announced. hUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoNhphhq]rh)r}r(hTX>Changlog merged with 1.0.5 as the release was never announced.rhUjh^hahchhe}r(hg]hh]hi]hj]hm]uhoM hq]rhzX>Changlog merged with 1.0.5 as the release was never announced.rr}r(hTjhUjubaubaubaubeubhZhV)r}r(hTUhUh\h^hahchdhe}r(hg]hh]hi]hj]rjlahm]rhauhoMhphhq]r(hs)r}r(hTjqhUjh^hahchwhe}r(hj]hi]hg]hh]hm]jjkuhoMhphhq]rhzX1.0.2rr}r(hTjqhUjubaubj)r}r(hTUhUjh^hahcjhe}r(hg]hh]hi]hj]hm]uhoMhphhq]rj)r}r(hTUhUjh^hahcjhe}r(hg]hh]hi]hj]hm]uhoMhphhq]r(j)r }r (hTX release-dater he}r (hg]hh]hi]hj]hm]uhUjhq]r hzX release-dater r }r (hTj hUj ubahcjubj)r }r (hTX2010-03-31 12:50 P.M CET he}r (hg]hh]hi]hj]hm]uhUjhq]r h)r }r (hTX2010-03-31 12:50 P.M CETr hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r hzX2010-03-31 12:50 P.M CETr r }r (hTj hUj ubaubahcjubeubaubh)r }r (hTUhUjh^hahchhe}r (j X*hj]hi]hg]hh]hm]uhoMhphhq]r (h)r }r (hTXNDeprecated: ``CELERY_BACKEND``, please use ``CELERY_RESULT_BACKEND`` instead. hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXMDeprecated: ``CELERY_BACKEND``, please use ``CELERY_RESULT_BACKEND`` instead.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r (hzX Deprecated: r r! }r" (hTX Deprecated: hUj ubj.)r# }r$ (hTX``CELERY_BACKEND``he}r% (hg]hh]hi]hj]hm]uhUj hq]r& hzXCELERY_BACKENDr' r( }r) (hTUhUj# ubahcj6ubhzX , please use r* r+ }r, (hTX , please use hUj ubj.)r- }r. (hTX``CELERY_RESULT_BACKEND``he}r/ (hg]hh]hi]hj]hm]uhUj hq]r0 hzXCELERY_RESULT_BACKENDr1 r2 }r3 (hTUhUj- ubahcj6ubhzX instead.r4 r5 }r6 (hTX instead.hUj ubeubaubh)r7 }r8 (hTXHWe now use a custom logger in tasks. This logger supports task magic keyword arguments in formats. The default format for tasks (``CELERYD_TASK_LOG_FORMAT``) now includes the id and the name of tasks so the origin of task log messages can easily be traced. Example output:: [2010-03-25 13:11:20,317: INFO/PoolWorker-1] [tasks.add(a6e1c5ad-60d9-42a0-8b24-9e39363125a4)] Hello from add To revert to the previous behavior you can set:: CELERYD_TASK_LOG_FORMAT = """ [%(asctime)s: %(levelname)s/%(processName)s] %(message)s """.strip() hUj h^hahchhe}r9 (hg]hh]hi]hj]hm]uhoNhphhq]r: (h)r; }r< (hTXbWe now use a custom logger in tasks. This logger supports task magic keyword arguments in formats.r= hUj7 h^hahchhe}r> (hg]hh]hi]hj]hm]uhoM hq]r? hzXbWe now use a custom logger in tasks. This logger supports task magic keyword arguments in formats.r@ rA }rB (hTj= hUj; ubaubj:)rC }rD (hTUhe}rE (hg]hh]hi]hj]hm]uhUj7 hq]rF (h)rG }rH (hTXThe default format for tasks (``CELERYD_TASK_LOG_FORMAT``) now includes the id and the name of tasks so the origin of task log messages can easily be traced.hUjC h^hahchhe}rI (hg]hh]hi]hj]hm]uhoM hq]rJ (hzXThe default format for tasks (rK rL }rM (hTXThe default format for tasks (hUjG ubj.)rN }rO (hTX``CELERYD_TASK_LOG_FORMAT``he}rP (hg]hh]hi]hj]hm]uhUjG hq]rQ hzXCELERYD_TASK_LOG_FORMATrR rS }rT (hTUhUjN ubahcj6ubhzXd) now includes the id and the name of tasks so the origin of task log messages can easily be traced.rU rV }rW (hTXd) now includes the id and the name of tasks so the origin of task log messages can easily be traced.hUjG ubeubj)rX }rY (hTUhe}rZ (hg]hh]hi]hj]hm]uhUjC hq]r[ j)r\ }r] (hTXExample output:: [2010-03-25 13:11:20,317: INFO/PoolWorker-1] [tasks.add(a6e1c5ad-60d9-42a0-8b24-9e39363125a4)] Hello from add hUjX h^hahcjhe}r^ (hg]hh]hi]hj]hm]uhoMhq]r_ (j)r` }ra (hTXExample output::rb hUj\ h^hahcjhe}rc (hg]hh]hi]hj]hm]uhoMhq]rd hzXExample output::re rf }rg (hTjb hUj` ubaubj)rh }ri (hTUhe}rj (hg]hh]hi]hj]hm]uhUj\ hq]rk j)rl }rm (hTUhe}rn (hg]hh]hi]hj]hm]uhUjh hq]ro j)rp }rq (hTXn[2010-03-25 13:11:20,317: INFO/PoolWorker-1] [tasks.add(a6e1c5ad-60d9-42a0-8b24-9e39363125a4)] Hello from add hUjl h^hahcjhe}rr (hg]hh]hi]hj]hm]uhoMhq]rs (j)rt }ru (hTX,[2010-03-25 13:11:20,317: INFO/PoolWorker-1]rv hUjp h^hahcjhe}rw (hg]hh]hi]hj]hm]uhoMhq]rx hzX,[2010-03-25 13:11:20,317: INFO/PoolWorker-1]ry rz }r{ (hTjv hUjt ubaubj)r| }r} (hTUhe}r~ (hg]hh]hi]hj]hm]uhUjp hq]r h)r }r (hTX@[tasks.add(a6e1c5ad-60d9-42a0-8b24-9e39363125a4)] Hello from addr hUj| h^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r hzX@[tasks.add(a6e1c5ad-60d9-42a0-8b24-9e39363125a4)] Hello from addr r }r (hTj hUj ubaubahcjubeubahcjubahcjubeubahcjubh)r }r (hTX0To revert to the previous behavior you can set::hUjC h^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r hzX/To revert to the previous behavior you can set:r r }r (hTX/To revert to the previous behavior you can set:hUj ubaubj)r }r (hTXfCELERYD_TASK_LOG_FORMAT = """ [%(asctime)s: %(levelname)s/%(processName)s] %(message)s """.strip()hUjC hcjhe}r (jjhj]hi]hg]hh]hm]uhoMhq]r hzXfCELERYD_TASK_LOG_FORMAT = """ [%(asctime)s: %(levelname)s/%(processName)s] %(message)s """.strip()r r }r (hTUhUj ubaubehcjPubeubh)r }r (hTXUnittests: Don't disable the django test database teardown, instead fixed the underlying issue which was caused by modifications to the ``DATABASE_NAME`` setting (http://github.com/ask/celery/issues/82). hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r h)r }r (hTXUnittests: Don't disable the django test database teardown, instead fixed the underlying issue which was caused by modifications to the ``DATABASE_NAME`` setting (http://github.com/ask/celery/issues/82).hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r (hzXUnittests: Don't disable the django test database teardown, instead fixed the underlying issue which was caused by modifications to the r r }r (hTXUnittests: Don't disable the django test database teardown, instead fixed the underlying issue which was caused by modifications to the hUj ubj.)r }r (hTX``DATABASE_NAME``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX DATABASE_NAMEr r }r (hTUhUj ubahcj6ubhzX setting (r r }r (hTX setting (hUj ubh)r }r (hTX&http://github.com/ask/celery/issues/82r he}r (Urefurij hj]hi]hg]hh]hm]uhUj hq]r hzX&http://github.com/ask/celery/issues/82r r }r (hTUhUj ubahchubhzX).r r }r (hTX).hUj ubeubaubh)r }r (hTXDjango Loader: New config ``CELERY_DB_REUSE_MAX`` (max number of tasks to reuse the same database connection) The default is to use a new connection for every task. We would very much like to reuse the connection, but a safe number of reuses is not known, and we don't have any way to handle the errors that might happen, which may even be database dependent. See: http://bit.ly/94fwdd hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTXmDjango Loader: New config ``CELERY_DB_REUSE_MAX`` (max number of tasks to reuse the same database connection)hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoMhq]r (hzXDjango Loader: New config r r }r (hTXDjango Loader: New config hUj ubj.)r }r (hTX``CELERY_DB_REUSE_MAX``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzXCELERY_DB_REUSE_MAXr r }r (hTUhUj ubahcj6ubhzX< (max number of tasks to reuse the same database connection)r r }r (hTX< (max number of tasks to reuse the same database connection)hUj ubeubj:)r }r (hTUhe}r (hg]hh]hi]hj]hm]uhUj hq]r (h)r }r (hTXThe default is to use a new connection for every task. We would very much like to reuse the connection, but a safe number of reuses is not known, and we don't have any way to handle the errors that might happen, which may even be database dependent.r hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM"hq]r hzXThe default is to use a new connection for every task. We would very much like to reuse the connection, but a safe number of reuses is not known, and we don't have any way to handle the errors that might happen, which may even be database dependent.r r }r (hTj hUj ubaubh)r }r (hTXSee: http://bit.ly/94fwddhUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM'hq]r (hzXSee: r r }r (hTXSee: hUj ubh)r }r (hTXhttp://bit.ly/94fwddr he}r (Urefurij hj]hi]hg]hh]hm]uhUj hq]r hzXhttp://bit.ly/94fwddr r }r (hTUhUj ubahchubeubehcjPubeubh)r }r (hTXceleryd: The worker components are now configurable: ``CELERYD_POOL``, ``CELERYD_LISTENER``, ``CELERYD_MEDIATOR``, and ``CELERYD_ETA_SCHEDULER``. The default configuration is as follows: .. code-block:: python CELERYD_POOL = "celery.concurrency.processes.TaskPool" CELERYD_MEDIATOR = "celery.worker.controllers.Mediator" CELERYD_ETA_SCHEDULER = "celery.worker.controllers.ScheduleController" CELERYD_LISTENER = "celery.worker.listener.CarrotListener" The ``CELERYD_POOL`` setting makes it easy to swap out the multiprocessing pool with a threaded pool, or how about a twisted/eventlet pool? Consider the competition for the first pool plug-in started! hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoNhphhq]r (h)r }r (hTXceleryd: The worker components are now configurable: ``CELERYD_POOL``, ``CELERYD_LISTENER``, ``CELERYD_MEDIATOR``, and ``CELERYD_ETA_SCHEDULER``.hUj h^hahchhe}r (hg]hh]hi]hj]hm]uhoM)hq]r (hzX5celeryd: The worker components are now configurable: r r }r (hTX5celeryd: The worker components are now configurable: hUj ubj.)r }r (hTX``CELERYD_POOL``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzX CELERYD_POOLr r }r (hTUhUj ubahcj6ubhzX, r r }r (hTX, hUj ubj.)r }r (hTX``CELERYD_LISTENER``he}r (hg]hh]hi]hj]hm]uhUj hq]r hzXCELERYD_LISTENERr r!}r!(hTUhUj ubahcj6ubhzX, r!r!}r!(hTX, hUj ubj.)r!}r!(hTX``CELERYD_MEDIATOR``he}r!(hg]hh]hi]hj]hm]uhUj hq]r!hzXCELERYD_MEDIATORr !r !}r !(hTUhUj!ubahcj6ubhzX, and r !r !}r!(hTX, and hUj ubj.)r!}r!(hTX``CELERYD_ETA_SCHEDULER``he}r!(hg]hh]hi]hj]hm]uhUj hq]r!hzXCELERYD_ETA_SCHEDULERr!r!}r!(hTUhUj!ubahcj6ubhzX.r!}r!(hTX.hUj ubeubj:)r!}r!(hTUhe}r!(hg]hh]hi]hj]hm]uhUj hq]r!(h)r!}r!(hTX(The default configuration is as follows:r!hUj!h^hahchhe}r!(hg]hh]hi]hj]hm]uhoM,hq]r !hzX(The default configuration is as follows:r!!r"!}r#!(hTj!hUj!ubaubj)r$!}r%!(hTXCELERYD_POOL = "celery.concurrency.processes.TaskPool" CELERYD_MEDIATOR = "celery.worker.controllers.Mediator" CELERYD_ETA_SCHEDULER = "celery.worker.controllers.ScheduleController" CELERYD_LISTENER = "celery.worker.listener.CarrotListener"hUj!h^hahcjhe}r&!(jjXpythonjjhj]hi]hg]hh]hm]uhoM.hq]r'!hzXCELERYD_POOL = "celery.concurrency.processes.TaskPool" CELERYD_MEDIATOR = "celery.worker.controllers.Mediator" CELERYD_ETA_SCHEDULER = "celery.worker.controllers.ScheduleController" CELERYD_LISTENER = "celery.worker.listener.CarrotListener"r(!r)!}r*!(hTUhUj$!ubaubh)r+!}r,!(hTXThe ``CELERYD_POOL`` setting makes it easy to swap out the multiprocessing pool with a threaded pool, or how about a twisted/eventlet pool?hUj!h^hahchhe}r-!(hg]hh]hi]hj]hm]uhoM5hq]r.!(hzXThe r/!r0!}r1!(hTXThe hUj+!ubj.)r2!}r3!(hTX``CELERYD_POOL``he}r4!(hg]hh]hi]hj]hm]uhUj+!hq]r5!hzX CELERYD_POOLr6!r7!}r8!(hTUhUj2!ubahcj6ubhzXw setting makes it easy to swap out the multiprocessing pool with a threaded pool, or how about a twisted/eventlet pool?r9!r:!}r;!(hTXw setting makes it easy to swap out the multiprocessing pool with a threaded pool, or how about a twisted/eventlet pool?hUj+!ubeubh)r!hUj!h^hahchhe}r?!(hg]hh]hi]hj]hm]uhoM8hq]r@!hzX<Consider the competition for the first pool plug-in started!rA!rB!}rC!(hTj>!hUjhq]ru!(hzX*Debian init scripts: Now always preserves rv!rw!}rx!(hTX*Debian init scripts: Now always preserves hUjr!ubj.)ry!}rz!(hTX``$CELERYD_OPTS``he}r{!(hg]hh]hi]hj]hm]uhUjr!hq]r|!hzX $CELERYD_OPTSr}!r~!}r!(hTUhUjy!ubahcj6ubhzX from the r!r!}r!(hTX from the hUjr!ubj.)r!}r!(hTX``/etc/default/celeryd``he}r!(hg]hh]hi]hj]hm]uhUjr!hq]r!hzX/etc/default/celerydr!r!}r!(hTUhUj!ubahcj6ubhzX and r!r!}r!(hTX and hUjr!ubj.)r!}r!(hTX``/etc/default/celerybeat``he}r!(hg]hh]hi]hj]hm]uhUjr!hq]r!hzX/etc/default/celerybeatr!r!}r!(hTUhUj!ubahcj6ubhzX.r!}r!(hTX.hUjr!ubeubaubh)r!}r!(hTXcelery.beat.Scheduler: Fixed a bug where the schedule was not properly flushed to disk if the schedule had not been properly initialized. hUj h^hahchhe}r!(hg]hh]hi]hj]hm]uhoNhphhq]r!h)r!}r!(hTXcelery.beat.Scheduler: Fixed a bug where the schedule was not properly flushed to disk if the schedule had not been properly initialized.r!hUj!h^hahchhe}r!(hg]hh]hi]hj]hm]uhoMAhq]r!hzXcelery.beat.Scheduler: Fixed a bug where the schedule was not properly flushed to disk if the schedule had not been properly initialized.r!r!}r!(hTj!hUj!ubaubaubh)r!}r!(hTXbcelerybeat: Now syncs the schedule to disk when receiving the ``SIGTERM`` and ``SIGINT`` signals. hUj h^hahchhe}r!(hg]hh]hi]hj]hm]uhoNhphhq]r!h)r!}r!(hTXacelerybeat: Now syncs the schedule to disk when receiving the ``SIGTERM`` and ``SIGINT`` signals.hUj!h^hahchhe}r!(hg]hh]hi]hj]hm]uhoMDhq]r!(hzX>celerybeat: Now syncs the schedule to disk when receiving the r!r!}r!(hTX>celerybeat: Now syncs the schedule to disk when receiving the hUj!ubj.)r!}r!(hTX ``SIGTERM``he}r!(hg]hh]hi]hj]hm]uhUj!hq]r!hzXSIGTERMr!r!}r!(hTUhUj!ubahcj6ubhzX and r!r!}r!(hTX and hUj!ubj.)r!}r!(hTX ``SIGINT``he}r!(hg]hh]hi]hj]hm]uhUj!hq]r!hzXSIGINTr!r!}r!(hTUhUj!ubahcj6ubhzX signals.r!r!}r!(hTX signals.hUj!ubeubaubh)r!}r!(hTXCControl commands: Make sure keywords arguments are not in unicode. hUj h^hahchhe}r!(hg]hh]hi]hj]hm]uhoNhphhq]r!h)r!}r!(hTXBControl commands: Make sure keywords arguments are not in unicode.r!hUj!h^hahchhe}r!(hg]hh]hi]hj]hm]uhoMGhq]r!hzXBControl commands: Make sure keywords arguments are not in unicode.r!r!}r!(hTj!hUj!ubaubaubh)r!}r!(hTXvETA scheduler: Was missing a logger object, so the scheduler crashed when trying to log that a task had been revoked. hUj h^hahchhe}r!(hg]hh]hi]hj]hm]uhoNhphhq]r!h)r!}r!(hTXuETA scheduler: Was missing a logger object, so the scheduler crashed when trying to log that a task had been revoked.r!hUj!h^hahchhe}r!(hg]hh]hi]hj]hm]uhoMIhq]r!hzXuETA scheduler: Was missing a logger object, so the scheduler crashed when trying to log that a task had been revoked.r!r!}r!(hTj!hUj!ubaubaubh)r!}r!(hTXnmanagement.commands.camqadm: Fixed typo ``camqpadm`` -> ``camqadm`` (http://github.com/ask/celery/issues/83). hUj h^hahchhe}r!(hg]hh]hi]hj]hm]uhoNhphhq]r!h)r!}r!(hTXmmanagement.commands.camqadm: Fixed typo ``camqpadm`` -> ``camqadm`` (http://github.com/ask/celery/issues/83).hUj!h^hahchhe}r!(hg]hh]hi]hj]hm]uhoMLhq]r!(hzX(management.commands.camqadm: Fixed typo r!r!}r!(hTX(management.commands.camqadm: Fixed typo hUj!ubj.)r!}r!(hTX ``camqpadm``he}r!(hg]hh]hi]hj]hm]uhUj!hq]r!hzXcamqpadmr!r!}r!(hTUhUj!ubahcj6ubhzX -> r!r!}r!(hTX -> hUj!ubj.)r!}r!(hTX ``camqadm``he}r!(hg]hh]hi]hj]hm]uhUj!hq]r!hzXcamqadmr!r!}r!(hTUhUj!ubahcj6ubhzX (r!r!}r!(hTX (hUj!ubh)r!}r!(hTX&http://github.com/ask/celery/issues/83r!he}r!(Urefurij!hj]hi]hg]hh]hm]uhUj!hq]r!hzX&http://github.com/ask/celery/issues/83r!r!}r!(hTUhUj!ubahchubhzX).r"r"}r"(hTX).hUj!ubeubaubh)r"}r"(hTXrPeriodicTask.delta_resolution: Was not working for days and hours, now fixed by rounding to the nearest day/hour. hUj h^hahchhe}r"(hg]hh]hi]hj]hm]uhoNhphhq]r"h)r"}r"(hTXqPeriodicTask.delta_resolution: Was not working for days and hours, now fixed by rounding to the nearest day/hour.r "hUj"h^hahchhe}r "(hg]hh]hi]hj]hm]uhoMOhq]r "hzXqPeriodicTask.delta_resolution: Was not working for days and hours, now fixed by rounding to the nearest day/hour.r "r "}r"(hTj "hUj"ubaubaubh)r"}r"(hTX~Fixed a potential infinite loop in ``BaseAsyncResult.__eq__``, although there is no evidence that it has ever been triggered. hUj h^hahchhe}r"(hg]hh]hi]hj]hm]uhoNhphhq]r"h)r"}r"(hTX}Fixed a potential infinite loop in ``BaseAsyncResult.__eq__``, although there is no evidence that it has ever been triggered.hUj"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoMRhq]r"(hzX#Fixed a potential infinite loop in r"r"}r"(hTX#Fixed a potential infinite loop in hUj"ubj.)r"}r"(hTX``BaseAsyncResult.__eq__``he}r"(hg]hh]hi]hj]hm]uhUj"hq]r"hzXBaseAsyncResult.__eq__r"r"}r "(hTUhUj"ubahcj6ubhzX@, although there is no evidence that it has ever been triggered.r!"r""}r#"(hTX@, although there is no evidence that it has ever been triggered.hUj"ubeubaubh)r$"}r%"(hTXcceleryd: Now handles messages with encoding problems by acking them and emitting an error message. hUj h^hahchhe}r&"(hg]hh]hi]hj]hm]uhoNhphhq]r'"h)r("}r)"(hTXbceleryd: Now handles messages with encoding problems by acking them and emitting an error message.r*"hUj$"h^hahchhe}r+"(hg]hh]hi]hj]hm]uhoMUhq]r,"hzXbceleryd: Now handles messages with encoding problems by acking them and emitting an error message.r-"r."}r/"(hTj*"hUj("ubaubaubeubeubhV)r0"}r1"(hTUhUh\h^hahchdhe}r2"(hg]hh]hi]hj]r3"jahm]r4"h'auhoMYhphhq]r5"(hs)r6"}r7"(hTjhUj0"h^hahchwhe}r8"(hj]hi]hg]hh]hm]jj~uhoMYhphhq]r9"hzX1.0.1r:"r;"}r<"(hTjhUj6"ubaubj)r="}r>"(hTUhUj0"h^hahcjhe}r?"(hg]hh]hi]hj]hm]uhoMZhphhq]r@"j)rA"}rB"(hTUhUj="h^hahcjhe}rC"(hg]hh]hi]hj]hm]uhoMZhphhq]rD"(j)rE"}rF"(hTX release-daterG"he}rH"(hg]hh]hi]hj]hm]uhUjA"hq]rI"hzX release-daterJ"rK"}rL"(hTjG"hUjE"ubahcjubj)rM"}rN"(hTX2010-02-24 07:05 P.M CET he}rO"(hg]hh]hi]hj]hm]uhUjA"hq]rP"h)rQ"}rR"(hTX2010-02-24 07:05 P.M CETrS"hUjM"h^hahchhe}rT"(hg]hh]hi]hj]hm]uhoMZhq]rU"hzX2010-02-24 07:05 P.M CETrV"rW"}rX"(hTjS"hUjQ"ubaubahcjubeubaubh)rY"}rZ"(hTUhUj0"h^hahchhe}r["(j X*hj]hi]hg]hh]hm]uhoM\hphhq]r\"(h)r]"}r^"(hTXTasks are now acknowledged early instead of late. This is done because messages can only be acked within the same connection channel, so if the connection is lost we would have to refetch the message again to acknowledge it. This might or might not affect you, but mostly those running tasks with a really long execution time are affected, as all tasks that has made it all the way into the pool needs to be executed before the worker can safely terminate (this is at most the number of pool workers, multiplied by the ``CELERYD_PREFETCH_MULTIPLIER`` setting.) We multiply the prefetch count by default to increase the performance at times with bursts of tasks with a short execution time. If this doesn't apply to your use case, you should be able to set the prefetch multiplier to zero, without sacrificing performance. Please note that a patch to :mod:`multiprocessing` is currently being worked on, this patch would enable us to use a better solution, and is scheduled for inclusion in the ``2.0.0`` release. hUjY"h^hahchhe}r_"(hg]hh]hi]hj]hm]uhoNhphhq]r`"(h)ra"}rb"(hTX1Tasks are now acknowledged early instead of late.rc"hUj]"h^hahchhe}rd"(hg]hh]hi]hj]hm]uhoM\hq]re"hzX1Tasks are now acknowledged early instead of late.rf"rg"}rh"(hTjc"hUja"ubaubj:)ri"}rj"(hTUhe}rk"(hg]hh]hi]hj]hm]uhUj]"hq]rl"(h)rm"}rn"(hTXThis is done because messages can only be acked within the same connection channel, so if the connection is lost we would have to refetch the message again to acknowledge it.ro"hUji"h^hahchhe}rp"(hg]hh]hi]hj]hm]uhoM^hq]rq"hzXThis is done because messages can only be acked within the same connection channel, so if the connection is lost we would have to refetch the message again to acknowledge it.rr"rs"}rt"(hTjo"hUjm"ubaubh)ru"}rv"(hTXOThis might or might not affect you, but mostly those running tasks with a really long execution time are affected, as all tasks that has made it all the way into the pool needs to be executed before the worker can safely terminate (this is at most the number of pool workers, multiplied by the ``CELERYD_PREFETCH_MULTIPLIER`` setting.)hUji"h^hahchhe}rw"(hg]hh]hi]hj]hm]uhoMbhq]rx"(hzX&This might or might not affect you, but mostly those running tasks with a really long execution time are affected, as all tasks that has made it all the way into the pool needs to be executed before the worker can safely terminate (this is at most the number of pool workers, multiplied by the ry"rz"}r{"(hTX&This might or might not affect you, but mostly those running tasks with a really long execution time are affected, as all tasks that has made it all the way into the pool needs to be executed before the worker can safely terminate (this is at most the number of pool workers, multiplied by the hUju"ubj.)r|"}r}"(hTX``CELERYD_PREFETCH_MULTIPLIER``he}r~"(hg]hh]hi]hj]hm]uhUju"hq]r"hzXCELERYD_PREFETCH_MULTIPLIERr"r"}r"(hTUhUj|"ubahcj6ubhzX setting.)r"r"}r"(hTX setting.)hUju"ubeubh)r"}r"(hTXWe multiply the prefetch count by default to increase the performance at times with bursts of tasks with a short execution time. If this doesn't apply to your use case, you should be able to set the prefetch multiplier to zero, without sacrificing performance.r"hUji"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoMhhq]r"hzXWe multiply the prefetch count by default to increase the performance at times with bursts of tasks with a short execution time. If this doesn't apply to your use case, you should be able to set the prefetch multiplier to zero, without sacrificing performance.r"r"}r"(hTj"hUj"ubaubh)r"}r"(hTXPlease note that a patch to :mod:`multiprocessing` is currently being worked on, this patch would enable us to use a better solution, and is scheduled for inclusion in the ``2.0.0`` release.hUji"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoMmhq]r"(hzXPlease note that a patch to r"r"}r"(hTXPlease note that a patch to hUj"ubje)r"}r"(hTX:mod:`multiprocessing`r"hUj"h^hahcjihe}r"(UreftypeXmodjkjlXmultiprocessingU refdomainXpyr"hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMmhq]r"j.)r"}r"(hTj"he}r"(hg]hh]r"(jwj"Xpy-modr"ehi]hj]hm]uhUj"hq]r"hzXmultiprocessingr"r"}r"(hTUhUj"ubahcj6ubaubhzXz is currently being worked on, this patch would enable us to use a better solution, and is scheduled for inclusion in the r"r"}r"(hTXz is currently being worked on, this patch would enable us to use a better solution, and is scheduled for inclusion in the hUj"ubj.)r"}r"(hTX ``2.0.0``he}r"(hg]hh]hi]hj]hm]uhUj"hq]r"hzX2.0.0r"r"}r"(hTUhUj"ubahcj6ubhzX release.r"r"}r"(hTX release.hUj"ubeubehcjPubeubh)r"}r"(hTXAceleryd now shutdowns cleanly when receving the ``TERM`` signal. hUjY"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoNhphhq]r"h)r"}r"(hTX@celeryd now shutdowns cleanly when receving the ``TERM`` signal.hUj"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoMqhq]r"(hzX0celeryd now shutdowns cleanly when receving the r"r"}r"(hTX0celeryd now shutdowns cleanly when receving the hUj"ubj.)r"}r"(hTX``TERM``he}r"(hg]hh]hi]hj]hm]uhUj"hq]r"hzXTERMr"r"}r"(hTUhUj"ubahcj6ubhzX signal.r"r"}r"(hTX signal.hUj"ubeubaubh)r"}r"(hTXceleryd now does a cold shutdown if the ``INT`` signal is received (Ctrl+C), this means it tries to terminate as soon as possible. hUjY"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoNhphhq]r"h)r"}r"(hTXceleryd now does a cold shutdown if the ``INT`` signal is received (Ctrl+C), this means it tries to terminate as soon as possible.hUj"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoMshq]r"(hzX(celeryd now does a cold shutdown if the r"r"}r"(hTX(celeryd now does a cold shutdown if the hUj"ubj.)r"}r"(hTX``INT``he}r"(hg]hh]hi]hj]hm]uhUj"hq]r"hzXINTr"r"}r"(hTUhUj"ubahcj6ubhzXS signal is received (Ctrl+C), this means it tries to terminate as soon as possible.r"r"}r"(hTXS signal is received (Ctrl+C), this means it tries to terminate as soon as possible.hUj"ubeubaubh)r"}r"(hTXzCaching of results now moved to the base backend classes, so no need to implement this functionality in the base classes. hUjY"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoNhphhq]r"h)r"}r"(hTXyCaching of results now moved to the base backend classes, so no need to implement this functionality in the base classes.r"hUj"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoMvhq]r"hzXyCaching of results now moved to the base backend classes, so no need to implement this functionality in the base classes.r"r"}r"(hTj"hUj"ubaubaubh)r"}r"(hTXCaches are now also limited in size, so their memory usage doesn't grow out of control. You can set the maximum number of results the cache can hold using the ``CELERY_MAX_CACHED_RESULTS`` setting (the default is five thousand results). In addition, you can refetch already retrieved results using ``backend.reload_task_result`` + ``backend.reload_taskset_result`` (that's for those who want to send results incrementally). hUjY"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoNhphhq]r"(h)r"}r"(hTXWCaches are now also limited in size, so their memory usage doesn't grow out of control.r"hUj"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoMyhq]r"hzXWCaches are now also limited in size, so their memory usage doesn't grow out of control.r"r"}r"(hTj"hUj"ubaubj:)r"}r"(hTUhe}r"(hg]hh]hi]hj]hm]uhUj"hq]r"h)r"}r"(hTXOYou can set the maximum number of results the cache can hold using the ``CELERY_MAX_CACHED_RESULTS`` setting (the default is five thousand results). In addition, you can refetch already retrieved results using ``backend.reload_task_result`` + ``backend.reload_taskset_result`` (that's for those who want to send results incrementally).hUj"h^hahchhe}r"(hg]hh]hi]hj]hm]uhoM|hq]r"(hzXGYou can set the maximum number of results the cache can hold using the r"r"}r"(hTXGYou can set the maximum number of results the cache can hold using the hUj"ubj.)r"}r"(hTX``CELERY_MAX_CACHED_RESULTS``he}r#(hg]hh]hi]hj]hm]uhUj"hq]r#hzXCELERY_MAX_CACHED_RESULTSr#r#}r#(hTUhUj"ubahcj6ubhzXn setting (the default is five thousand results). In addition, you can refetch already retrieved results using r#r#}r#(hTXn setting (the default is five thousand results). In addition, you can refetch already retrieved results using hUj"ubj.)r#}r #(hTX``backend.reload_task_result``he}r #(hg]hh]hi]hj]hm]uhUj"hq]r #hzXbackend.reload_task_resultr #r #}r#(hTUhUj#ubahcj6ubhzX + r#r#}r#(hTX + hUj"ubj.)r#}r#(hTX!``backend.reload_taskset_result``he}r#(hg]hh]hi]hj]hm]uhUj"hq]r#hzXbackend.reload_taskset_resultr#r#}r#(hTUhUj#ubahcj6ubhzX; (that's for those who want to send results incrementally).r#r#}r#(hTX; (that's for those who want to send results incrementally).hUj"ubeubahcjPubeubh)r#}r#(hTX``celeryd`` now works on Windows again. Note that if running with Django, you can't use ``project.settings`` as the settings module name, but the following should work:: $ python manage.py celeryd --settings=settings hUjY"h^hahchhe}r#(hg]hh]hi]hj]hm]uhoNhphhq]r#(h)r #}r!#(hTX'``celeryd`` now works on Windows again.hUj#h^hahchhe}r"#(hg]hh]hi]hj]hm]uhoMhq]r##(j.)r$#}r%#(hTX ``celeryd``he}r&#(hg]hh]hi]hj]hm]uhUj #hq]r'#hzXcelerydr(#r)#}r*#(hTUhUj$#ubahcj6ubhzX now works on Windows again.r+#r,#}r-#(hTX now works on Windows again.hUj #ubeubj:)r.#}r/#(hTUhe}r0#(hg]hh]hi]hj]hm]uhUj#hq]r1#(h)r2#}r3#(hTXNote that if running with Django, you can't use ``project.settings`` as the settings module name, but the following should work::hUj.#h^hahchhe}r4#(hg]hh]hi]hj]hm]uhoMhq]r5#(hzX0Note that if running with Django, you can't use r6#r7#}r8#(hTX0Note that if running with Django, you can't use hUj2#ubj.)r9#}r:#(hTX``project.settings``he}r;#(hg]hh]hi]hj]hm]uhUj2#hq]r<#hzXproject.settingsr=#r>#}r?#(hTUhUj9#ubahcj6ubhzX< as the settings module name, but the following should work:r@#rA#}rB#(hTX< as the settings module name, but the following should work:hUj2#ubeubj)rC#}rD#(hTX.$ python manage.py celeryd --settings=settingshUj.#hcjhe}rE#(jjhj]hi]hg]hh]hm]uhoMhq]rF#hzX.$ python manage.py celeryd --settings=settingsrG#rH#}rI#(hTUhUjC#ubaubehcjPubeubh)rJ#}rK#(hTXExecution: ``.messaging.TaskPublisher.send_task`` now incorporates all the functionality apply_async previously did. Like converting countdowns to eta, so :func:`celery.execute.apply_async` is now simply a convenient front-end to :meth:`celery.messaging.TaskPublisher.send_task`, using the task classes default options. Also :func:`celery.execute.send_task` has been introduced, which can apply tasks using just the task name (useful if the client does not have the destination task in its task registry). Example: >>> from celery.execute import send_task >>> result = send_task("celery.ping", args=[], kwargs={}) >>> result.get() 'pong' hUjY"h^hahchhe}rL#(hg]hh]hi]hj]hm]uhoNhphhq]rM#(h)rN#}rO#(hTXtExecution: ``.messaging.TaskPublisher.send_task`` now incorporates all the functionality apply_async previously did.hUjJ#h^hahchhe}rP#(hg]hh]hi]hj]hm]uhoMhq]rQ#(hzX Execution: rR#rS#}rT#(hTX Execution: hUjN#ubj.)rU#}rV#(hTX&``.messaging.TaskPublisher.send_task``he}rW#(hg]hh]hi]hj]hm]uhUjN#hq]rX#hzX".messaging.TaskPublisher.send_taskrY#rZ#}r[#(hTUhUjU#ubahcj6ubhzXC now incorporates all the functionality apply_async previously did.r\#r]#}r^#(hTXC now incorporates all the functionality apply_async previously did.hUjN#ubeubj:)r_#}r`#(hTUhe}ra#(hg]hh]hi]hj]hm]uhUjJ#hq]rb#(h)rc#}rd#(hTXLike converting countdowns to eta, so :func:`celery.execute.apply_async` is now simply a convenient front-end to :meth:`celery.messaging.TaskPublisher.send_task`, using the task classes default options.hUj_#h^hahchhe}re#(hg]hh]hi]hj]hm]uhoMhq]rf#(hzX&Like converting countdowns to eta, so rg#rh#}ri#(hTX&Like converting countdowns to eta, so hUjc#ubje)rj#}rk#(hTX":func:`celery.execute.apply_async`rl#hUjc#h^hahcjihe}rm#(UreftypeXfuncjkjlXcelery.execute.apply_asyncU refdomainXpyrn#hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]ro#j.)rp#}rq#(hTjl#he}rr#(hg]hh]rs#(jwjn#Xpy-funcrt#ehi]hj]hm]uhUjj#hq]ru#hzXcelery.execute.apply_async()rv#rw#}rx#(hTUhUjp#ubahcj6ubaubhzX) is now simply a convenient front-end to ry#rz#}r{#(hTX) is now simply a convenient front-end to hUjc#ubje)r|#}r}#(hTX0:meth:`celery.messaging.TaskPublisher.send_task`r~#hUjc#h^hahcjihe}r#(UreftypeXmethjkjlX(celery.messaging.TaskPublisher.send_taskU refdomainXpyr#hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r#j.)r#}r#(hTj~#he}r#(hg]hh]r#(jwj#Xpy-methr#ehi]hj]hm]uhUj|#hq]r#hzX*celery.messaging.TaskPublisher.send_task()r#r#}r#(hTUhUj#ubahcj6ubaubhzX), using the task classes default options.r#r#}r#(hTX), using the task classes default options.hUjc#ubeubh)r#}r#(hTXAlso :func:`celery.execute.send_task` has been introduced, which can apply tasks using just the task name (useful if the client does not have the destination task in its task registry).hUj_#h^hahchhe}r#(hg]hh]hi]hj]hm]uhoMhq]r#(hzXAlso r#r#}r#(hTXAlso hUj#ubje)r#}r#(hTX :func:`celery.execute.send_task`r#hUj#h^hahcjihe}r#(UreftypeXfuncjkjlXcelery.execute.send_taskU refdomainXpyr#hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r#j.)r#}r#(hTj#he}r#(hg]hh]r#(jwj#Xpy-funcr#ehi]hj]hm]uhUj#hq]r#hzXcelery.execute.send_task()r#r#}r#(hTUhUj#ubahcj6ubaubhzX has been introduced, which can apply tasks using just the task name (useful if the client does not have the destination task in its task registry).r#r#}r#(hTX has been introduced, which can apply tasks using just the task name (useful if the client does not have the destination task in its task registry).hUj#ubeubh)r#}r#(hTXExample:r#hUj_#h^hahchhe}r#(hg]hh]hi]hj]hm]uhoMhq]r#hzXExample:r#r#}r#(hTj#hUj#ubaubj)r#}r#(hTXz>>> from celery.execute import send_task >>> result = send_task("celery.ping", args=[], kwargs={}) >>> result.get() 'pong'he}r#(jjhj]hi]hg]hh]hm]uhUj_#hq]r#hzXz>>> from celery.execute import send_task >>> result = send_task("celery.ping", args=[], kwargs={}) >>> result.get() 'pong'r#r#}r#(hTUhUj#ubahcjubehcjPubeubh)r#}r#(hTXp``camqadm``: This is a new utility for command line access to the AMQP API. Excellent for deleting queues/bindings/exchanges, experimentation and testing:: $ camqadm 1> help Gives an interactive shell, type ``help`` for a list of commands. When using Django, use the management command instead:: $ python manage.py camqadm 1> help hUjY"h^hahchhe}r#(hg]hh]hi]hj]hm]uhoNhphhq]r#(h)r#}r#(hTXK``camqadm``: This is a new utility for command line access to the AMQP API.hUj#h^hahchhe}r#(hg]hh]hi]hj]hm]uhoMhq]r#(j.)r#}r#(hTX ``camqadm``he}r#(hg]hh]hi]hj]hm]uhUj#hq]r#hzXcamqadmr#r#}r#(hTUhUj#ubahcj6ubhzX@: This is a new utility for command line access to the AMQP API.r#r#}r#(hTX@: This is a new utility for command line access to the AMQP API.hUj#ubeubj:)r#}r#(hTUhe}r#(hg]hh]hi]hj]hm]uhUj#hq]r#(h)r#}r#(hTXOExcellent for deleting queues/bindings/exchanges, experimentation and testing::hUj#h^hahchhe}r#(hg]hh]hi]hj]hm]uhoMhq]r#hzXNExcellent for deleting queues/bindings/exchanges, experimentation and testing:r#r#}r#(hTXNExcellent for deleting queues/bindings/exchanges, experimentation and testing:hUj#ubaubj)r#}r#(hTX$ camqadm 1> helphUj#hcjhe}r#(jjhj]hi]hg]hh]hm]uhoMhq]r#hzX$ camqadm 1> helpr#r#}r#(hTUhUj#ubaubh)r#}r#(hTXAGives an interactive shell, type ``help`` for a list of commands.hUj#h^hahchhe}r#(hg]hh]hi]hj]hm]uhoMhq]r#(hzX!Gives an interactive shell, type r#r#}r#(hTX!Gives an interactive shell, type hUj#ubj.)r#}r#(hTX``help``he}r#(hg]hh]hi]hj]hm]uhUj#hq]r#hzXhelpr#r#}r#(hTUhUj#ubahcj6ubhzX for a list of commands.r#r#}r#(hTX for a list of commands.hUj#ubeubh)r#}r#(hTX7When using Django, use the management command instead::hUj#h^hahchhe}r#(hg]hh]hi]hj]hm]uhoMhq]r#hzX6When using Django, use the management command instead:r#r#}r#(hTX6When using Django, use the management command instead:hUj#ubaubj)r#}r#(hTX"$ python manage.py camqadm 1> helphUj#hcjhe}r#(jjhj]hi]hg]hh]hm]uhoMhq]r#hzX"$ python manage.py camqadm 1> helpr#r#}r#(hTUhUj#ubaubehcjPubeubh)r#}r#(hTXMRedis result backend: To conform to recent Redis API changes, the following settings has been deprecated: * ``REDIS_TIMEOUT`` * ``REDIS_CONNECT_RETRY`` These will emit a ``DeprecationWarning`` if used. A ``REDIS_PASSWORD`` setting has been added, so you can use the new simple authentication mechanism in Redis. hUjY"h^hahchhe}r#(hg]hh]hi]hj]hm]uhoNhphhq]r#(h)r#}r#(hTXiRedis result backend: To conform to recent Redis API changes, the following settings has been deprecated:r#hUj#h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$hzXiRedis result backend: To conform to recent Redis API changes, the following settings has been deprecated:r$r$}r$(hTj#hUj#ubaubj:)r$}r$(hTUhe}r$(hg]hh]hi]hj]hm]uhUj#hq]r$(j:)r $}r $(hTUhe}r $(hg]hh]hi]hj]hm]uhUj$hq]r $h)r $}r$(hTUhe}r$(j X*hj]hi]hg]hh]hm]uhUj $hq]r$(h)r$}r$(hTX``REDIS_TIMEOUT``r$he}r$(hg]hh]hi]hj]hm]uhUj $hq]r$h)r$}r$(hTj$hUj$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$j.)r$}r$(hTj$he}r$(hg]hh]hi]hj]hm]uhUj$hq]r$hzX REDIS_TIMEOUTr$r$}r $(hTUhUj$ubahcj6ubaubahchubh)r!$}r"$(hTX``REDIS_CONNECT_RETRY`` he}r#$(hg]hh]hi]hj]hm]uhUj $hq]r$$h)r%$}r&$(hTX``REDIS_CONNECT_RETRY``r'$hUj!$h^hahchhe}r($(hg]hh]hi]hj]hm]uhoMhq]r)$j.)r*$}r+$(hTj'$he}r,$(hg]hh]hi]hj]hm]uhUj%$hq]r-$hzXREDIS_CONNECT_RETRYr.$r/$}r0$(hTUhUj*$ubahcj6ubaubahchubehchubahcjPubh)r1$}r2$(hTX1These will emit a ``DeprecationWarning`` if used.hUj$h^hahchhe}r3$(hg]hh]hi]hj]hm]uhoMhq]r4$(hzXThese will emit a r5$r6$}r7$(hTXThese will emit a hUj1$ubj.)r8$}r9$(hTX``DeprecationWarning``he}r:$(hg]hh]hi]hj]hm]uhUj1$hq]r;$hzXDeprecationWarningr<$r=$}r>$(hTUhUj8$ubahcj6ubhzX if used.r?$r@$}rA$(hTX if used.hUj1$ubeubh)rB$}rC$(hTXmA ``REDIS_PASSWORD`` setting has been added, so you can use the new simple authentication mechanism in Redis.hUj$h^hahchhe}rD$(hg]hh]hi]hj]hm]uhoMhq]rE$(hzXA rF$rG$}rH$(hTXA hUjB$ubj.)rI$}rJ$(hTX``REDIS_PASSWORD``he}rK$(hg]hh]hi]hj]hm]uhUjB$hq]rL$hzXREDIS_PASSWORDrM$rN$}rO$(hTUhUjI$ubahcj6ubhzXY setting has been added, so you can use the new simple authentication mechanism in Redis.rP$rQ$}rR$(hTXY setting has been added, so you can use the new simple authentication mechanism in Redis.hUjB$ubeubehcjPubeubh)rS$}rT$(hTX|The redis result backend no longer calls ``SAVE`` when disconnecting, as this is apparently better handled by Redis itself. hUjY"h^hahchhe}rU$(hg]hh]hi]hj]hm]uhoNhphhq]rV$h)rW$}rX$(hTX{The redis result backend no longer calls ``SAVE`` when disconnecting, as this is apparently better handled by Redis itself.hUjS$h^hahchhe}rY$(hg]hh]hi]hj]hm]uhoMhq]rZ$(hzX)The redis result backend no longer calls r[$r\$}r]$(hTX)The redis result backend no longer calls hUjW$ubj.)r^$}r_$(hTX``SAVE``he}r`$(hg]hh]hi]hj]hm]uhUjW$hq]ra$hzXSAVErb$rc$}rd$(hTUhUj^$ubahcj6ubhzXJ when disconnecting, as this is apparently better handled by Redis itself.re$rf$}rg$(hTXJ when disconnecting, as this is apparently better handled by Redis itself.hUjW$ubeubaubh)rh$}ri$(hTX`If ``settings.DEBUG`` is on, celeryd now warns about the possible memory leak it can result in. hUjY"h^hahchhe}rj$(hg]hh]hi]hj]hm]uhoNhphhq]rk$h)rl$}rm$(hTX_If ``settings.DEBUG`` is on, celeryd now warns about the possible memory leak it can result in.hUjh$h^hahchhe}rn$(hg]hh]hi]hj]hm]uhoMhq]ro$(hzXIf rp$rq$}rr$(hTXIf hUjl$ubj.)rs$}rt$(hTX``settings.DEBUG``he}ru$(hg]hh]hi]hj]hm]uhUjl$hq]rv$hzXsettings.DEBUGrw$rx$}ry$(hTUhUjs$ubahcj6ubhzXJ is on, celeryd now warns about the possible memory leak it can result in.rz$r{$}r|$(hTXJ is on, celeryd now warns about the possible memory leak it can result in.hUjl$ubeubaubh)r}$}r~$(hTXEThe ETA scheduler now sleeps at most two seconds between iterations. hUjY"h^hahchhe}r$(hg]hh]hi]hj]hm]uhoNhphhq]r$h)r$}r$(hTXDThe ETA scheduler now sleeps at most two seconds between iterations.r$hUj}$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$hzXDThe ETA scheduler now sleeps at most two seconds between iterations.r$r$}r$(hTj$hUj$ubaubaubh)r$}r$(hTXThe ETA scheduler now deletes any revoked tasks it might encounter. As revokes are not yet persistent, this is done to make sure the task is revoked even though it's currently being hold because its eta is e.g. a week into the future. hUjY"h^hahchhe}r$(hg]hh]hi]hj]hm]uhoNhphhq]r$(h)r$}r$(hTXCThe ETA scheduler now deletes any revoked tasks it might encounter.r$hUj$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$hzXCThe ETA scheduler now deletes any revoked tasks it might encounter.r$r$}r$(hTj$hUj$ubaubj:)r$}r$(hTUhe}r$(hg]hh]hi]hj]hm]uhUj$hq]r$h)r$}r$(hTXAs revokes are not yet persistent, this is done to make sure the task is revoked even though it's currently being hold because its eta is e.g. a week into the future.r$hUj$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$hzXAs revokes are not yet persistent, this is done to make sure the task is revoked even though it's currently being hold because its eta is e.g. a week into the future.r$r$}r$(hTj$hUj$ubaubahcjPubeubh)r$}r$(hTXThe ``task_id`` argument is now respected even if the task is executed eagerly (either using apply, or ``CELERY_ALWAYS_EAGER``). hUjY"h^hahchhe}r$(hg]hh]hi]hj]hm]uhoNhphhq]r$h)r$}r$(hTXThe ``task_id`` argument is now respected even if the task is executed eagerly (either using apply, or ``CELERY_ALWAYS_EAGER``).hUj$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$(hzXThe r$r$}r$(hTXThe hUj$ubj.)r$}r$(hTX ``task_id``he}r$(hg]hh]hi]hj]hm]uhUj$hq]r$hzXtask_idr$r$}r$(hTUhUj$ubahcj6ubhzXX argument is now respected even if the task is executed eagerly (either using apply, or r$r$}r$(hTXX argument is now respected even if the task is executed eagerly (either using apply, or hUj$ubj.)r$}r$(hTX``CELERY_ALWAYS_EAGER``he}r$(hg]hh]hi]hj]hm]uhUj$hq]r$hzXCELERY_ALWAYS_EAGERr$r$}r$(hTUhUj$ubahcj6ubhzX).r$r$}r$(hTX).hUj$ubeubaubh)r$}r$(hTX@The internal queues are now cleared if the connection is reset. hUjY"h^hahchhe}r$(hg]hh]hi]hj]hm]uhoNhphhq]r$h)r$}r$(hTX?The internal queues are now cleared if the connection is reset.r$hUj$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$hzX?The internal queues are now cleared if the connection is reset.r$r$}r$(hTj$hUj$ubaubaubh)r$}r$(hTXNew magic keyword argument: ``delivery_info``. Used by retry() to resend the task to its original destination using the same exchange/routing_key. hUjY"h^hahchhe}r$(hg]hh]hi]hj]hm]uhoNhphhq]r$(h)r$}r$(hTX.New magic keyword argument: ``delivery_info``.hUj$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$(hzXNew magic keyword argument: r$r$}r$(hTXNew magic keyword argument: hUj$ubj.)r$}r$(hTX``delivery_info``he}r$(hg]hh]hi]hj]hm]uhUj$hq]r$hzX delivery_infor$r$}r$(hTUhUj$ubahcj6ubhzX.r$}r$(hTX.hUj$ubeubj:)r$}r$(hTUhe}r$(hg]hh]hi]hj]hm]uhUj$hq]r$h)r$}r$(hTXcUsed by retry() to resend the task to its original destination using the same exchange/routing_key.r$hUj$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$hzXcUsed by retry() to resend the task to its original destination using the same exchange/routing_key.r$r$}r$(hTj$hUj$ubaubahcjPubeubh)r$}r$(hTXUEvents: Fields was not passed by ``.send()`` (fixes the uuid keyerrors in celerymon) hUjY"h^hahchhe}r$(hg]hh]hi]hj]hm]uhoNhphhq]r$h)r$}r$(hTXTEvents: Fields was not passed by ``.send()`` (fixes the uuid keyerrors in celerymon)hUj$h^hahchhe}r$(hg]hh]hi]hj]hm]uhoMhq]r$(hzX!Events: Fields was not passed by r$r$}r$(hTX!Events: Fields was not passed by hUj$ubj.)r$}r$(hTX ``.send()``he}r$(hg]hh]hi]hj]hm]uhUj$hq]r$hzX.send()r$r$}r$(hTUhUj$ubahcj6ubhzX( (fixes the uuid keyerrors in celerymon)r$r$}r%(hTX( (fixes the uuid keyerrors in celerymon)hUj$ubeubaubh)r%}r%(hTXAdded ``--schedule``/``-s`` option to celeryd, so it is possible to specify a custom schedule filename when using an embedded celerybeat server (the ``-B``/``--beat``) option. hUjY"h^hahchhe}r%(hg]hh]hi]hj]hm]uhoNhphhq]r%h)r%}r%(hTXAdded ``--schedule``/``-s`` option to celeryd, so it is possible to specify a custom schedule filename when using an embedded celerybeat server (the ``-B``/``--beat``) option.hUj%h^hahchhe}r%(hg]hh]hi]hj]hm]uhoMhq]r%(hzXAdded r %r %}r %(hTXAdded hUj%ubj.)r %}r %(hTX``--schedule``he}r%(hg]hh]hi]hj]hm]uhUj%hq]r%hzX --scheduler%r%}r%(hTUhUj %ubahcj6ubhzX/r%}r%(hTX/hUj%ubj.)r%}r%(hTX``-s``he}r%(hg]hh]hi]hj]hm]uhUj%hq]r%hzX-sr%r%}r%(hTUhUj%ubahcj6ubhzXz option to celeryd, so it is possible to specify a custom schedule filename when using an embedded celerybeat server (the r%r%}r%(hTXz option to celeryd, so it is possible to specify a custom schedule filename when using an embedded celerybeat server (the hUj%ubj.)r%}r %(hTX``-B``he}r!%(hg]hh]hi]hj]hm]uhUj%hq]r"%hzX-Br#%r$%}r%%(hTUhUj%ubahcj6ubhzX/r&%}r'%(hTX/hUj%ubj.)r(%}r)%(hTX ``--beat``he}r*%(hg]hh]hi]hj]hm]uhUj%hq]r+%hzX--beatr,%r-%}r.%(hTUhUj(%ubahcj6ubhzX ) option.r/%r0%}r1%(hTX ) option.hUj%ubeubaubh)r2%}r3%(hTX<Better Python 2.4 compatibility. The test suite now passes. hUjY"h^hahchhe}r4%(hg]hh]hi]hj]hm]uhoNhphhq]r5%h)r6%}r7%(hTX;Better Python 2.4 compatibility. The test suite now passes.r8%hUj2%h^hahchhe}r9%(hg]hh]hi]hj]hm]uhoMhq]r:%hzX;Better Python 2.4 compatibility. The test suite now passes.r;%r<%}r=%(hTj8%hUj6%ubaubaubh)r>%}r?%(hTXktask decorators: Now preserve docstring as ``cls.__doc__``, (was previously copied to ``cls.run.__doc__``) hUjY"h^hahchhe}r@%(hg]hh]hi]hj]hm]uhoNhphhq]rA%h)rB%}rC%(hTXjtask decorators: Now preserve docstring as ``cls.__doc__``, (was previously copied to ``cls.run.__doc__``)hUj>%h^hahchhe}rD%(hg]hh]hi]hj]hm]uhoMhq]rE%(hzX+task decorators: Now preserve docstring as rF%rG%}rH%(hTX+task decorators: Now preserve docstring as hUjB%ubj.)rI%}rJ%(hTX``cls.__doc__``he}rK%(hg]hh]hi]hj]hm]uhUjB%hq]rL%hzX cls.__doc__rM%rN%}rO%(hTUhUjI%ubahcj6ubhzX, (was previously copied to rP%rQ%}rR%(hTX, (was previously copied to hUjB%ubj.)rS%}rT%(hTX``cls.run.__doc__``he}rU%(hg]hh]hi]hj]hm]uhUjB%hq]rV%hzXcls.run.__doc__rW%rX%}rY%(hTUhUjS%ubahcj6ubhzX)rZ%}r[%(hTX)hUjB%ubeubaubh)r\%}r]%(hTXThe ``testproj`` directory has been renamed to ``tests`` and we're now using ``nose`` + ``django-nose`` for test discovery, and ``unittest2`` for test cases. hUjY"h^hahchhe}r^%(hg]hh]hi]hj]hm]uhoNhphhq]r_%h)r`%}ra%(hTXThe ``testproj`` directory has been renamed to ``tests`` and we're now using ``nose`` + ``django-nose`` for test discovery, and ``unittest2`` for test cases.hUj\%h^hahchhe}rb%(hg]hh]hi]hj]hm]uhoMhq]rc%(hzXThe rd%re%}rf%(hTXThe hUj`%ubj.)rg%}rh%(hTX ``testproj``he}ri%(hg]hh]hi]hj]hm]uhUj`%hq]rj%hzXtestprojrk%rl%}rm%(hTUhUjg%ubahcj6ubhzX directory has been renamed to rn%ro%}rp%(hTX directory has been renamed to hUj`%ubj.)rq%}rr%(hTX ``tests``he}rs%(hg]hh]hi]hj]hm]uhUj`%hq]rt%hzXtestsru%rv%}rw%(hTUhUjq%ubahcj6ubhzX and we're now using rx%ry%}rz%(hTX and we're now using hUj`%ubj.)r{%}r|%(hTX``nose``he}r}%(hg]hh]hi]hj]hm]uhUj`%hq]r~%hzXnoser%r%}r%(hTUhUj{%ubahcj6ubhzX + r%r%}r%(hTX + hUj`%ubj.)r%}r%(hTX``django-nose``he}r%(hg]hh]hi]hj]hm]uhUj`%hq]r%hzX django-noser%r%}r%(hTUhUj%ubahcj6ubhzX for test discovery, and r%r%}r%(hTX for test discovery, and hUj`%ubj.)r%}r%(hTX ``unittest2``he}r%(hg]hh]hi]hj]hm]uhUj`%hq]r%hzX unittest2r%r%}r%(hTUhUj%ubahcj6ubhzX for test cases.r%r%}r%(hTX for test cases.hUj`%ubeubaubh)r%}r%(hTXBNew pip requirements files available in ``contrib/requirements``. hUjY"h^hahchhe}r%(hg]hh]hi]hj]hm]uhoNhphhq]r%h)r%}r%(hTXANew pip requirements files available in ``contrib/requirements``.hUj%h^hahchhe}r%(hg]hh]hi]hj]hm]uhoMhq]r%(hzX(New pip requirements files available in r%r%}r%(hTX(New pip requirements files available in hUj%ubj.)r%}r%(hTX``contrib/requirements``he}r%(hg]hh]hi]hj]hm]uhUj%hq]r%hzXcontrib/requirementsr%r%}r%(hTUhUj%ubahcj6ubhzX.r%}r%(hTX.hUj%ubeubaubh)r%}r%(hTX=TaskPublisher: Declarations are now done once (per process). hUjY"h^hahchhe}r%(hg]hh]hi]hj]hm]uhoNhphhq]r%h)r%}r%(hTX<TaskPublisher: Declarations are now done once (per process).r%hUj%h^hahchhe}r%(hg]hh]hi]hj]hm]uhoMhq]r%hzX<TaskPublisher: Declarations are now done once (per process).r%r%}r%(hTj%hUj%ubaubaubh)r%}r%(hTXAdded ``Task.delivery_mode`` and the ``CELERY_DEFAULT_DELIVERY_MODE`` setting. These can be used to mark messages non-persistent (i.e. so they are lost if the broker is restarted). hUjY"h^hahchhe}r%(hg]hh]hi]hj]hm]uhoNhphhq]r%(h)r%}r%(hTXNAdded ``Task.delivery_mode`` and the ``CELERY_DEFAULT_DELIVERY_MODE`` setting.hUj%h^hahchhe}r%(hg]hh]hi]hj]hm]uhoMhq]r%(hzXAdded r%r%}r%(hTXAdded hUj%ubj.)r%}r%(hTX``Task.delivery_mode``he}r%(hg]hh]hi]hj]hm]uhUj%hq]r%hzXTask.delivery_moder%r%}r%(hTUhUj%ubahcj6ubhzX and the r%r%}r%(hTX and the hUj%ubj.)r%}r%(hTX ``CELERY_DEFAULT_DELIVERY_MODE``he}r%(hg]hh]hi]hj]hm]uhUj%hq]r%hzXCELERY_DEFAULT_DELIVERY_MODEr%r%}r%(hTUhUj%ubahcj6ubhzX setting.r%r%}r%(hTX setting.hUj%ubeubj:)r%}r%(hTUhe}r%(hg]hh]hi]hj]hm]uhUj%hq]r%h)r%}r%(hTXeThese can be used to mark messages non-persistent (i.e. so they are lost if the broker is restarted).r%hUj%h^hahchhe}r%(hg]hh]hi]hj]hm]uhoMhq]r%hzXeThese can be used to mark messages non-persistent (i.e. so they are lost if the broker is restarted).r%r%}r%(hTj%hUj%ubaubahcjPubeubh)r%}r%(hTXVNow have our own ``ImproperlyConfigured`` exception, instead of using the Django one. hUjY"h^hahchhe}r%(hg]hh]hi]hj]hm]uhoNhphhq]r%h)r%}r%(hTXUNow have our own ``ImproperlyConfigured`` exception, instead of using the Django one.hUj%h^hahchhe}r%(hg]hh]hi]hj]hm]uhoMhq]r%(hzXNow have our own r%r%}r%(hTXNow have our own hUj%ubj.)r%}r%(hTX``ImproperlyConfigured``he}r%(hg]hh]hi]hj]hm]uhUj%hq]r%hzXImproperlyConfiguredr%r%}r%(hTUhUj%ubahcj6ubhzX, exception, instead of using the Django one.r%r%}r%(hTX, exception, instead of using the Django one.hUj%ubeubaubh)r%}r%(hTXImprovements to the debian init scripts: Shows an error if the program is not executeable. Does not modify ``CELERYD`` when using django with virtualenv. hUjY"h^hahchhe}r%(hg]hh]hi]hj]hm]uhoNhphhq]r%h)r%}r%(hTXImprovements to the debian init scripts: Shows an error if the program is not executeable. Does not modify ``CELERYD`` when using django with virtualenv.hUj%h^hahchhe}r%(hg]hh]hi]hj]hm]uhoMhq]r&(hzXkImprovements to the debian init scripts: Shows an error if the program is not executeable. Does not modify r&r&}r&(hTXkImprovements to the debian init scripts: Shows an error if the program is not executeable. Does not modify hUj%ubj.)r&}r&(hTX ``CELERYD``he}r&(hg]hh]hi]hj]hm]uhUj%hq]r&hzXCELERYDr&r &}r &(hTUhUj&ubahcj6ubhzX# when using django with virtualenv.r &r &}r &(hTX# when using django with virtualenv.hUj%ubeubaubeubeubhV)r&}r&(hTUhUh\h^hahchdhe}r&(hg]hh]hi]hj]r&jahm]r&hauhoMhphhq]r&(hs)r&}r&(hTjhUj&h^hahchwhe}r&(hj]hi]hg]hh]hm]jjuhoMhphhq]r&hzX1.0.0r&r&}r&(hTjhUj&ubaubj)r&}r&(hTUhUj&h^hahcjhe}r&(hg]hh]hi]hj]hm]uhoMhphhq]r&j)r&}r &(hTUhUj&h^hahcjhe}r!&(hg]hh]hi]hj]hm]uhoMhphhq]r"&(j)r#&}r$&(hTX release-dater%&he}r&&(hg]hh]hi]hj]hm]uhUj&hq]r'&hzX release-dater(&r)&}r*&(hTj%&hUj#&ubahcjubj)r+&}r,&(hTX2010-02-10 04:00 P.M CET he}r-&(hg]hh]hi]hj]hm]uhUj&hq]r.&h)r/&}r0&(hTX2010-02-10 04:00 P.M CETr1&hUj+&h^hahchhe}r2&(hg]hh]hi]hj]hm]uhoMhq]r3&hzX2010-02-10 04:00 P.M CETr4&r5&}r6&(hTj1&hUj/&ubaubahcjubeubaubhV)r7&}r8&(hTUhYKhUj&h^hahchdhe}r9&(hg]r:&jahh]hi]hj]r;&jahm]uhoMhphhq]r<&(hs)r=&}r>&(hTjhUj7&h^hahchwhe}r?&(hj]hi]hg]hh]hm]jjuhoMhphhq]r@&hzXBackward incompatible changesrA&rB&}rC&(hTjhUj=&ubaubh)rD&}rE&(hTUhUj7&h^hahchhe}rF&(j X*hj]hi]hg]hh]hm]uhoMhphhq]rG&(h)rH&}rI&(hTXjCelery does not support detaching anymore, so you have to use the tools available on your platform, or something like supervisord to make celeryd/celerybeat/celerymon into background processes. We've had too many problems with celeryd daemonizing itself, so it was decided it has to be removed. Example startup scripts has been added to ``contrib/``: * Debian, Ubuntu, (start-stop-daemon) ``contrib/debian/init.d/celeryd`` ``contrib/debian/init.d/celerybeat`` * Mac OS X launchd ``contrib/mac/org.celeryq.celeryd.plist`` ``contrib/mac/org.celeryq.celerybeat.plist`` ``contrib/mac/org.celeryq.celerymon.plist`` * Supervisord (http://supervisord.org) ``contrib/supervisord/supervisord.conf`` In addition to ``--detach``, the following program arguments has been removed: ``--uid``, ``--gid``, ``--workdir``, ``--chroot``, ``--pidfile``, ``--umask``. All good daemonization tools should support equivalent functionality, so don't worry. Also the following configuration keys has been removed: ``CELERYD_PID_FILE``, ``CELERYBEAT_PID_FILE``, ``CELERYMON_PID_FILE``. hUjD&h^hahchhe}rJ&(hg]hh]hi]hj]hm]uhoNhphhq]rK&(h)rL&}rM&(hTXCelery does not support detaching anymore, so you have to use the tools available on your platform, or something like supervisord to make celeryd/celerybeat/celerymon into background processes.rN&hUjH&h^hahchhe}rO&(hg]hh]hi]hj]hm]uhoMhq]rP&hzXCelery does not support detaching anymore, so you have to use the tools available on your platform, or something like supervisord to make celeryd/celerybeat/celerymon into background processes.rQ&rR&}rS&(hTjN&hUjL&ubaubj:)rT&}rU&(hTUhe}rV&(hg]hh]hi]hj]hm]uhUjH&hq]rW&(h)rX&}rY&(hTXWe've had too many problems with celeryd daemonizing itself, so it was decided it has to be removed. Example startup scripts has been added to ``contrib/``:hUjT&h^hahchhe}rZ&(hg]hh]hi]hj]hm]uhoMhq]r[&(hzXWe've had too many problems with celeryd daemonizing itself, so it was decided it has to be removed. Example startup scripts has been added to r\&r]&}r^&(hTXWe've had too many problems with celeryd daemonizing itself, so it was decided it has to be removed. Example startup scripts has been added to hUjX&ubj.)r_&}r`&(hTX ``contrib/``he}ra&(hg]hh]hi]hj]hm]uhUjX&hq]rb&hzXcontrib/rc&rd&}re&(hTUhUj_&ubahcj6ubhzX:rf&}rg&(hTX:hUjX&ubeubh)rh&}ri&(hTUhe}rj&(j X*hj]hi]hg]hh]hm]uhUjT&hq]rk&(h)rl&}rm&(hTXpDebian, Ubuntu, (start-stop-daemon) ``contrib/debian/init.d/celeryd`` ``contrib/debian/init.d/celerybeat`` he}rn&(hg]hh]hi]hj]hm]uhUjh&hq]ro&(h)rp&}rq&(hTX#Debian, Ubuntu, (start-stop-daemon)rr&hUjl&h^hahchhe}rs&(hg]hh]hi]hj]hm]uhoMhq]rt&hzX#Debian, Ubuntu, (start-stop-daemon)ru&rv&}rw&(hTjr&hUjp&ubaubj:)rx&}ry&(hTUhe}rz&(hg]hh]hi]hj]hm]uhUjl&hq]r{&h)r|&}r}&(hTXF``contrib/debian/init.d/celeryd`` ``contrib/debian/init.d/celerybeat``hUjx&h^hahchhe}r~&(hg]hh]hi]hj]hm]uhoMhq]r&(j.)r&}r&(hTX!``contrib/debian/init.d/celeryd``he}r&(hg]hh]hi]hj]hm]uhUj|&hq]r&hzXcontrib/debian/init.d/celerydr&r&}r&(hTUhUj&ubahcj6ubhzX r&}r&(hTX hUj|&ubj.)r&}r&(hTX$``contrib/debian/init.d/celerybeat``he}r&(hg]hh]hi]hj]hm]uhUj|&hq]r&hzX contrib/debian/init.d/celerybeatr&r&}r&(hTUhUj&ubahcj6ubeubahcjPubehchubh)r&}r&(hTXMac OS X launchd ``contrib/mac/org.celeryq.celeryd.plist`` ``contrib/mac/org.celeryq.celerybeat.plist`` ``contrib/mac/org.celeryq.celerymon.plist`` he}r&(hg]hh]hi]hj]hm]uhUjh&hq]r&(h)r&}r&(hTXMac OS X launchdr&hUj&h^hahchhe}r&(hg]hh]hi]hj]hm]uhoMhq]r&hzXMac OS X launchdr&r&}r&(hTj&hUj&ubaubj:)r&}r&(hTUhe}r&(hg]hh]hi]hj]hm]uhUj&hq]r&h)r&}r&(hTX``contrib/mac/org.celeryq.celeryd.plist`` ``contrib/mac/org.celeryq.celerybeat.plist`` ``contrib/mac/org.celeryq.celerymon.plist``hUj&h^hahchhe}r&(hg]hh]hi]hj]hm]uhoMhq]r&(j.)r&}r&(hTX)``contrib/mac/org.celeryq.celeryd.plist``he}r&(hg]hh]hi]hj]hm]uhUj&hq]r&hzX%contrib/mac/org.celeryq.celeryd.plistr&r&}r&(hTUhUj&ubahcj6ubhzX r&}r&(hTX hUj&ubj.)r&}r&(hTX,``contrib/mac/org.celeryq.celerybeat.plist``he}r&(hg]hh]hi]hj]hm]uhUj&hq]r&hzX(contrib/mac/org.celeryq.celerybeat.plistr&r&}r&(hTUhUj&ubahcj6ubhzX r&}r&(hTX hUj&ubj.)r&}r&(hTX+``contrib/mac/org.celeryq.celerymon.plist``he}r&(hg]hh]hi]hj]hm]uhUj&hq]r&hzX'contrib/mac/org.celeryq.celerymon.plistr&r&}r&(hTUhUj&ubahcj6ubeubahcjPubehchubh)r&}r&(hTXQSupervisord (http://supervisord.org) ``contrib/supervisord/supervisord.conf`` he}r&(hg]hh]hi]hj]hm]uhUjh&hq]r&(h)r&}r&(hTX$Supervisord (http://supervisord.org)hUj&h^hahchhe}r&(hg]hh]hi]hj]hm]uhoM hq]r&(hzX Supervisord (r&r&}r&(hTX Supervisord (hUj&ubh)r&}r&(hTXhttp://supervisord.orgr&he}r&(Urefurij&hj]hi]hg]hh]hm]uhUj&hq]r&hzXhttp://supervisord.orgr&r&}r&(hTUhUj&ubahchubhzX)r&}r&(hTX)hUj&ubeubj:)r&}r&(hTUhe}r&(hg]hh]hi]hj]hm]uhUj&hq]r&h)r&}r&(hTX(``contrib/supervisord/supervisord.conf``r&hUj&h^hahchhe}r&(hg]hh]hi]hj]hm]uhoM hq]r&j.)r&}r&(hTj&he}r&(hg]hh]hi]hj]hm]uhUj&hq]r&hzX$contrib/supervisord/supervisord.confr&r&}r&(hTUhUj&ubahcj6ubaubahcjPubehchubehchubh)r&}r&(hTXIn addition to ``--detach``, the following program arguments has been removed: ``--uid``, ``--gid``, ``--workdir``, ``--chroot``, ``--pidfile``, ``--umask``. All good daemonization tools should support equivalent functionality, so don't worry.hUjT&h^hahchhe}r&(hg]hh]hi]hj]hm]uhoMhq]r&(hzXIn addition to r&r&}r&(hTXIn addition to hUj&ubj.)r&}r&(hTX ``--detach``he}r&(hg]hh]hi]hj]hm]uhUj&hq]r&hzX--detachr&r&}r&(hTUhUj&ubahcj6ubhzX4, the following program arguments has been removed: r&r&}r&(hTX4, the following program arguments has been removed: hUj&ubj.)r&}r&(hTX ``--uid``he}r&(hg]hh]hi]hj]hm]uhUj&hq]r&hzX--uidr&r&}r&(hTUhUj&ubahcj6ubhzX, r&r&}r&(hTX, hUj&ubj.)r&}r&(hTX ``--gid``he}r&(hg]hh]hi]hj]hm]uhUj&hq]r'hzX--gidr'r'}r'(hTUhUj&ubahcj6ubhzX, r'r'}r'(hTX, hUj&ubj.)r'}r'(hTX ``--workdir``he}r '(hg]hh]hi]hj]hm]uhUj&hq]r 'hzX --workdirr 'r '}r '(hTUhUj'ubahcj6ubhzX, r'r'}r'(hTX, hUj&ubj.)r'}r'(hTX ``--chroot``he}r'(hg]hh]hi]hj]hm]uhUj&hq]r'hzX--chrootr'r'}r'(hTUhUj'ubahcj6ubhzX, r'r'}r'(hTX, hUj&ubj.)r'}r'(hTX ``--pidfile``he}r'(hg]hh]hi]hj]hm]uhUj&hq]r'hzX --pidfiler'r '}r!'(hTUhUj'ubahcj6ubhzX, r"'r#'}r$'(hTX, hUj&ubj.)r%'}r&'(hTX ``--umask``he}r''(hg]hh]hi]hj]hm]uhUj&hq]r('hzX--umaskr)'r*'}r+'(hTUhUj%'ubahcj6ubhzXW. All good daemonization tools should support equivalent functionality, so don't worry.r,'r-'}r.'(hTXW. All good daemonization tools should support equivalent functionality, so don't worry.hUj&ubeubh)r/'}r0'(hTX~Also the following configuration keys has been removed: ``CELERYD_PID_FILE``, ``CELERYBEAT_PID_FILE``, ``CELERYMON_PID_FILE``.hUjT&h^hahchhe}r1'(hg]hh]hi]hj]hm]uhoMhq]r2'(hzX8Also the following configuration keys has been removed: r3'r4'}r5'(hTX8Also the following configuration keys has been removed: hUj/'ubj.)r6'}r7'(hTX``CELERYD_PID_FILE``he}r8'(hg]hh]hi]hj]hm]uhUj/'hq]r9'hzXCELERYD_PID_FILEr:'r;'}r<'(hTUhUj6'ubahcj6ubhzX, r='r>'}r?'(hTX, hUj/'ubj.)r@'}rA'(hTX``CELERYBEAT_PID_FILE``he}rB'(hg]hh]hi]hj]hm]uhUj/'hq]rC'hzXCELERYBEAT_PID_FILErD'rE'}rF'(hTUhUj@'ubahcj6ubhzX, rG'rH'}rI'(hTX, hUj/'ubj.)rJ'}rK'(hTX``CELERYMON_PID_FILE``he}rL'(hg]hh]hi]hj]hm]uhUj/'hq]rM'hzXCELERYMON_PID_FILErN'rO'}rP'(hTUhUjJ'ubahcj6ubhzX.rQ'}rR'(hTX.hUj/'ubeubehcjPubeubh)rS'}rT'(hTXsDefault celeryd loglevel is now ``WARN``, to enable the previous log level start celeryd with ``--loglevel=INFO``. hUjD&h^hahchhe}rU'(hg]hh]hi]hj]hm]uhoNhphhq]rV'h)rW'}rX'(hTXrDefault celeryd loglevel is now ``WARN``, to enable the previous log level start celeryd with ``--loglevel=INFO``.hUjS'h^hahchhe}rY'(hg]hh]hi]hj]hm]uhoMhq]rZ'(hzX Default celeryd loglevel is now r['r\'}r]'(hTX Default celeryd loglevel is now hUjW'ubj.)r^'}r_'(hTX``WARN``he}r`'(hg]hh]hi]hj]hm]uhUjW'hq]ra'hzXWARNrb'rc'}rd'(hTUhUj^'ubahcj6ubhzX6, to enable the previous log level start celeryd with re'rf'}rg'(hTX6, to enable the previous log level start celeryd with hUjW'ubj.)rh'}ri'(hTX``--loglevel=INFO``he}rj'(hg]hh]hi]hj]hm]uhUjW'hq]rk'hzX--loglevel=INFOrl'rm'}rn'(hTUhUjh'ubahcj6ubhzX.ro'}rp'(hTX.hUjW'ubeubaubh)rq'}rr'(hTX;Tasks are automatically registered. This means you no longer have to register your tasks manually. You don't have to change your old code right away, as it doesn't matter if a task is registered twice. If you don't want your task to be automatically registered you can set the ``abstract`` attribute .. code-block:: python class MyTask(Task): abstract = True By using ``abstract`` only tasks subclassing this task will be automatically registered (this works like the Django ORM). If you don't want subclasses to be registered either, you can set the ``autoregister`` attribute to ``False``. Incidentally, this change also fixes the problems with automatic name assignment and relative imports. So you also don't have to specify a task name anymore if you use relative imports. hUjD&h^hahchhe}rs'(hg]hh]hi]hj]hm]uhoNhphhq]rt'(h)ru'}rv'(hTX#Tasks are automatically registered.rw'hUjq'h^hahchhe}rx'(hg]hh]hi]hj]hm]uhoMhq]ry'hzX#Tasks are automatically registered.rz'r{'}r|'(hTjw'hUju'ubaubj:)r}'}r~'(hTUhe}r'(hg]hh]hi]hj]hm]uhUjq'hq]r'(h)r'}r'(hTXThis means you no longer have to register your tasks manually. You don't have to change your old code right away, as it doesn't matter if a task is registered twice.r'hUj}'h^hahchhe}r'(hg]hh]hi]hj]hm]uhoMhq]r'hzXThis means you no longer have to register your tasks manually. You don't have to change your old code right away, as it doesn't matter if a task is registered twice.r'r'}r'(hTj'hUj'ubaubh)r'}r'(hTXaIf you don't want your task to be automatically registered you can set the ``abstract`` attributehUj}'h^hahchhe}r'(hg]hh]hi]hj]hm]uhoM hq]r'(hzXKIf you don't want your task to be automatically registered you can set the r'r'}r'(hTXKIf you don't want your task to be automatically registered you can set the hUj'ubj.)r'}r'(hTX ``abstract``he}r'(hg]hh]hi]hj]hm]uhUj'hq]r'hzXabstractr'r'}r'(hTUhUj'ubahcj6ubhzX attributer'r'}r'(hTX attributehUj'ubeubj)r'}r'(hTX'class MyTask(Task): abstract = TruehUj}'h^hahcjhe}r'(jjXpythonjjhj]hi]hg]hh]hm]uhoM#hq]r'hzX'class MyTask(Task): abstract = Truer'r'}r'(hTUhUj'ubaubh)r'}r'(hTXyBy using ``abstract`` only tasks subclassing this task will be automatically registered (this works like the Django ORM).hUj}'h^hahchhe}r'(hg]hh]hi]hj]hm]uhoM(hq]r'(hzX By using r'r'}r'(hTX By using hUj'ubj.)r'}r'(hTX ``abstract``he}r'(hg]hh]hi]hj]hm]uhUj'hq]r'hzXabstractr'r'}r'(hTUhUj'ubahcj6ubhzXd only tasks subclassing this task will be automatically registered (this works like the Django ORM).r'r'}r'(hTXd only tasks subclassing this task will be automatically registered (this works like the Django ORM).hUj'ubeubh)r'}r'(hTXnIf you don't want subclasses to be registered either, you can set the ``autoregister`` attribute to ``False``.hUj}'h^hahchhe}r'(hg]hh]hi]hj]hm]uhoM+hq]r'(hzXFIf you don't want subclasses to be registered either, you can set the r'r'}r'(hTXFIf you don't want subclasses to be registered either, you can set the hUj'ubj.)r'}r'(hTX``autoregister``he}r'(hg]hh]hi]hj]hm]uhUj'hq]r'hzX autoregisterr'r'}r'(hTUhUj'ubahcj6ubhzX attribute to r'r'}r'(hTX attribute to hUj'ubj.)r'}r'(hTX ``False``he}r'(hg]hh]hi]hj]hm]uhUj'hq]r'hzXFalser'r'}r'(hTUhUj'ubahcj6ubhzX.r'}r'(hTX.hUj'ubeubh)r'}r'(hTXIncidentally, this change also fixes the problems with automatic name assignment and relative imports. So you also don't have to specify a task name anymore if you use relative imports.r'hUj}'h^hahchhe}r'(hg]hh]hi]hj]hm]uhoM.hq]r'hzXIncidentally, this change also fixes the problems with automatic name assignment and relative imports. So you also don't have to specify a task name anymore if you use relative imports.r'r'}r'(hTj'hUj'ubaubehcjPubeubh)r'}r'(hTXYou can no longer use regular functions as tasks. This change was added because it makes the internals a lot more clean and simple. However, you can now turn functions into tasks by using the ``@task`` decorator: .. code-block:: python from celery.decorators import task @task def add(x, y): return x + y See the User Guide: :doc:`userguide/tasks` for more information. hUjD&h^hahchhe}r'(hg]hh]hi]hj]hm]uhoNhphhq]r'(h)r'}r'(hTX1You can no longer use regular functions as tasks.r'hUj'h^hahchhe}r'(hg]hh]hi]hj]hm]uhoM2hq]r'hzX1You can no longer use regular functions as tasks.r'r'}r'(hTj'hUj'ubaubj:)r'}r'(hTUhe}r'(hg]hh]hi]hj]hm]uhUj'hq]r'(h)r'}r'(hTXThis change was added because it makes the internals a lot more clean and simple. However, you can now turn functions into tasks by using the ``@task`` decorator:hUj'h^hahchhe}r'(hg]hh]hi]hj]hm]uhoM4hq]r'(hzXThis change was added because it makes the internals a lot more clean and simple. However, you can now turn functions into tasks by using the r'r'}r'(hTXThis change was added because it makes the internals a lot more clean and simple. However, you can now turn functions into tasks by using the hUj'ubj.)r'}r'(hTX ``@task``he}r'(hg]hh]hi]hj]hm]uhUj'hq]r'hzX@taskr'r'}r'(hTUhUj'ubahcj6ubhzX decorator:r'r'}r'(hTX decorator:hUj'ubeubj)r'}r'(hTXIfrom celery.decorators import task @task def add(x, y): return x + yhUj'h^hahcjhe}r'(jjXpythonjjhj]hi]hg]hh]hm]uhoM8hq]r'hzXIfrom celery.decorators import task @task def add(x, y): return x + yr'r'}r'(hTUhUj'ubaubh)r'}r'(hTX@See the User Guide: :doc:`userguide/tasks` for more information.hUj'h^hahchhe}r'(hg]hh]hi]hj]hm]uhoM@hq]r'(hzXSee the User Guide: r(r(}r((hTXSee the User Guide: hUj'ubje)r(}r((hTX:doc:`userguide/tasks`r(hUj'h^hahcjihe}r((UreftypeXdocr(jkjlXuserguide/tasksU refdomainUhj]hi]U refexplicithg]hh]hm]jnjouhoM@hq]r(j.)r (}r ((hTj(he}r ((hg]hh]r ((jwj(ehi]hj]hm]uhUj(hq]r (hzXuserguide/tasksr(r(}r((hTUhUj (ubahcj6ubaubhzX for more information.r(r(}r((hTX for more information.hUj'ubeubehcjPubeubh)r(}r((hTX!The periodic task system has been rewritten to a centralized solution. This means ``celeryd`` no longer schedules periodic tasks by default, but a new daemon has been introduced: ``celerybeat``. To launch the periodic task scheduler you have to run celerybeat:: $ celerybeat Make sure this is running on one server only, if you run it twice, all periodic tasks will also be executed twice. If you only have one worker server you can embed it into celeryd like this:: $ celeryd --beat # Embed celerybeat in celeryd. hUjD&h^hahchhe}r((hg]hh]hi]hj]hm]uhoNhphhq]r((h)r(}r((hTXFThe periodic task system has been rewritten to a centralized solution.r(hUj(h^hahchhe}r((hg]hh]hi]hj]hm]uhoMBhq]r(hzXFThe periodic task system has been rewritten to a centralized solution.r(r(}r((hTj(hUj(ubaubj:)r (}r!((hTUhe}r"((hg]hh]hi]hj]hm]uhUj(hq]r#((h)r$(}r%((hTX{This means ``celeryd`` no longer schedules periodic tasks by default, but a new daemon has been introduced: ``celerybeat``.hUj (h^hahchhe}r&((hg]hh]hi]hj]hm]uhoMDhq]r'((hzX This means r((r)(}r*((hTX This means hUj$(ubj.)r+(}r,((hTX ``celeryd``he}r-((hg]hh]hi]hj]hm]uhUj$(hq]r.(hzXcelerydr/(r0(}r1((hTUhUj+(ubahcj6ubhzXV no longer schedules periodic tasks by default, but a new daemon has been introduced: r2(r3(}r4((hTXV no longer schedules periodic tasks by default, but a new daemon has been introduced: hUj$(ubj.)r5(}r6((hTX``celerybeat``he}r7((hg]hh]hi]hj]hm]uhUj$(hq]r8(hzX celerybeatr9(r:(}r;((hTUhUj5(ubahcj6ubhzX.r<(}r=((hTX.hUj$(ubeubh)r>(}r?((hTXBTo launch the periodic task scheduler you have to run celerybeat::hUj (h^hahchhe}r@((hg]hh]hi]hj]hm]uhoMGhq]rA(hzXATo launch the periodic task scheduler you have to run celerybeat:rB(rC(}rD((hTXATo launch the periodic task scheduler you have to run celerybeat:hUj>(ubaubj)rE(}rF((hTX $ celerybeathUj (hcjhe}rG((jjhj]hi]hg]hh]hm]uhoMIhq]rH(hzX $ celerybeatrI(rJ(}rK((hTUhUjE(ubaubh)rL(}rM((hTXrMake sure this is running on one server only, if you run it twice, all periodic tasks will also be executed twice.rN(hUj (h^hahchhe}rO((hg]hh]hi]hj]hm]uhoMKhq]rP(hzXrMake sure this is running on one server only, if you run it twice, all periodic tasks will also be executed twice.rQ(rR(}rS((hTjN(hUjL(ubaubh)rT(}rU((hTXLIf you only have one worker server you can embed it into celeryd like this::hUj (h^hahchhe}rV((hg]hh]hi]hj]hm]uhoMNhq]rW(hzXKIf you only have one worker server you can embed it into celeryd like this:rX(rY(}rZ((hTXKIf you only have one worker server you can embed it into celeryd like this:hUjT(ubaubj)r[(}r\((hTX/$ celeryd --beat # Embed celerybeat in celeryd.hUj (hcjhe}r]((jjhj]hi]hg]hh]hm]uhoMPhq]r^(hzX/$ celeryd --beat # Embed celerybeat in celeryd.r_(r`(}ra((hTUhUj[(ubaubehcjPubeubh)rb(}rc((hTXThe supervisor has been removed. This means the ``-S`` and ``--supervised`` options to ``celeryd`` is no longer supported. Please use something like http://supervisord.org instead. hUjD&h^hahchhe}rd((hg]hh]hi]hj]hm]uhoNhphhq]re((h)rf(}rg((hTX The supervisor has been removed.rh(hUjb(h^hahchhe}ri((hg]hh]hi]hj]hm]uhoMRhq]rj(hzX The supervisor has been removed.rk(rl(}rm((hTjh(hUjf(ubaubj:)rn(}ro((hTUhe}rp((hg]hh]hi]hj]hm]uhUjb(hq]rq(h)rr(}rs((hTXThis means the ``-S`` and ``--supervised`` options to ``celeryd`` is no longer supported. Please use something like http://supervisord.org instead.hUjn(h^hahchhe}rt((hg]hh]hi]hj]hm]uhoMThq]ru((hzXThis means the rv(rw(}rx((hTXThis means the hUjr(ubj.)ry(}rz((hTX``-S``he}r{((hg]hh]hi]hj]hm]uhUjr(hq]r|(hzX-Sr}(r~(}r((hTUhUjy(ubahcj6ubhzX and r(r(}r((hTX and hUjr(ubj.)r(}r((hTX``--supervised``he}r((hg]hh]hi]hj]hm]uhUjr(hq]r(hzX --supervisedr(r(}r((hTUhUj(ubahcj6ubhzX options to r(r(}r((hTX options to hUjr(ubj.)r(}r((hTX ``celeryd``he}r((hg]hh]hi]hj]hm]uhUjr(hq]r(hzXcelerydr(r(}r((hTUhUj(ubahcj6ubhzX3 is no longer supported. Please use something like r(r(}r((hTX3 is no longer supported. Please use something like hUjr(ubh)r(}r((hTXhttp://supervisord.orgr(he}r((Urefurij(hj]hi]hg]hh]hm]uhUjr(hq]r(hzXhttp://supervisord.orgr(r(}r((hTUhUj(ubahchubhzX instead.r(r(}r((hTX instead.hUjr(ubeubahcjPubeubh)r(}r((hTXG``TaskSet.join`` has been removed, use ``TaskSetResult.join`` instead. hUjD&h^hahchhe}r((hg]hh]hi]hj]hm]uhoNhphhq]r(h)r(}r((hTXF``TaskSet.join`` has been removed, use ``TaskSetResult.join`` instead.hUj(h^hahchhe}r((hg]hh]hi]hj]hm]uhoMXhq]r((j.)r(}r((hTX``TaskSet.join``he}r((hg]hh]hi]hj]hm]uhUj(hq]r(hzX TaskSet.joinr(r(}r((hTUhUj(ubahcj6ubhzX has been removed, use r(r(}r((hTX has been removed, use hUj(ubj.)r(}r((hTX``TaskSetResult.join``he}r((hg]hh]hi]hj]hm]uhUj(hq]r(hzXTaskSetResult.joinr(r(}r((hTUhUj(ubahcj6ubhzX instead.r(r(}r((hTX instead.hUj(ubeubaubh)r(}r((hTX<The task status ``"DONE"`` has been renamed to `"SUCCESS"`. hUjD&h^hahchhe}r((hg]hh]hi]hj]hm]uhoNhphhq]r(h)r(}r((hTX;The task status ``"DONE"`` has been renamed to `"SUCCESS"`.hUj(h^hahchhe}r((hg]hh]hi]hj]hm]uhoMZhq]r((hzXThe task status r(r(}r((hTXThe task status hUj(ubj.)r(}r((hTX ``"DONE"``he}r((hg]hh]hi]hj]hm]uhUj(hq]r(hzX"DONE"r(r(}r((hTUhUj(ubahcj6ubhzX has been renamed to r(r(}r((hTX has been renamed to hUj(ubj)r(}r((hTX `"SUCCESS"`he}r((hg]hh]hi]hj]hm]uhUj(hq]r(hzX "SUCCESS"r(r(}r((hTUhUj(ubahcjubhzX.r(}r((hTX.hUj(ubeubaubh)r(}r((hTXR``AsyncResult.is_done`` has been removed, use ``AsyncResult.successful`` instead. hUjD&h^hahchhe}r((hg]hh]hi]hj]hm]uhoNhphhq]r(h)r(}r((hTXQ``AsyncResult.is_done`` has been removed, use ``AsyncResult.successful`` instead.hUj(h^hahchhe}r((hg]hh]hi]hj]hm]uhoM\hq]r((j.)r(}r((hTX``AsyncResult.is_done``he}r((hg]hh]hi]hj]hm]uhUj(hq]r(hzXAsyncResult.is_doner(r(}r((hTUhUj(ubahcj6ubhzX has been removed, use r(r(}r((hTX has been removed, use hUj(ubj.)r(}r((hTX``AsyncResult.successful``he}r((hg]hh]hi]hj]hm]uhUj(hq]r(hzXAsyncResult.successfulr(r(}r((hTUhUj(ubahcj6ubhzX instead.r(r(}r((hTX instead.hUj(ubeubaubh)r(}r((hTXThe worker no longer stores errors if ``Task.ignore_result`` is set, to revert to the previous behaviour set ``CELERY_STORE_ERRORS_EVEN_IF_IGNORED`` to ``True``. hUjD&h^hahchhe}r((hg]hh]hi]hj]hm]uhoNhphhq]r(h)r(}r((hTXThe worker no longer stores errors if ``Task.ignore_result`` is set, to revert to the previous behaviour set ``CELERY_STORE_ERRORS_EVEN_IF_IGNORED`` to ``True``.hUj(h^hahchhe}r((hg]hh]hi]hj]hm]uhoM_hq]r((hzX&The worker no longer stores errors if r)r)}r)(hTX&The worker no longer stores errors if hUj(ubj.)r)}r)(hTX``Task.ignore_result``he}r)(hg]hh]hi]hj]hm]uhUj(hq]r)hzXTask.ignore_resultr)r)}r )(hTUhUj)ubahcj6ubhzX1 is set, to revert to the previous behaviour set r )r )}r )(hTX1 is set, to revert to the previous behaviour set hUj(ubj.)r )}r)(hTX'``CELERY_STORE_ERRORS_EVEN_IF_IGNORED``he}r)(hg]hh]hi]hj]hm]uhUj(hq]r)hzX#CELERY_STORE_ERRORS_EVEN_IF_IGNOREDr)r)}r)(hTUhUj )ubahcj6ubhzX to r)r)}r)(hTX to hUj(ubj.)r)}r)(hTX``True``he}r)(hg]hh]hi]hj]hm]uhUj(hq]r)hzXTruer)r)}r)(hTUhUj)ubahcj6ubhzX.r)}r)(hTX.hUj(ubeubaubh)r )}r!)(hTXThe staticstics functionality has been removed in favor of events, so the ``-S`` and ``--statistics`` switches has been removed. hUjD&h^hahchhe}r")(hg]hh]hi]hj]hm]uhoNhphhq]r#)h)r$)}r%)(hTXThe staticstics functionality has been removed in favor of events, so the ``-S`` and ``--statistics`` switches has been removed.hUj )h^hahchhe}r&)(hg]hh]hi]hj]hm]uhoMchq]r')(hzXJThe staticstics functionality has been removed in favor of events, so the r()r))}r*)(hTXJThe staticstics functionality has been removed in favor of events, so the hUj$)ubj.)r+)}r,)(hTX``-S``he}r-)(hg]hh]hi]hj]hm]uhUj$)hq]r.)hzX-Sr/)r0)}r1)(hTUhUj+)ubahcj6ubhzX and r2)r3)}r4)(hTX and hUj$)ubj.)r5)}r6)(hTX``--statistics``he}r7)(hg]hh]hi]hj]hm]uhUj$)hq]r8)hzX --statisticsr9)r:)}r;)(hTUhUj5)ubahcj6ubhzX switches has been removed.r<)r=)}r>)(hTX switches has been removed.hUj$)ubeubaubh)r?)}r@)(hTX6The module ``celery.task.strategy`` has been removed. hUjD&h^hahchhe}rA)(hg]hh]hi]hj]hm]uhoNhphhq]rB)h)rC)}rD)(hTX5The module ``celery.task.strategy`` has been removed.hUj?)h^hahchhe}rE)(hg]hh]hi]hj]hm]uhoMfhq]rF)(hzX The module rG)rH)}rI)(hTX The module hUjC)ubj.)rJ)}rK)(hTX``celery.task.strategy``he}rL)(hg]hh]hi]hj]hm]uhUjC)hq]rM)hzXcelery.task.strategyrN)rO)}rP)(hTUhUjJ)ubahcj6ubhzX has been removed.rQ)rR)}rS)(hTX has been removed.hUjC)ubeubaubh)rT)}rU)(hTX``celery.discovery`` has been removed, and it's ``autodiscover`` function is now in ``celery.loaders.djangoapp``. Reason: Internal API. hUjD&h^hahchhe}rV)(hg]hh]hi]hj]hm]uhoNhphhq]rW)h)rX)}rY)(hTX``celery.discovery`` has been removed, and it's ``autodiscover`` function is now in ``celery.loaders.djangoapp``. Reason: Internal API.hUjT)h^hahchhe}rZ)(hg]hh]hi]hj]hm]uhoMhhq]r[)(j.)r\)}r])(hTX``celery.discovery``he}r^)(hg]hh]hi]hj]hm]uhUjX)hq]r_)hzXcelery.discoveryr`)ra)}rb)(hTUhUj\)ubahcj6ubhzX has been removed, and it's rc)rd)}re)(hTX has been removed, and it's hUjX)ubj.)rf)}rg)(hTX``autodiscover``he}rh)(hg]hh]hi]hj]hm]uhUjX)hq]ri)hzX autodiscoverrj)rk)}rl)(hTUhUjf)ubahcj6ubhzX function is now in rm)rn)}ro)(hTX function is now in hUjX)ubj.)rp)}rq)(hTX``celery.loaders.djangoapp``he}rr)(hg]hh]hi]hj]hm]uhUjX)hq]rs)hzXcelery.loaders.djangoapprt)ru)}rv)(hTUhUjp)ubahcj6ubhzX. Reason: Internal API.rw)rx)}ry)(hTX. Reason: Internal API.hUjX)ubeubaubh)rz)}r{)(hTX``CELERY_LOADER`` now needs loader class name in addition to module name, E.g. where you previously had: ``"celery.loaders.default"``, you now need ``"celery.loaders.default.Loader"``, using the previous syntax will result in a DeprecationWarning. hUjD&h^hahchhe}r|)(hg]hh]hi]hj]hm]uhoNhphhq]r})(h)r~)}r)(hTXI``CELERY_LOADER`` now needs loader class name in addition to module name,hUjz)h^hahchhe}r)(hg]hh]hi]hj]hm]uhoMkhq]r)(j.)r)}r)(hTX``CELERY_LOADER``he}r)(hg]hh]hi]hj]hm]uhUj~)hq]r)hzX CELERY_LOADERr)r)}r)(hTUhUj)ubahcj6ubhzX8 now needs loader class name in addition to module name,r)r)}r)(hTX8 now needs loader class name in addition to module name,hUj~)ubeubj:)r)}r)(hTUhe}r)(hg]hh]hi]hj]hm]uhUjz)hq]r)h)r)}r)(hTXE.g. where you previously had: ``"celery.loaders.default"``, you now need ``"celery.loaders.default.Loader"``, using the previous syntax will result in a DeprecationWarning.hUj)h^hahchhe}r)(hg]hh]hi]hj]hm]uhoMmhq]r)(hzXE.g. where you previously had: r)r)}r)(hTXE.g. where you previously had: hUj)ubj.)r)}r)(hTX``"celery.loaders.default"``he}r)(hg]hh]hi]hj]hm]uhUj)hq]r)hzX"celery.loaders.default"r)r)}r)(hTUhUj)ubahcj6ubhzX, you now need r)r)}r)(hTX, you now need hUj)ubj.)r)}r)(hTX#``"celery.loaders.default.Loader"``he}r)(hg]hh]hi]hj]hm]uhUj)hq]r)hzX"celery.loaders.default.Loader"r)r)}r)(hTUhUj)ubahcj6ubhzX@, using the previous syntax will result in a DeprecationWarning.r)r)}r)(hTX@, using the previous syntax will result in a DeprecationWarning.hUj)ubeubahcjPubeubh)r)}r)(hTXDetecting the loader is now lazy, and so is not done when importing ``celery.loaders``. To make this happen ``celery.loaders.settings`` has been renamed to ``load_settings`` and is now a function returning the settings object. ``celery.loaders.current_loader`` is now also a function, returning the current loader. So:: loader = current_loader needs to be changed to:: loader = current_loader() hUjD&h^hahchhe}r)(hg]hh]hi]hj]hm]uhoNhphhq]r)(h)r)}r)(hTXWDetecting the loader is now lazy, and so is not done when importing ``celery.loaders``.hUj)h^hahchhe}r)(hg]hh]hi]hj]hm]uhoMqhq]r)(hzXDDetecting the loader is now lazy, and so is not done when importing r)r)}r)(hTXDDetecting the loader is now lazy, and so is not done when importing hUj)ubj.)r)}r)(hTX``celery.loaders``he}r)(hg]hh]hi]hj]hm]uhUj)hq]r)hzXcelery.loadersr)r)}r)(hTUhUj)ubahcj6ubhzX.r)}r)(hTX.hUj)ubeubj:)r)}r)(hTUhe}r)(hg]hh]hi]hj]hm]uhUj)hq]r)(h)r)}r)(hTXTo make this happen ``celery.loaders.settings`` has been renamed to ``load_settings`` and is now a function returning the settings object. ``celery.loaders.current_loader`` is now also a function, returning the current loader.hUj)h^hahchhe}r)(hg]hh]hi]hj]hm]uhoMthq]r)(hzXTo make this happen r)r)}r)(hTXTo make this happen hUj)ubj.)r)}r)(hTX``celery.loaders.settings``he}r)(hg]hh]hi]hj]hm]uhUj)hq]r)hzXcelery.loaders.settingsr)r)}r)(hTUhUj)ubahcj6ubhzX has been renamed to r)r)}r)(hTX has been renamed to hUj)ubj.)r)}r)(hTX``load_settings``he}r)(hg]hh]hi]hj]hm]uhUj)hq]r)hzX load_settingsr)r)}r)(hTUhUj)ubahcj6ubhzX6 and is now a function returning the settings object. r)r)}r)(hTX6 and is now a function returning the settings object. hUj)ubj.)r)}r)(hTX!``celery.loaders.current_loader``he}r)(hg]hh]hi]hj]hm]uhUj)hq]r)hzXcelery.loaders.current_loaderr)r)}r)(hTUhUj)ubahcj6ubhzX6 is now also a function, returning the current loader.r)r)}r)(hTX6 is now also a function, returning the current loader.hUj)ubeubh)r)}r)(hTXSo::hUj)h^hahchhe}r)(hg]hh]hi]hj]hm]uhoMyhq]r)hzXSo:r)r)}r)(hTXSo:hUj)ubaubj)r)}r)(hTXloader = current_loaderhUj)hcjhe}r)(jjhj]hi]hg]hh]hm]uhoM{hq]r)hzXloader = current_loaderr)r)}r)(hTUhUj)ubaubh)r)}r)(hTXneeds to be changed to::hUj)h^hahchhe}r)(hg]hh]hi]hj]hm]uhoM}hq]r)hzXneeds to be changed to:r)r)}r)(hTXneeds to be changed to:hUj)ubaubj)r)}r)(hTXloader = current_loader()hUj)hcjhe}r)(jjhj]hi]hg]hh]hm]uhoMhq]r*hzXloader = current_loader()r*r*}r*(hTUhUj)ubaubehcjPubeubeubeubhV)r*}r*(hTUhUj&h^hahchdhe}r*(hg]hh]hi]hj]r*jahm]r*hauhoMhphhq]r *(hs)r *}r *(hTjhUj*h^hahchwhe}r *(hj]hi]hg]hh]hm]jjuhoMhphhq]r *hzX Deprecationsr*r*}r*(hTjhUj *ubaubh)r*}r*(hTUhUj*h^hahchhe}r*(j X*hj]hi]hg]hh]hm]uhoMhphhq]r*(h)r*}r*(hTXThe following configuration variables has been renamed and will be deprecated in v2.0: * CELERYD_DAEMON_LOG_FORMAT -> CELERYD_LOG_FORMAT * CELERYD_DAEMON_LOG_LEVEL -> CELERYD_LOG_LEVEL * CELERY_AMQP_CONNECTION_TIMEOUT -> CELERY_BROKER_CONNECTION_TIMEOUT * CELERY_AMQP_CONNECTION_RETRY -> CELERY_BROKER_CONNECTION_RETRY * CELERY_AMQP_CONNECTION_MAX_RETRIES -> CELERY_BROKER_CONNECTION_MAX_RETRIES * SEND_CELERY_TASK_ERROR_EMAILS -> CELERY_SEND_TASK_ERROR_EMAILS hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoNhphhq]r*(h)r*}r*(hTXVThe following configuration variables has been renamed and will be deprecated in v2.0:r*hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoMhq]r*hzXVThe following configuration variables has been renamed and will be deprecated in v2.0:r*r*}r *(hTj*hUj*ubaubj:)r!*}r"*(hTUhe}r#*(hg]hh]hi]hj]hm]uhUj*hq]r$*h)r%*}r&*(hTUhe}r'*(j X*hj]hi]hg]hh]hm]uhUj!*hq]r(*(h)r)*}r**(hTX/CELERYD_DAEMON_LOG_FORMAT -> CELERYD_LOG_FORMATr+*he}r,*(hg]hh]hi]hj]hm]uhUj%*hq]r-*h)r.*}r/*(hTj+*hUj)*h^hahchhe}r0*(hg]hh]hi]hj]hm]uhoMhq]r1*hzX/CELERYD_DAEMON_LOG_FORMAT -> CELERYD_LOG_FORMATr2*r3*}r4*(hTj+*hUj.*ubaubahchubh)r5*}r6*(hTX-CELERYD_DAEMON_LOG_LEVEL -> CELERYD_LOG_LEVELr7*he}r8*(hg]hh]hi]hj]hm]uhUj%*hq]r9*h)r:*}r;*(hTj7*hUj5*h^hahchhe}r<*(hg]hh]hi]hj]hm]uhoMhq]r=*hzX-CELERYD_DAEMON_LOG_LEVEL -> CELERYD_LOG_LEVELr>*r?*}r@*(hTj7*hUj:*ubaubahchubh)rA*}rB*(hTXBCELERY_AMQP_CONNECTION_TIMEOUT -> CELERY_BROKER_CONNECTION_TIMEOUTrC*he}rD*(hg]hh]hi]hj]hm]uhUj%*hq]rE*h)rF*}rG*(hTjC*hUjA*h^hahchhe}rH*(hg]hh]hi]hj]hm]uhoMhq]rI*hzXBCELERY_AMQP_CONNECTION_TIMEOUT -> CELERY_BROKER_CONNECTION_TIMEOUTrJ*rK*}rL*(hTjC*hUjF*ubaubahchubh)rM*}rN*(hTX>CELERY_AMQP_CONNECTION_RETRY -> CELERY_BROKER_CONNECTION_RETRYrO*he}rP*(hg]hh]hi]hj]hm]uhUj%*hq]rQ*h)rR*}rS*(hTjO*hUjM*h^hahchhe}rT*(hg]hh]hi]hj]hm]uhoMhq]rU*hzX>CELERY_AMQP_CONNECTION_RETRY -> CELERY_BROKER_CONNECTION_RETRYrV*rW*}rX*(hTjO*hUjR*ubaubahchubh)rY*}rZ*(hTXJCELERY_AMQP_CONNECTION_MAX_RETRIES -> CELERY_BROKER_CONNECTION_MAX_RETRIESr[*he}r\*(hg]hh]hi]hj]hm]uhUj%*hq]r]*h)r^*}r_*(hTj[*hUjY*h^hahchhe}r`*(hg]hh]hi]hj]hm]uhoMhq]ra*hzXJCELERY_AMQP_CONNECTION_MAX_RETRIES -> CELERY_BROKER_CONNECTION_MAX_RETRIESrb*rc*}rd*(hTj[*hUj^*ubaubahchubh)re*}rf*(hTX?SEND_CELERY_TASK_ERROR_EMAILS -> CELERY_SEND_TASK_ERROR_EMAILS he}rg*(hg]hh]hi]hj]hm]uhUj%*hq]rh*h)ri*}rj*(hTX>SEND_CELERY_TASK_ERROR_EMAILS -> CELERY_SEND_TASK_ERROR_EMAILSrk*hUje*h^hahchhe}rl*(hg]hh]hi]hj]hm]uhoMhq]rm*hzX>SEND_CELERY_TASK_ERROR_EMAILS -> CELERY_SEND_TASK_ERROR_EMAILSrn*ro*}rp*(hTjk*hUji*ubaubahchubehchubahcjPubeubh)rq*}rr*(hTXTThe public api names in celery.conf has also changed to a consistent naming scheme. hUj*h^hahchhe}rs*(hg]hh]hi]hj]hm]uhoNhphhq]rt*h)ru*}rv*(hTXSThe public api names in celery.conf has also changed to a consistent naming scheme.rw*hUjq*h^hahchhe}rx*(hg]hh]hi]hj]hm]uhoMhq]ry*hzXSThe public api names in celery.conf has also changed to a consistent naming scheme.rz*r{*}r|*(hTjw*hUju*ubaubaubh)r}*}r~*(hTXOWe now support consuming from an arbitrary number of queues. To do this we had to rename the configuration syntax. If you use any of the custom AMQP routing options (queue/exchange/routing_key, etc), you should read the new FAQ entry: http://bit.ly/aiWoH. The previous syntax is deprecated and scheduled for removal in v2.0. hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoNhphhq]r*(h)r*}r*(hTX<We now support consuming from an arbitrary number of queues.r*hUj}*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoMhq]r*hzX<We now support consuming from an arbitrary number of queues.r*r*}r*(hTj*hUj*ubaubj:)r*}r*(hTUhe}r*(hg]hh]hi]hj]hm]uhUj}*hq]r*(h)r*}r*(hTXTo do this we had to rename the configuration syntax. If you use any of the custom AMQP routing options (queue/exchange/routing_key, etc), you should read the new FAQ entry: http://bit.ly/aiWoH.hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoMhq]r*(hzXTo do this we had to rename the configuration syntax. If you use any of the custom AMQP routing options (queue/exchange/routing_key, etc), you should read the new FAQ entry: r*r*}r*(hTXTo do this we had to rename the configuration syntax. If you use any of the custom AMQP routing options (queue/exchange/routing_key, etc), you should read the new FAQ entry: hUj*ubh)r*}r*(hTXhttp://bit.ly/aiWoHr*he}r*(Urefurij*hj]hi]hg]hh]hm]uhUj*hq]r*hzXhttp://bit.ly/aiWoHr*r*}r*(hTUhUj*ubahchubhzX.r*}r*(hTX.hUj*ubeubh)r*}r*(hTXDThe previous syntax is deprecated and scheduled for removal in v2.0.r*hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoMhq]r*hzXDThe previous syntax is deprecated and scheduled for removal in v2.0.r*r*}r*(hTj*hUj*ubaubehcjPubeubh)r*}r*(hTX``TaskSet.run`` has been renamed to ``TaskSet.apply_async``. ``TaskSet.run`` has now been deprecated, and is scheduled for removal in v2.0. hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoNhphhq]r*(h)r*}r*(hTX<``TaskSet.run`` has been renamed to ``TaskSet.apply_async``.hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoMhq]r*(j.)r*}r*(hTX``TaskSet.run``he}r*(hg]hh]hi]hj]hm]uhUj*hq]r*hzX TaskSet.runr*r*}r*(hTUhUj*ubahcj6ubhzX has been renamed to r*r*}r*(hTX has been renamed to hUj*ubj.)r*}r*(hTX``TaskSet.apply_async``he}r*(hg]hh]hi]hj]hm]uhUj*hq]r*hzXTaskSet.apply_asyncr*r*}r*(hTUhUj*ubahcj6ubhzX.r*}r*(hTX.hUj*ubeubj:)r*}r*(hTUhe}r*(hg]hh]hi]hj]hm]uhUj*hq]r*h)r*}r*(hTXN``TaskSet.run`` has now been deprecated, and is scheduled for removal in v2.0.hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoMhq]r*(j.)r*}r*(hTX``TaskSet.run``he}r*(hg]hh]hi]hj]hm]uhUj*hq]r*hzX TaskSet.runr*r*}r*(hTUhUj*ubahcj6ubhzX? has now been deprecated, and is scheduled for removal in v2.0.r*r*}r*(hTX? has now been deprecated, and is scheduled for removal in v2.0.hUj*ubeubahcjPubeubeubeubhV)r*}r*(hTUhYKhUj&h^hahchdhe}r*(hg]r*Xnewsr*ahh]hi]hj]r*jahm]uhoMhphhq]r*(hs)r*}r*(hTjhUj*h^hahchwhe}r*(hj]hi]hg]hh]hm]jjuhoMhphhq]r*hzXNewsr*r*}r*(hTjhUj*ubaubh)r*}r*(hTUhUj*h^hahchhe}r*(j X*hj]hi]hg]hh]hm]uhoMhphhq]r*(h)r*}r*(hTX4Rate limiting support (per task type, or globally). hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoNhphhq]r*h)r*}r*(hTX3Rate limiting support (per task type, or globally).r*hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoMhq]r*hzX3Rate limiting support (per task type, or globally).r*r*}r*(hTj*hUj*ubaubaubh)r*}r*(hTXNew periodic task system. hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoNhphhq]r*h)r*}r*(hTXNew periodic task system.r*hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoMhq]r*hzXNew periodic task system.r*r*}r*(hTj*hUj*ubaubaubh)r*}r*(hTXAutomatic registration. hUj*h^hahchhe}r*(hg]hh]hi]hj]hm]uhoNhphhq]r+h)r+}r+(hTXAutomatic registration.r+hUj*h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+hzXAutomatic registration.r+r+}r+(hTj+hUj+ubaubaubh)r +}r +(hTX New cool task decorator syntax. hUj*h^hahchhe}r +(hg]hh]hi]hj]hm]uhoNhphhq]r +h)r +}r+(hTXNew cool task decorator syntax.r+hUj +h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+hzXNew cool task decorator syntax.r+r+}r+(hTj+hUj +ubaubaubh)r+}r+(hTXceleryd now sends events if enabled with the ``-E`` argument. Excellent for monitoring tools, one is already in the making (http://github.com/ask/celerymon). Current events include: worker-heartbeat, task-[received/succeeded/failed/retried], worker-online, worker-offline. hUj*h^hahchhe}r+(hg]hh]hi]hj]hm]uhoNhphhq]r+(h)r+}r+(hTX=celeryd now sends events if enabled with the ``-E`` argument.hUj+h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+(hzX-celeryd now sends events if enabled with the r+r+}r+(hTX-celeryd now sends events if enabled with the hUj+ubj.)r +}r!+(hTX``-E``he}r"+(hg]hh]hi]hj]hm]uhUj+hq]r#+hzX-Er$+r%+}r&+(hTUhUj +ubahcj6ubhzX argument.r'+r(+}r)+(hTX argument.hUj+ubeubj:)r*+}r++(hTUhe}r,+(hg]hh]hi]hj]hm]uhUj+hq]r-+(h)r.+}r/+(hTX_Excellent for monitoring tools, one is already in the making (http://github.com/ask/celerymon).hUj*+h^hahchhe}r0+(hg]hh]hi]hj]hm]uhoMhq]r1+(hzX>Excellent for monitoring tools, one is already in the making (r2+r3+}r4+(hTX>Excellent for monitoring tools, one is already in the making (hUj.+ubh)r5+}r6+(hTXhttp://github.com/ask/celerymonr7+he}r8+(Urefurij7+hj]hi]hg]hh]hm]uhUj.+hq]r9+hzXhttp://github.com/ask/celerymonr:+r;+}r<+(hTUhUj5+ubahchubhzX).r=+r>+}r?+(hTX).hUj.+ubeubh)r@+}rA+(hTXrCurrent events include: worker-heartbeat, task-[received/succeeded/failed/retried], worker-online, worker-offline.rB+hUj*+h^hahchhe}rC+(hg]hh]hi]hj]hm]uhoMhq]rD+hzXrCurrent events include: worker-heartbeat, task-[received/succeeded/failed/retried], worker-online, worker-offline.rE+rF+}rG+(hTjB+hUj@+ubaubehcjPubeubh)rH+}rI+(hTXAYou can now delete (revoke) tasks that has already been applied. hUj*h^hahchhe}rJ+(hg]hh]hi]hj]hm]uhoNhphhq]rK+h)rL+}rM+(hTX@You can now delete (revoke) tasks that has already been applied.rN+hUjH+h^hahchhe}rO+(hg]hh]hi]hj]hm]uhoMhq]rP+hzX@You can now delete (revoke) tasks that has already been applied.rQ+rR+}rS+(hTjN+hUjL+ubaubaubh)rT+}rU+(hTXVYou can now set the hostname celeryd identifies as using the ``--hostname`` argument. hUj*h^hahchhe}rV+(hg]hh]hi]hj]hm]uhoNhphhq]rW+h)rX+}rY+(hTXUYou can now set the hostname celeryd identifies as using the ``--hostname`` argument.hUjT+h^hahchhe}rZ+(hg]hh]hi]hj]hm]uhoMhq]r[+(hzX=You can now set the hostname celeryd identifies as using the r\+r]+}r^+(hTX=You can now set the hostname celeryd identifies as using the hUjX+ubj.)r_+}r`+(hTX``--hostname``he}ra+(hg]hh]hi]hj]hm]uhUjX+hq]rb+hzX --hostnamerc+rd+}re+(hTUhUj_+ubahcj6ubhzX argument.rf+rg+}rh+(hTX argument.hUjX+ubeubaubh)ri+}rj+(hTX;Cache backend now respects ``CELERY_TASK_RESULT_EXPIRES``. hUj*h^hahchhe}rk+(hg]hh]hi]hj]hm]uhoNhphhq]rl+h)rm+}rn+(hTX:Cache backend now respects ``CELERY_TASK_RESULT_EXPIRES``.hUji+h^hahchhe}ro+(hg]hh]hi]hj]hm]uhoMhq]rp+(hzXCache backend now respects rq+rr+}rs+(hTXCache backend now respects hUjm+ubj.)rt+}ru+(hTX``CELERY_TASK_RESULT_EXPIRES``he}rv+(hg]hh]hi]hj]hm]uhUjm+hq]rw+hzXCELERY_TASK_RESULT_EXPIRESrx+ry+}rz+(hTUhUjt+ubahcj6ubhzX.r{+}r|+(hTX.hUjm+ubeubaubh)r}+}r~+(hTXaMessage format has been standardized and now uses ISO-8601 format for dates instead of datetime. hUj*h^hahchhe}r+(hg]hh]hi]hj]hm]uhoNhphhq]r+h)r+}r+(hTX`Message format has been standardized and now uses ISO-8601 format for dates instead of datetime.r+hUj}+h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+hzX`Message format has been standardized and now uses ISO-8601 format for dates instead of datetime.r+r+}r+(hTj+hUj+ubaubaubh)r+}r+(hTXE``celeryd`` now responds to the ``HUP`` signal by restarting itself. hUj*h^hahchhe}r+(hg]hh]hi]hj]hm]uhoNhphhq]r+h)r+}r+(hTXD``celeryd`` now responds to the ``HUP`` signal by restarting itself.hUj+h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+(j.)r+}r+(hTX ``celeryd``he}r+(hg]hh]hi]hj]hm]uhUj+hq]r+hzXcelerydr+r+}r+(hTUhUj+ubahcj6ubhzX now responds to the r+r+}r+(hTX now responds to the hUj+ubj.)r+}r+(hTX``HUP``he}r+(hg]hh]hi]hj]hm]uhUj+hq]r+hzXHUPr+r+}r+(hTUhUj+ubahcj6ubhzX signal by restarting itself.r+r+}r+(hTX signal by restarting itself.hUj+ubeubaubh)r+}r+(hTXPeriodic tasks are now scheduled on the clock. I.e. ``timedelta(hours=1)`` means every hour at :00 minutes, not every hour from the server starts. To revert to the previous behaviour you can set ``PeriodicTask.relative = True``. hUj*h^hahchhe}r+(hg]hh]hi]hj]hm]uhoNhphhq]r+(h)r+}r+(hTX.Periodic tasks are now scheduled on the clock.r+hUj+h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+hzX.Periodic tasks are now scheduled on the clock.r+r+}r+(hTj+hUj+ubaubj:)r+}r+(hTUhe}r+(hg]hh]hi]hj]hm]uhUj+hq]r+h)r+}r+(hTXI.e. ``timedelta(hours=1)`` means every hour at :00 minutes, not every hour from the server starts. To revert to the previous behaviour you can set ``PeriodicTask.relative = True``.hUj+h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+(hzXI.e. r+r+}r+(hTXI.e. hUj+ubj.)r+}r+(hTX``timedelta(hours=1)``he}r+(hg]hh]hi]hj]hm]uhUj+hq]r+hzXtimedelta(hours=1)r+r+}r+(hTUhUj+ubahcj6ubhzXz means every hour at :00 minutes, not every hour from the server starts. To revert to the previous behaviour you can set r+r+}r+(hTXz means every hour at :00 minutes, not every hour from the server starts. To revert to the previous behaviour you can set hUj+ubj.)r+}r+(hTX ``PeriodicTask.relative = True``he}r+(hg]hh]hi]hj]hm]uhUj+hq]r+hzXPeriodicTask.relative = Truer+r+}r+(hTUhUj+ubahcj6ubhzX.r+}r+(hTX.hUj+ubeubahcjPubeubh)r+}r+(hTXNow supports passing execute options to a TaskSets list of args, e.g.: >>> ts = TaskSet(add, [([2, 2], {}, {"countdown": 1}), ... ([4, 4], {}, {"countdown": 2}), ... ([8, 8], {}, {"countdown": 3})]) >>> ts.run() hUj*h^hahchhe}r+(hg]hh]hi]hj]hm]uhoNhphhq]r+(h)r+}r+(hTXFNow supports passing execute options to a TaskSets list of args, e.g.:r+hUj+h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+hzXFNow supports passing execute options to a TaskSets list of args, e.g.:r+r+}r+(hTj+hUj+ubaubj)r+}r+(hTX>>> ts = TaskSet(add, [([2, 2], {}, {"countdown": 1}), ... ([4, 4], {}, {"countdown": 2}), ... ([8, 8], {}, {"countdown": 3})]) >>> ts.run()hUj+h^Nhcjhe}r+(jjhj]hi]hg]hh]hm]uhoNhphhq]r+hzX>>> ts = TaskSet(add, [([2, 2], {}, {"countdown": 1}), ... ([4, 4], {}, {"countdown": 2}), ... ([8, 8], {}, {"countdown": 3})]) >>> ts.run()r+r+}r+(hTUhUj+ubaubeubh)r+}r+(hTXGot a 3x performance gain by setting the prefetch count to four times the concurrency, (from an average task round-trip of 0.1s to 0.03s!). A new setting has been added: ``CELERYD_PREFETCH_MULTIPLIER``, which is set to ``4`` by default. hUj*h^hahchhe}r+(hg]hh]hi]hj]hm]uhoNhphhq]r+(h)r+}r+(hTXGot a 3x performance gain by setting the prefetch count to four times the concurrency, (from an average task round-trip of 0.1s to 0.03s!).r+hUj+h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+hzXGot a 3x performance gain by setting the prefetch count to four times the concurrency, (from an average task round-trip of 0.1s to 0.03s!).r+r+}r+(hTj+hUj+ubaubj:)r+}r+(hTUhe}r+(hg]hh]hi]hj]hm]uhUj+hq]r+h)r+}r+(hTX`A new setting has been added: ``CELERYD_PREFETCH_MULTIPLIER``, which is set to ``4`` by default.hUj+h^hahchhe}r+(hg]hh]hi]hj]hm]uhoMhq]r+(hzXA new setting has been added: r+r+}r+(hTXA new setting has been added: hUj+ubj.)r+}r+(hTX``CELERYD_PREFETCH_MULTIPLIER``he}r+(hg]hh]hi]hj]hm]uhUj+hq]r+hzXCELERYD_PREFETCH_MULTIPLIERr+r+}r+(hTUhUj+ubahcj6ubhzX, which is set to r,r,}r,(hTX, which is set to hUj+ubj.)r,}r,(hTX``4``he}r,(hg]hh]hi]hj]hm]uhUj+hq]r,hzX4r,}r,(hTUhUj,ubahcj6ubhzX by default.r ,r ,}r ,(hTX by default.hUj+ubeubahcjPubeubh)r ,}r ,(hTXImproved support for webhook tasks. ``celery.task.rest`` is now deprecated, replaced with the new and shiny :mod:`celery.task.http`. With more reflective names, sensible interface, and it's possible to override the methods used to perform HTTP requests. hUj*h^hahchhe}r,(hg]hh]hi]hj]hm]uhoNhphhq]r,(h)r,}r,(hTX#Improved support for webhook tasks.r,hUj ,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,hzX#Improved support for webhook tasks.r,r,}r,(hTj,hUj,ubaubj:)r,}r,(hTUhe}r,(hg]hh]hi]hj]hm]uhUj ,hq]r,h)r,}r,(hTX``celery.task.rest`` is now deprecated, replaced with the new and shiny :mod:`celery.task.http`. With more reflective names, sensible interface, and it's possible to override the methods used to perform HTTP requests.hUj,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,(j.)r ,}r!,(hTX``celery.task.rest``he}r",(hg]hh]hi]hj]hm]uhUj,hq]r#,hzXcelery.task.restr$,r%,}r&,(hTUhUj ,ubahcj6ubhzX4 is now deprecated, replaced with the new and shiny r',r(,}r),(hTX4 is now deprecated, replaced with the new and shiny hUj,ubje)r*,}r+,(hTX:mod:`celery.task.http`r,,hUj,h^hahcjihe}r-,(UreftypeXmodjkjlXcelery.task.httpU refdomainXpyr.,hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r/,j.)r0,}r1,(hTj,,he}r2,(hg]hh]r3,(jwj.,Xpy-modr4,ehi]hj]hm]uhUj*,hq]r5,hzXcelery.task.httpr6,r7,}r8,(hTUhUj0,ubahcj6ubaubhzXz. With more reflective names, sensible interface, and it's possible to override the methods used to perform HTTP requests.r9,r:,}r;,(hTXz. With more reflective names, sensible interface, and it's possible to override the methods used to perform HTTP requests.hUj,ubeubahcjPubeubh)r<,}r=,(hTXLThe results of tasksets are now cached by storing it in the result backend. hUj*h^hahchhe}r>,(hg]hh]hi]hj]hm]uhoNhphhq]r?,h)r@,}rA,(hTXKThe results of tasksets are now cached by storing it in the result backend.rB,hUj<,h^hahchhe}rC,(hg]hh]hi]hj]hm]uhoMhq]rD,hzXKThe results of tasksets are now cached by storing it in the result backend.rE,rF,}rG,(hTjB,hUj@,ubaubaubeubeubhV)rH,}rI,(hTUhYKhUj&h^hahchdhe}rJ,(hg]rK,jahh]hi]hj]rL,jahm]uhoMhphhq]rM,(hs)rN,}rO,(hTjhUjH,h^hahchwhe}rP,(hj]hi]hg]hh]hm]jjuhoMhphhq]rQ,hzXChangesrR,rS,}rT,(hTjhUjN,ubaubh)rU,}rV,(hTUhUjH,h^hahchhe}rW,(j X*hj]hi]hg]hh]hm]uhoMhphhq]rX,(h)rY,}rZ,(hTXNow depends on carrot >= 0.8.1 hUjU,h^hahchhe}r[,(hg]hh]hi]hj]hm]uhoNhphhq]r\,h)r],}r^,(hTXNow depends on carrot >= 0.8.1r_,hUjY,h^hahchhe}r`,(hg]hh]hi]hj]hm]uhoMhq]ra,hzXNow depends on carrot >= 0.8.1rb,rc,}rd,(hTj_,hUj],ubaubaubh)re,}rf,(hTX@New dependencies: billiard, python-dateutil, django-picklefield hUjU,h^hahchhe}rg,(hg]hh]hi]hj]hm]uhoNhphhq]rh,h)ri,}rj,(hTX?New dependencies: billiard, python-dateutil, django-picklefieldrk,hUje,h^hahchhe}rl,(hg]hh]hi]hj]hm]uhoMhq]rm,hzX?New dependencies: billiard, python-dateutil, django-picklefieldrn,ro,}rp,(hTjk,hUji,ubaubaubh)rq,}rr,(hTX#No longer depends on python-daemon hUjU,h^hahchhe}rs,(hg]hh]hi]hj]hm]uhoNhphhq]rt,h)ru,}rv,(hTX"No longer depends on python-daemonrw,hUjq,h^hahchhe}rx,(hg]hh]hi]hj]hm]uhoMhq]ry,hzX"No longer depends on python-daemonrz,r{,}r|,(hTjw,hUju,ubaubaubh)r},}r~,(hTXLThe ``uuid`` distribution is added as a dependency when running Python 2.4. hUjU,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoNhphhq]r,h)r,}r,(hTXKThe ``uuid`` distribution is added as a dependency when running Python 2.4.hUj},h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,(hzXThe r,r,}r,(hTXThe hUj,ubj.)r,}r,(hTX``uuid``he}r,(hg]hh]hi]hj]hm]uhUj,hq]r,hzXuuidr,r,}r,(hTUhUj,ubahcj6ubhzX? distribution is added as a dependency when running Python 2.4.r,r,}r,(hTX? distribution is added as a dependency when running Python 2.4.hUj,ubeubaubh)r,}r,(hTXNow remembers the previously detected loader by keeping it in the ``CELERY_LOADER`` environment variable. This may help on windows where fork emulation is used. hUjU,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoNhphhq]r,(h)r,}r,(hTXiNow remembers the previously detected loader by keeping it in the ``CELERY_LOADER`` environment variable.hUj,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,(hzXBNow remembers the previously detected loader by keeping it in the r,r,}r,(hTXBNow remembers the previously detected loader by keeping it in the hUj,ubj.)r,}r,(hTX``CELERY_LOADER``he}r,(hg]hh]hi]hj]hm]uhUj,hq]r,hzX CELERY_LOADERr,r,}r,(hTUhUj,ubahcj6ubhzX environment variable.r,r,}r,(hTX environment variable.hUj,ubeubj:)r,}r,(hTUhe}r,(hg]hh]hi]hj]hm]uhUj,hq]r,h)r,}r,(hTX6This may help on windows where fork emulation is used.r,hUj,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,hzX6This may help on windows where fork emulation is used.r,r,}r,(hTj,hUj,ubaubahcjPubeubh)r,}r,(hTXETA no longer sends datetime objects, but uses ISO 8601 date format in a string for better compatibility with other platforms. hUjU,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoNhphhq]r,h)r,}r,(hTX~ETA no longer sends datetime objects, but uses ISO 8601 date format in a string for better compatibility with other platforms.r,hUj,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,hzX~ETA no longer sends datetime objects, but uses ISO 8601 date format in a string for better compatibility with other platforms.r,r,}r,(hTj,hUj,ubaubaubh)r,}r,(hTX/No longer sends error mails for retried tasks. hUjU,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoNhphhq]r,h)r,}r,(hTX.No longer sends error mails for retried tasks.r,hUj,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,hzX.No longer sends error mails for retried tasks.r,r,}r,(hTj,hUj,ubaubaubh)r,}r,(hTX9Task can now override the backend used to store results. hUjU,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoNhphhq]r,h)r,}r,(hTX8Task can now override the backend used to store results.r,hUj,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,hzX8Task can now override the backend used to store results.r,r,}r,(hTj,hUj,ubaubaubh)r,}r,(hTXwRefactored the ExecuteWrapper, ``apply`` and ``CELERY_ALWAYS_EAGER`` now also executes the task callbacks and signals. hUjU,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoNhphhq]r,h)r,}r,(hTXvRefactored the ExecuteWrapper, ``apply`` and ``CELERY_ALWAYS_EAGER`` now also executes the task callbacks and signals.hUj,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,(hzXRefactored the ExecuteWrapper, r,r,}r,(hTXRefactored the ExecuteWrapper, hUj,ubj.)r,}r,(hTX ``apply``he}r,(hg]hh]hi]hj]hm]uhUj,hq]r,hzXapplyr,r,}r,(hTUhUj,ubahcj6ubhzX and r,r,}r,(hTX and hUj,ubj.)r,}r,(hTX``CELERY_ALWAYS_EAGER``he}r,(hg]hh]hi]hj]hm]uhUj,hq]r,hzXCELERY_ALWAYS_EAGERr,r,}r,(hTUhUj,ubahcj6ubhzX2 now also executes the task callbacks and signals.r,r,}r,(hTX2 now also executes the task callbacks and signals.hUj,ubeubaubh)r,}r,(hTXNow using a proper scheduler for the tasks with an ETA. This means waiting eta tasks are sorted by time, so we don't have to poll the whole list all the time. hUjU,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoNhphhq]r,(h)r,}r,(hTX7Now using a proper scheduler for the tasks with an ETA.r,hUj,h^hahchhe}r,(hg]hh]hi]hj]hm]uhoMhq]r,hzX7Now using a proper scheduler for the tasks with an ETA.r,r-}r-(hTj,hUj,ubaubj:)r-}r-(hTUhe}r-(hg]hh]hi]hj]hm]uhUj,hq]r-h)r-}r-(hTXfThis means waiting eta tasks are sorted by time, so we don't have to poll the whole list all the time.r-hUj-h^hahchhe}r -(hg]hh]hi]hj]hm]uhoMhq]r -hzXfThis means waiting eta tasks are sorted by time, so we don't have to poll the whole list all the time.r -r -}r -(hTj-hUj-ubaubahcjPubeubh)r-}r-(hTX\Now also imports modules listed in CELERY_IMPORTS when running with django (as documented). hUjU,h^hahchhe}r-(hg]hh]hi]hj]hm]uhoNhphhq]r-h)r-}r-(hTX[Now also imports modules listed in CELERY_IMPORTS when running with django (as documented).r-hUj-h^hahchhe}r-(hg]hh]hi]hj]hm]uhoMhq]r-hzX[Now also imports modules listed in CELERY_IMPORTS when running with django (as documented).r-r-}r-(hTj-hUj-ubaubaubh)r-}r-(hTX6Loglevel for stdout/stderr changed from INFO to ERROR hUjU,h^hahchhe}r-(hg]hh]hi]hj]hm]uhoNhphhq]r-h)r-}r-(hTX5Loglevel for stdout/stderr changed from INFO to ERRORr -hUj-h^hahchhe}r!-(hg]hh]hi]hj]hm]uhoMhq]r"-hzX5Loglevel for stdout/stderr changed from INFO to ERRORr#-r$-}r%-(hTj -hUj-ubaubaubh)r&-}r'-(hTXEImportErrors are now properly propogated when autodiscovering tasks. hUjU,h^hahchhe}r(-(hg]hh]hi]hj]hm]uhoNhphhq]r)-h)r*-}r+-(hTXDImportErrors are now properly propogated when autodiscovering tasks.r,-hUj&-h^hahchhe}r--(hg]hh]hi]hj]hm]uhoMhq]r.-hzXDImportErrors are now properly propogated when autodiscovering tasks.r/-r0-}r1-(hTj,-hUj*-ubaubaubh)r2-}r3-(hTXcYou can now use ``celery.messaging.establish_connection`` to establish a connection to the broker. hUjU,h^hahchhe}r4-(hg]hh]hi]hj]hm]uhoNhphhq]r5-h)r6-}r7-(hTXbYou can now use ``celery.messaging.establish_connection`` to establish a connection to the broker.hUj2-h^hahchhe}r8-(hg]hh]hi]hj]hm]uhoMhq]r9-(hzXYou can now use r:-r;-}r<-(hTXYou can now use hUj6-ubj.)r=-}r>-(hTX)``celery.messaging.establish_connection``he}r?-(hg]hh]hi]hj]hm]uhUj6-hq]r@-hzX%celery.messaging.establish_connectionrA-rB-}rC-(hTUhUj=-ubahcj6ubhzX) to establish a connection to the broker.rD-rE-}rF-(hTX) to establish a connection to the broker.hUj6-ubeubaubh)rG-}rH-(hTXWhen running as a separate service the periodic task scheduler does some smart moves to not poll too regularly. If you need faster poll times you can lower the value of ``CELERYBEAT_MAX_LOOP_INTERVAL``. hUjU,h^hahchhe}rI-(hg]hh]hi]hj]hm]uhoNhphhq]rJ-(h)rK-}rL-(hTXoWhen running as a separate service the periodic task scheduler does some smart moves to not poll too regularly.rM-hUjG-h^hahchhe}rN-(hg]hh]hi]hj]hm]uhoMhq]rO-hzXoWhen running as a separate service the periodic task scheduler does some smart moves to not poll too regularly.rP-rQ-}rR-(hTjM-hUjK-ubaubj:)rS-}rT-(hTUhe}rU-(hg]hh]hi]hj]hm]uhUjG-hq]rV-h)rW-}rX-(hTXZIf you need faster poll times you can lower the value of ``CELERYBEAT_MAX_LOOP_INTERVAL``.hUjS-h^hahchhe}rY-(hg]hh]hi]hj]hm]uhoMhq]rZ-(hzX9If you need faster poll times you can lower the value of r[-r\-}r]-(hTX9If you need faster poll times you can lower the value of hUjW-ubj.)r^-}r_-(hTX ``CELERYBEAT_MAX_LOOP_INTERVAL``he}r`-(hg]hh]hi]hj]hm]uhUjW-hq]ra-hzXCELERYBEAT_MAX_LOOP_INTERVALrb-rc-}rd-(hTUhUj^-ubahcj6ubhzX.re-}rf-(hTX.hUjW-ubeubahcjPubeubh)rg-}rh-(hTXYou can now change periodic task intervals at runtime, by making ``run_every`` a property, or subclassing ``PeriodicTask.is_due``. hUjU,h^hahchhe}ri-(hg]hh]hi]hj]hm]uhoNhphhq]rj-h)rk-}rl-(hTXYou can now change periodic task intervals at runtime, by making ``run_every`` a property, or subclassing ``PeriodicTask.is_due``.hUjg-h^hahchhe}rm-(hg]hh]hi]hj]hm]uhoM hq]rn-(hzXAYou can now change periodic task intervals at runtime, by making ro-rp-}rq-(hTXAYou can now change periodic task intervals at runtime, by making hUjk-ubj.)rr-}rs-(hTX ``run_every``he}rt-(hg]hh]hi]hj]hm]uhUjk-hq]ru-hzX run_everyrv-rw-}rx-(hTUhUjr-ubahcj6ubhzX a property, or subclassing ry-rz-}r{-(hTX a property, or subclassing hUjk-ubj.)r|-}r}-(hTX``PeriodicTask.is_due``he}r~-(hg]hh]hi]hj]hm]uhUjk-hq]r-hzXPeriodicTask.is_duer-r-}r-(hTUhUj|-ubahcj6ubhzX.r-}r-(hTX.hUjk-ubeubaubh)r-}r-(hTXThe worker now supports control commands enabled through the use of a broadcast queue, you can remotely revoke tasks or set the rate limit for a task type. See :mod:`celery.task.control`. hUjU,h^hahchhe}r-(hg]hh]hi]hj]hm]uhoNhphhq]r-h)r-}r-(hTXThe worker now supports control commands enabled through the use of a broadcast queue, you can remotely revoke tasks or set the rate limit for a task type. See :mod:`celery.task.control`.hUj-h^hahchhe}r-(hg]hh]hi]hj]hm]uhoM hq]r-(hzXThe worker now supports control commands enabled through the use of a broadcast queue, you can remotely revoke tasks or set the rate limit for a task type. See r-r-}r-(hTXThe worker now supports control commands enabled through the use of a broadcast queue, you can remotely revoke tasks or set the rate limit for a task type. See hUj-ubje)r-}r-(hTX:mod:`celery.task.control`r-hUj-h^hahcjihe}r-(UreftypeXmodjkjlXcelery.task.controlU refdomainXpyr-hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoM hq]r-j.)r-}r-(hTj-he}r-(hg]hh]r-(jwj-Xpy-modr-ehi]hj]hm]uhUj-hq]r-hzXcelery.task.controlr-r-}r-(hTUhUj-ubahcj6ubaubhzX.r-}r-(hTX.hUj-ubeubaubh)r-}r-(hTX~The services now sets informative process names (as shown in ``ps`` listings) if the :mod:`setproctitle` module is installed. hUjU,h^hahchhe}r-(hg]hh]hi]hj]hm]uhoNhphhq]r-h)r-}r-(hTX}The services now sets informative process names (as shown in ``ps`` listings) if the :mod:`setproctitle` module is installed.hUj-h^hahchhe}r-(hg]hh]hi]hj]hm]uhoMhq]r-(hzX=The services now sets informative process names (as shown in r-r-}r-(hTX=The services now sets informative process names (as shown in hUj-ubj.)r-}r-(hTX``ps``he}r-(hg]hh]hi]hj]hm]uhUj-hq]r-hzXpsr-r-}r-(hTUhUj-ubahcj6ubhzX listings) if the r-r-}r-(hTX listings) if the hUj-ubje)r-}r-(hTX:mod:`setproctitle`r-hUj-h^hahcjihe}r-(UreftypeXmodjkjlX setproctitleU refdomainXpyr-hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r-j.)r-}r-(hTj-he}r-(hg]hh]r-(jwj-Xpy-modr-ehi]hj]hm]uhUj-hq]r-hzX setproctitler-r-}r-(hTUhUj-ubahcj6ubaubhzX module is installed.r-r-}r-(hTX module is installed.hUj-ubeubaubh)r-}r-(hTX:exc:`celery.exceptions.NotRegistered` now inherits from :exc:`KeyError`, and ``TaskRegistry.__getitem__``+``pop`` raises ``NotRegistered`` instead hUjU,h^hahchhe}r-(hg]hh]hi]hj]hm]uhoNhphhq]r-h)r-}r-(hTX:exc:`celery.exceptions.NotRegistered` now inherits from :exc:`KeyError`, and ``TaskRegistry.__getitem__``+``pop`` raises ``NotRegistered`` insteadhUj-h^hahchhe}r-(hg]hh]hi]hj]hm]uhoMhq]r-(je)r-}r-(hTX&:exc:`celery.exceptions.NotRegistered`r-hUj-h^hahcjihe}r-(UreftypeXexcjkjlXcelery.exceptions.NotRegisteredU refdomainXpyr-hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r-j.)r-}r-(hTj-he}r-(hg]hh]r-(jwj-Xpy-excr-ehi]hj]hm]uhUj-hq]r-hzXcelery.exceptions.NotRegisteredr-r-}r-(hTUhUj-ubahcj6ubaubhzX now inherits from r-r-}r-(hTX now inherits from hUj-ubje)r-}r-(hTX:exc:`KeyError`r-hUj-h^hahcjihe}r-(UreftypeXexcjkjlXKeyErrorU refdomainXpyr-hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r-j.)r-}r-(hTj-he}r-(hg]hh]r-(jwj-Xpy-excr-ehi]hj]hm]uhUj-hq]r-hzXKeyErrorr-r-}r-(hTUhUj-ubahcj6ubaubhzX, and r-r-}r-(hTX, and hUj-ubj.)r-}r-(hTX$``TaskRegistry.__getitem__``+``pop``he}r-(hg]hh]hi]hj]hm]uhUj-hq]r-hzX TaskRegistry.__getitem__``+``popr-r-}r-(hTUhUj-ubahcj6ubhzX raises r-r-}r-(hTX raises hUj-ubj.)r-}r-(hTX``NotRegistered``he}r.(hg]hh]hi]hj]hm]uhUj-hq]r.hzX NotRegisteredr.r.}r.(hTUhUj-ubahcj6ubhzX insteadr.r.}r.(hTX insteadhUj-ubeubaubh)r.}r .(hTXGYou can set the loader via the ``CELERY_LOADER`` environment variable. hUjU,h^hahchhe}r .(hg]hh]hi]hj]hm]uhoNhphhq]r .h)r .}r .(hTXFYou can set the loader via the ``CELERY_LOADER`` environment variable.hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoMhq]r.(hzXYou can set the loader via the r.r.}r.(hTXYou can set the loader via the hUj .ubj.)r.}r.(hTX``CELERY_LOADER``he}r.(hg]hh]hi]hj]hm]uhUj .hq]r.hzX CELERY_LOADERr.r.}r.(hTUhUj.ubahcj6ubhzX environment variable.r.r.}r.(hTX environment variable.hUj .ubeubaubh)r.}r.(hTXYou can now set ``CELERY_IGNORE_RESULT`` to ignore task results by default (if enabled, tasks doesn't save results or errors to the backend used). hUjU,h^hahchhe}r.(hg]hh]hi]hj]hm]uhoNhphhq]r .h)r!.}r".(hTXYou can now set ``CELERY_IGNORE_RESULT`` to ignore task results by default (if enabled, tasks doesn't save results or errors to the backend used).hUj.h^hahchhe}r#.(hg]hh]hi]hj]hm]uhoMhq]r$.(hzXYou can now set r%.r&.}r'.(hTXYou can now set hUj!.ubj.)r(.}r).(hTX``CELERY_IGNORE_RESULT``he}r*.(hg]hh]hi]hj]hm]uhUj!.hq]r+.hzXCELERY_IGNORE_RESULTr,.r-.}r..(hTUhUj(.ubahcj6ubhzXj to ignore task results by default (if enabled, tasks doesn't save results or errors to the backend used).r/.r0.}r1.(hTXj to ignore task results by default (if enabled, tasks doesn't save results or errors to the backend used).hUj!.ubeubaubh)r2.}r3.(hTXvceleryd now correctly handles malformed messages by throwing away and acknowledging the message, instead of crashing. hUjU,h^hahchhe}r4.(hg]hh]hi]hj]hm]uhoNhphhq]r5.h)r6.}r7.(hTXuceleryd now correctly handles malformed messages by throwing away and acknowledging the message, instead of crashing.r8.hUj2.h^hahchhe}r9.(hg]hh]hi]hj]hm]uhoMhq]r:.hzXuceleryd now correctly handles malformed messages by throwing away and acknowledging the message, instead of crashing.r;.r<.}r=.(hTj8.hUj6.ubaubaubeubeubhV)r>.}r?.(hTUhUj&h^hahchdhe}r@.(hg]hh]hi]hj]rA.jahm]rB.hCauhoMhphhq]rC.(hs)rD.}rE.(hTjhUj>.h^hahchwhe}rF.(hj]hi]hg]hh]hm]jjuhoMhphhq]rG.hzXBugsrH.rI.}rJ.(hTjhUjD.ubaubh)rK.}rL.(hTUhUj>.h^hahchhe}rM.(j X*hj]hi]hg]hh]hm]uhoM!hphhq]rN.h)rO.}rP.(hTXUFixed a race condition that could happen while storing task results in the database. hUjK.h^hahchhe}rQ.(hg]hh]hi]hj]hm]uhoNhphhq]rR.h)rS.}rT.(hTXTFixed a race condition that could happen while storing task results in the database.rU.hUjO.h^hahchhe}rV.(hg]hh]hi]hj]hm]uhoM!hq]rW.hzXTFixed a race condition that could happen while storing task results in the database.rX.rY.}rZ.(hTjU.hUjS.ubaubaubaubeubhV)r[.}r\.(hTUhYKhUj&h^hahchdhe}r].(hg]r^.j|ahh]hi]hj]r_.jahm]uhoM%hphhq]r`.(hs)ra.}rb.(hTj hUj[.h^hahchwhe}rc.(hj]hi]hg]hh]hm]jjuhoM%hphhq]rd.hzX Documentationre.rf.}rg.(hTj hUja.ubaubh)rh.}ri.(hTUhUj[.h^hahchhe}rj.(j X*hj]hi]hg]hh]hm]uhoM'hphhq]rk.h)rl.}rm.(hTXTReference now split into two sections; API reference and internal module reference. hUjh.h^hahchhe}rn.(hg]hh]hi]hj]hm]uhoNhphhq]ro.h)rp.}rq.(hTXSReference now split into two sections; API reference and internal module reference.rr.hUjl.h^hahchhe}rs.(hg]hh]hi]hj]hm]uhoM'hq]rt.hzXSReference now split into two sections; API reference and internal module reference.ru.rv.}rw.(hTjr.hUjp.ubaubaubaubeubeubhV)rx.}ry.(hTUhUh\h^hahchdhe}rz.(hg]hh]hi]hj]r{.jahm]r|.h.auhoM+hphhq]r}.(hs)r~.}r.(hTj hUjx.h^hahchwhe}r.(hj]hi]hg]hh]hm]jjuhoM+hphhq]r.hzX0.8.4r.r.}r.(hTj hUj~.ubaubj)r.}r.(hTUhUjx.h^hahcjhe}r.(hg]hh]hi]hj]hm]uhoM,hphhq]r.j)r.}r.(hTUhUj.h^hahcjhe}r.(hg]hh]hi]hj]hm]uhoM,hphhq]r.(j)r.}r.(hTX release-dater.he}r.(hg]hh]hi]hj]hm]uhUj.hq]r.hzX release-dater.r.}r.(hTj.hUj.ubahcjubj)r.}r.(hTX2010-02-05 01:52 P.M CEST he}r.(hg]hh]hi]hj]hm]uhUj.hq]r.h)r.}r.(hTX2010-02-05 01:52 P.M CESTr.hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoM,hq]r.hzX2010-02-05 01:52 P.M CESTr.r.}r.(hTj.hUj.ubaubahcjubeubaubh)r.}r.(hTUhUjx.h^hahchhe}r.(j X*hj]hi]hg]hh]hm]uhoM.hphhq]r.(h)r.}r.(hTXNow emits a warning if the --detach argument is used. --detach should not be used anymore, as it has several not easily fixed bugs related to it. Instead, use something like start-stop-daemon, supervisord or launchd (os x). hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoNhphhq]r.h)r.}r.(hTXNow emits a warning if the --detach argument is used. --detach should not be used anymore, as it has several not easily fixed bugs related to it. Instead, use something like start-stop-daemon, supervisord or launchd (os x).r.hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoM.hq]r.hzXNow emits a warning if the --detach argument is used. --detach should not be used anymore, as it has several not easily fixed bugs related to it. Instead, use something like start-stop-daemon, supervisord or launchd (os x).r.r.}r.(hTj.hUj.ubaubaubh)r.}r.(hTXIMake sure logger class is process aware, even if running Python >= 2.6. hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoNhphhq]r.h)r.}r.(hTXGMake sure logger class is process aware, even if running Python >= 2.6.r.hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoM4hq]r.hzXGMake sure logger class is process aware, even if running Python >= 2.6.r.r.}r.(hTj.hUj.ubaubaubh)r.}r.(hTX>Error e-mails are not sent anymore when the task is retried. hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoNhphhq]r.h)r.}r.(hTX<Error e-mails are not sent anymore when the task is retried.r.hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoM7hq]r.hzX<Error e-mails are not sent anymore when the task is retried.r.r.}r.(hTj.hUj.ubaubaubeubeubhV)r.}r.(hTUhUh\h^hahchdhe}r.(hg]hh]hi]hj]r.j.ahm]r.h2auhoM;hphhq]r.(hs)r.}r.(hTj3hUj.h^hahchwhe}r.(hj]hi]hg]hh]hm]jj-uhoM;hphhq]r.hzX0.8.3r.r.}r.(hTj3hUj.ubaubj)r.}r.(hTUhUj.h^hahcjhe}r.(hg]hh]hi]hj]hm]uhoM<hphhq]r.j)r.}r.(hTUhUj.h^hahcjhe}r.(hg]hh]hi]hj]hm]uhoM<hphhq]r.(j)r.}r.(hTX release-dater.he}r.(hg]hh]hi]hj]hm]uhUj.hq]r.hzX release-dater.r.}r.(hTj.hUj.ubahcjubj)r.}r.(hTX2009-12-22 09:43 A.M CEST he}r.(hg]hh]hi]hj]hm]uhUj.hq]r.h)r.}r.(hTX2009-12-22 09:43 A.M CESTr.hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoM<hq]r.hzX2009-12-22 09:43 A.M CESTr.r.}r.(hTj.hUj.ubaubahcjubeubaubh)r.}r.(hTUhUj.h^hahchhe}r.(j X*hj]hi]hg]hh]hm]uhoM>hphhq]r.(h)r.}r.(hTXuFixed a possible race condition that could happen when storing/querying task results using the the database backend. hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoNhphhq]r.h)r.}r.(hTXtFixed a possible race condition that could happen when storing/querying task results using the the database backend.r.hUj.h^hahchhe}r.(hg]hh]hi]hj]hm]uhoM>hq]r.hzXtFixed a possible race condition that could happen when storing/querying task results using the the database backend.r.r/}r/(hTj.hUj.ubaubaubh)r/}r/(hTXNow has console script entry points in the setup.py file, so tools like buildout will correctly install the programs celerybin and celeryinit. hUj.h^hahchhe}r/(hg]hh]hi]hj]hm]uhoNhphhq]r/h)r/}r/(hTXNow has console script entry points in the setup.py file, so tools like buildout will correctly install the programs celerybin and celeryinit.r/hUj/h^hahchhe}r /(hg]hh]hi]hj]hm]uhoMAhq]r /hzXNow has console script entry points in the setup.py file, so tools like buildout will correctly install the programs celerybin and celeryinit.r /r /}r /(hTj/hUj/ubaubaubeubeubhV)r/}r/(hTUhUh\h^hahchdhe}r/(hg]hh]hi]hj]r/jAahm]r/h8auhoMEhphhq]r/(hs)r/}r/(hTjFhUj/h^hahchwhe}r/(hj]hi]hg]hh]hm]jj@uhoMEhphhq]r/hzX0.8.2r/r/}r/(hTjFhUj/ubaubj)r/}r/(hTUhUj/h^hahcjhe}r/(hg]hh]hi]hj]hm]uhoMFhphhq]r/j)r/}r /(hTUhUj/h^hahcjhe}r!/(hg]hh]hi]hj]hm]uhoMFhphhq]r"/(j)r#/}r$/(hTX release-dater%/he}r&/(hg]hh]hi]hj]hm]uhUj/hq]r'/hzX release-dater(/r)/}r*/(hTj%/hUj#/ubahcjubj)r+/}r,/(hTX2009-11-20 03:40 P.M CEST he}r-/(hg]hh]hi]hj]hm]uhUj/hq]r./h)r//}r0/(hTX2009-11-20 03:40 P.M CESTr1/hUj+/h^hahchhe}r2/(hg]hh]hi]hj]hm]uhoMFhq]r3/hzX2009-11-20 03:40 P.M CESTr4/r5/}r6/(hTj1/hUj//ubaubahcjubeubaubh)r7/}r8/(hTUhUj/h^hahchhe}r9/(j X*hj]hi]hg]hh]hm]uhoMHhphhq]r:/h)r;/}r/h)r?/}r@/(hTXQOS Prefetch count was not applied properly, as it was set for every message received (which apparently behaves like, "receive one more"), instead of only set when our wanted value cahnged.rA/hUj;/h^hahchhe}rB/(hg]hh]hi]hj]hm]uhoMHhq]rC/hzXQOS Prefetch count was not applied properly, as it was set for every message received (which apparently behaves like, "receive one more"), instead of only set when our wanted value cahnged.rD/rE/}rF/(hTjA/hUj?/ubaubaubaubeubhV)rG/}rH/(hTUhUh\h^hahchdhe}rI/(hg]hh]hi]hj]rJ/jTahm]rK/h0auhoMMhphhq]rL/(hs)rM/}rN/(hTjYhUjG/h^hahchwhe}rO/(hj]hi]hg]hh]hm]jjSuhoMMhphhq]rP/hzX0.8.1rQ/rR/}rS/(hTjYhUjM/ubaubj)rT/}rU/(hTUhUjG/h^hahcjhe}rV/(hg]hh]hi]hj]hm]uhoMNhphhq]rW/j)rX/}rY/(hTUhUjT/h^hahcjhe}rZ/(hg]hh]hi]hj]hm]uhoMNhphhq]r[/(j)r\/}r]/(hTX release-dater^/he}r_/(hg]hh]hi]hj]hm]uhUjX/hq]r`/hzX release-datera/rb/}rc/(hTj^/hUj\/ubahcjubj)rd/}re/(hTX2009-11-16 05:21 P.M CEST he}rf/(hg]hh]hi]hj]hm]uhUjX/hq]rg/h)rh/}ri/(hTX2009-11-16 05:21 P.M CESTrj/hUjd/h^hahchhe}rk/(hg]hh]hi]hj]hm]uhoMNhq]rl/hzX2009-11-16 05:21 P.M CESTrm/rn/}ro/(hTjj/hUjh/ubaubahcjubeubaubhV)rp/}rq/(hTUhUjG/h^hahchdhe}rr/(hg]hh]hi]hj]rs/jkahm]rt/h/auhoMQhphhq]ru/(hs)rv/}rw/(hTjphUjp/h^hahchwhe}rx/(hj]hi]hg]hh]hm]jjjuhoMQhphhq]ry/hzXVery important noterz/r{/}r|/(hTjphUjv/ubaubh)r}/}r~/(hTXThis release (with carrot 0.8.0) enables AMQP QoS (quality of service), which means the workers will only receive as many messages as it can handle at a time. As with any release, you should test this version upgrade on your development servers before rolling it out to production!r/hUjp/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoMShphhq]r/hzXThis release (with carrot 0.8.0) enables AMQP QoS (quality of service), which means the workers will only receive as many messages as it can handle at a time. As with any release, you should test this version upgrade on your development servers before rolling it out to production!r/r/}r/(hTj/hUj}/ubaubeubhV)r/}r/(hTUhYKhUjG/h^hahchdhe}r/(hg]r/Ximportant changesr/ahh]hi]hj]r/j~ahm]uhoMYhphhq]r/(hs)r/}r/(hTjhUj/h^hahchwhe}r/(hj]hi]hg]hh]hm]jj}uhoMYhphhq]r/hzXImportant changesr/r/}r/(hTjhUj/ubaubh)r/}r/(hTUhUj/h^hahchhe}r/(j X*hj]hi]hg]hh]hm]uhoM[hphhq]r/(h)r/}r/(hTXyIf you're using Python < 2.6 and you use the multiprocessing backport, then multiprocessing version 2.6.2.1 is required. hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoNhphhq]r/h)r/}r/(hTXxIf you're using Python < 2.6 and you use the multiprocessing backport, then multiprocessing version 2.6.2.1 is required.r/hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoM[hq]r/hzXxIf you're using Python < 2.6 and you use the multiprocessing backport, then multiprocessing version 2.6.2.1 is required.r/r/}r/(hTj/hUj/ubaubaubh)r/}r/(hTX#All AMQP_* settings has been renamed to BROKER_*, and in addition AMQP_SERVER has been renamed to BROKER_HOST, so before where you had:: AMQP_SERVER = "localhost" AMQP_PORT = 5678 AMQP_USER = "myuser" AMQP_PASSWORD = "mypassword" AMQP_VHOST = "celery" You need to change that to:: BROKER_HOST = "localhost" BROKER_PORT = 5678 BROKER_USER = "myuser" BROKER_PASSWORD = "mypassword" BROKER_VHOST = "celery" hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoNhphhq]r/(h)r/}r/(hTXAll AMQP_* settings has been renamed to BROKER_*, and in addition AMQP_SERVER has been renamed to BROKER_HOST, so before where you had::hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoM^hq]r/hzXAll AMQP_* settings has been renamed to BROKER_*, and in addition AMQP_SERVER has been renamed to BROKER_HOST, so before where you had:r/r/}r/(hTXAll AMQP_* settings has been renamed to BROKER_*, and in addition AMQP_SERVER has been renamed to BROKER_HOST, so before where you had:hUj/ubaubj)r/}r/(hTXrAMQP_SERVER = "localhost" AMQP_PORT = 5678 AMQP_USER = "myuser" AMQP_PASSWORD = "mypassword" AMQP_VHOST = "celery"hUj/hcjhe}r/(jjhj]hi]hg]hh]hm]uhoMahq]r/hzXrAMQP_SERVER = "localhost" AMQP_PORT = 5678 AMQP_USER = "myuser" AMQP_PASSWORD = "mypassword" AMQP_VHOST = "celery"r/r/}r/(hTUhUj/ubaubh)r/}r/(hTXYou need to change that to::hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoMghq]r/hzXYou need to change that to:r/r/}r/(hTXYou need to change that to:hUj/ubaubj)r/}r/(hTXzBROKER_HOST = "localhost" BROKER_PORT = 5678 BROKER_USER = "myuser" BROKER_PASSWORD = "mypassword" BROKER_VHOST = "celery"hUj/hcjhe}r/(jjhj]hi]hg]hh]hm]uhoMihq]r/hzXzBROKER_HOST = "localhost" BROKER_PORT = 5678 BROKER_USER = "myuser" BROKER_PASSWORD = "mypassword" BROKER_VHOST = "celery"r/r/}r/(hTUhUj/ubaubeubh)r/}r/(hTXdCustom carrot backends now need to include the backend class name, so before where you had:: CARROT_BACKEND = "mycustom.backend.module" you need to change it to:: CARROT_BACKEND = "mycustom.backend.module.Backend" where ``Backend`` is the class name. This is probably ``"Backend"``, as that was the previously implied name. hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoNhphhq]r/(h)r/}r/(hTX\Custom carrot backends now need to include the backend class name, so before where you had::hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoMohq]r/hzX[Custom carrot backends now need to include the backend class name, so before where you had:r/r/}r/(hTX[Custom carrot backends now need to include the backend class name, so before where you had:hUj/ubaubj)r/}r/(hTX*CARROT_BACKEND = "mycustom.backend.module"hUj/hcjhe}r/(jjhj]hi]hg]hh]hm]uhoMrhq]r/hzX*CARROT_BACKEND = "mycustom.backend.module"r/r/}r/(hTUhUj/ubaubh)r/}r/(hTXyou need to change it to::hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoMthq]r/hzXyou need to change it to:r/r/}r/(hTXyou need to change it to:hUj/ubaubj)r/}r/(hTX2CARROT_BACKEND = "mycustom.backend.module.Backend"hUj/hcjhe}r/(jjhj]hi]hg]hh]hm]uhoMvhq]r/hzX2CARROT_BACKEND = "mycustom.backend.module.Backend"r/r/}r/(hTUhUj/ubaubh)r/}r/(hTXmwhere ``Backend`` is the class name. This is probably ``"Backend"``, as that was the previously implied name.hUj/h^hahchhe}r/(hg]hh]hi]hj]hm]uhoMxhq]r/(hzXwhere r/r/}r/(hTXwhere hUj/ubj.)r/}r/(hTX ``Backend``he}r/(hg]hh]hi]hj]hm]uhUj/hq]r/hzXBackendr/r/}r/(hTUhUj/ubahcj6ubhzX% is the class name. This is probably r/r/}r/(hTX% is the class name. This is probably hUj/ubj.)r/}r/(hTX ``"Backend"``he}r/(hg]hh]hi]hj]hm]uhUj/hq]r/hzX "Backend"r/r/}r/(hTUhUj/ubahcj6ubhzX*, as that was the previously implied name.r/r/}r/(hTX*, as that was the previously implied name.hUj/ubeubeubh)r/}r/(hTX*New version requirement for carrot: 0.8.0 hUj/h^hahchhe}r0(hg]hh]hi]hj]hm]uhoNhphhq]r0h)r0}r0(hTX)New version requirement for carrot: 0.8.0r0hUj/h^hahchhe}r0(hg]hh]hi]hj]hm]uhoM{hq]r0hzX)New version requirement for carrot: 0.8.0r0r0}r 0(hTj0hUj0ubaubaubeubeubhV)r 0}r 0(hTUhYKhUjG/h^hahchdhe}r 0(hg]r 0Xchangesr0ahh]hi]hj]r0jahm]uhoM~hphhq]r0(hs)r0}r0(hTjhUj 0h^hahchwhe}r0(hj]hi]hg]hh]hm]jjuhoM~hphhq]r0hzXChangesr0r0}r0(hTjhUj0ubaubh)r0}r0(hTUhUj 0h^hahchhe}r0(j X*hj]hi]hg]hh]hm]uhoMhphhq]r0(h)r0}r0(hTXVIncorporated the multiprocessing backport patch that fixes the ``processName`` error. hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoNhphhq]r0h)r 0}r!0(hTXUIncorporated the multiprocessing backport patch that fixes the ``processName`` error.hUj0h^hahchhe}r"0(hg]hh]hi]hj]hm]uhoMhq]r#0(hzX?Incorporated the multiprocessing backport patch that fixes the r$0r%0}r&0(hTX?Incorporated the multiprocessing backport patch that fixes the hUj 0ubj.)r'0}r(0(hTX``processName``he}r)0(hg]hh]hi]hj]hm]uhUj 0hq]r*0hzX processNamer+0r,0}r-0(hTUhUj'0ubahcj6ubhzX error.r.0r/0}r00(hTX error.hUj 0ubeubaubh)r10}r20(hTX0Ignore the result of PeriodicTask's by default. hUj0h^hahchhe}r30(hg]hh]hi]hj]hm]uhoNhphhq]r40h)r50}r60(hTX/Ignore the result of PeriodicTask's by default.r70hUj10h^hahchhe}r80(hg]hh]hi]hj]hm]uhoMhq]r90hzX/Ignore the result of PeriodicTask's by default.r:0r;0}r<0(hTj70hUj50ubaubaubh)r=0}r>0(hTX#Added a Redis result store backend hUj0h^hahchhe}r?0(hg]hh]hi]hj]hm]uhoNhphhq]r@0h)rA0}rB0(hTX"Added a Redis result store backendrC0hUj=0h^hahchhe}rD0(hg]hh]hi]hj]hm]uhoMhq]rE0hzX"Added a Redis result store backendrF0rG0}rH0(hTjC0hUjA0ubaubaubh)rI0}rJ0(hTXUAllow /etc/default/celeryd to define additional options for the celeryd init script. hUj0h^hahchhe}rK0(hg]hh]hi]hj]hm]uhoNhphhq]rL0h)rM0}rN0(hTXTAllow /etc/default/celeryd to define additional options for the celeryd init script.rO0hUjI0h^hahchhe}rP0(hg]hh]hi]hj]hm]uhoMhq]rQ0hzXTAllow /etc/default/celeryd to define additional options for the celeryd init script.rR0rS0}rT0(hTjO0hUjM0ubaubaubh)rU0}rV0(hTXGMongoDB periodic tasks issue when using different time than UTC fixed. hUj0h^hahchhe}rW0(hg]hh]hi]hj]hm]uhoNhphhq]rX0h)rY0}rZ0(hTXFMongoDB periodic tasks issue when using different time than UTC fixed.r[0hUjU0h^hahchhe}r\0(hg]hh]hi]hj]hm]uhoMhq]r]0hzXFMongoDB periodic tasks issue when using different time than UTC fixed.r^0r_0}r`0(hTj[0hUjY0ubaubaubh)ra0}rb0(hTXGWindows specific: Negate test for available os.fork (thanks miracle2k) hUj0h^hahchhe}rc0(hg]hh]hi]hj]hm]uhoNhphhq]rd0h)re0}rf0(hTXFWindows specific: Negate test for available os.fork (thanks miracle2k)rg0hUja0h^hahchhe}rh0(hg]hh]hi]hj]hm]uhoMhq]ri0hzXFWindows specific: Negate test for available os.fork (thanks miracle2k)rj0rk0}rl0(hTjg0hUje0ubaubaubh)rm0}rn0(hTX&Now tried to handle broken PID files. hUj0h^hahchhe}ro0(hg]hh]hi]hj]hm]uhoNhphhq]rp0h)rq0}rr0(hTX%Now tried to handle broken PID files.rs0hUjm0h^hahchhe}rt0(hg]hh]hi]hj]hm]uhoMhq]ru0hzX%Now tried to handle broken PID files.rv0rw0}rx0(hTjs0hUjq0ubaubaubh)ry0}rz0(hTXqAdded a Django test runner to contrib that sets CELERY_ALWAYS_EAGER = True for testing with the database backend hUj0h^hahchhe}r{0(hg]hh]hi]hj]hm]uhoNhphhq]r|0h)r}0}r~0(hTXpAdded a Django test runner to contrib that sets CELERY_ALWAYS_EAGER = True for testing with the database backendr0hUjy0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoMhq]r0hzXpAdded a Django test runner to contrib that sets CELERY_ALWAYS_EAGER = True for testing with the database backendr0r0}r0(hTj0hUj}0ubaubaubh)r0}r0(hTXeAdded a CELERY_CACHE_BACKEND setting for using something other than the django-global cache backend. hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoNhphhq]r0h)r0}r0(hTXdAdded a CELERY_CACHE_BACKEND setting for using something other than the django-global cache backend.r0hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoMhq]r0hzXdAdded a CELERY_CACHE_BACKEND setting for using something other than the django-global cache backend.r0r0}r0(hTj0hUj0ubaubaubh)r0}r0(hTXUse custom implementation of functools.partial (curry) for Python 2.4 support (Probably still problems with running on 2.4, but it will eventually be supported) hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoNhphhq]r0h)r0}r0(hTXUse custom implementation of functools.partial (curry) for Python 2.4 support (Probably still problems with running on 2.4, but it will eventually be supported)r0hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoMhq]r0hzXUse custom implementation of functools.partial (curry) for Python 2.4 support (Probably still problems with running on 2.4, but it will eventually be supported)r0r0}r0(hTj0hUj0ubaubaubh)r0}r0(hTXGPrepare exception to pickle when saving RETRY status for all backends. hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoNhphhq]r0h)r0}r0(hTXFPrepare exception to pickle when saving RETRY status for all backends.r0hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoMhq]r0hzXFPrepare exception to pickle when saving RETRY status for all backends.r0r0}r0(hTj0hUj0ubaubaubh)r0}r0(hTXPSQLite no concurrency limit should only be effective if the db backend is used. hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoNhphhq]r0h)r0}r0(hTXOSQLite no concurrency limit should only be effective if the db backend is used.r0hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoMhq]r0hzXOSQLite no concurrency limit should only be effective if the db backend is used.r0r0}r0(hTj0hUj0ubaubaubeubeubeubhV)r0}r0(hTUhUh\h^hahchdhe}r0(hg]hh]hi]hj]r0jahm]r0hFauhoMhphhq]r0(hs)r0}r0(hTjhUj0h^hahchwhe}r0(hj]hi]hg]hh]hm]jjuhoMhphhq]r0hzX0.8.0r0r0}r0(hTjhUj0ubaubj)r0}r0(hTUhUj0h^hahcjhe}r0(hg]hh]hi]hj]hm]uhoMhphhq]r0j)r0}r0(hTUhUj0h^hahcjhe}r0(hg]hh]hi]hj]hm]uhoMhphhq]r0(j)r0}r0(hTX release-dater0he}r0(hg]hh]hi]hj]hm]uhUj0hq]r0hzX release-dater0r0}r0(hTj0hUj0ubahcjubj)r0}r0(hTX2009-09-22 03:06 P.M CEST he}r0(hg]hh]hi]hj]hm]uhUj0hq]r0h)r0}r0(hTX2009-09-22 03:06 P.M CESTr0hUj0h^hahchhe}r0(hg]hh]hi]hj]hm]uhoMhq]r0hzX2009-09-22 03:06 P.M CESTr0r0}r0(hTj0hUj0ubaubahcjubeubaubhV)r0}r0(hTUhYKhUj0h^hahchdhe}r0(hg]r0Xbackward incompatible changesr0ahh]hi]hj]r0jahm]uhoMhphhq]r0(hs)r0}r0(hTjhUj0h^hahchwhe}r0(hj]hi]hg]hh]hm]jjuhoMhphhq]r0hzXBackward incompatible changesr0r0}r0(hTjhUj0ubaubh)r0}r0(hTUhUj0h^hahchhe}r0(j X*hj]hi]hg]hh]hm]uhoMhphhq]r0(h)r0}r0(hTXAdd traceback to result value on failure. **NOTE** If you use the database backend you have to re-create the database table ``celery_taskmeta``. Contact the mailinglist or IRC channel listed in README for help doing this. hUj0h^Nhchhe}r0(hg]hh]hi]hj]hm]uhoNhphhq]r0j)r0}r0(hTUhe}r0(hg]hh]hi]hj]hm]uhUj0hq]r0j)r0}r0(hTXAdd traceback to result value on failure. **NOTE** If you use the database backend you have to re-create the database table ``celery_taskmeta``. Contact the mailinglist or IRC channel listed in README for help doing this. hUj0h^hahcjhe}r0(hg]hh]hi]hj]hm]uhoMhq]r0(j)r0}r0(hTX)Add traceback to result value on failure.r0hUj0h^hahcjhe}r0(hg]hh]hi]hj]hm]uhoMhq]r1hzX)Add traceback to result value on failure.r1r1}r1(hTj0hUj0ubaubj)r1}r1(hTUhe}r1(hg]hh]hi]hj]hm]uhUj0hq]r1(h)r1}r 1(hTXf**NOTE** If you use the database backend you have to re-create the database table ``celery_taskmeta``.hUj1h^hahchhe}r 1(hg]hh]hi]hj]hm]uhoMhq]r 1(j)r 1}r 1(hTX**NOTE**he}r1(hg]hh]hi]hj]hm]uhUj1hq]r1hzXNOTEr1r1}r1(hTUhUj 1ubahcjubhzXJ If you use the database backend you have to re-create the database table r1r1}r1(hTXJ If you use the database backend you have to re-create the database table hUj1ubj.)r1}r1(hTX``celery_taskmeta``he}r1(hg]hh]hi]hj]hm]uhUj1hq]r1hzXcelery_taskmetar1r1}r1(hTUhUj1ubahcj6ubhzX.r1}r1(hTX.hUj1ubeubh)r1}r 1(hTXLContact the mailinglist or IRC channel listed in README for help doing this.r!1hUj1h^hahchhe}r"1(hg]hh]hi]hj]hm]uhoMhq]r#1hzXLContact the mailinglist or IRC channel listed in README for help doing this.r$1r%1}r&1(hTj!1hUj1ubaubehcjubeubahcjubaubh)r'1}r(1(hTXDatabase tables are now only created if the database backend is used, so if you change back to the database backend at some point, be sure to initialize tables (django: ``syncdb``, python: ``celeryinit``). (Note: This is only the case when using Django 1.1 or higher) hUj0h^Nhchhe}r)1(hg]hh]hi]hj]hm]uhoNhphhq]r*1j)r+1}r,1(hTUhe}r-1(hg]hh]hi]hj]hm]uhUj'1hq]r.1j)r/1}r01(hTX Database tables are now only created if the database backend is used, so if you change back to the database backend at some point, be sure to initialize tables (django: ``syncdb``, python: ``celeryinit``). (Note: This is only the case when using Django 1.1 or higher) hUj+1h^hahcjhe}r11(hg]hh]hi]hj]hm]uhoMhq]r21(j)r31}r41(hTXEDatabase tables are now only created if the database backend is used,r51hUj/1h^hahcjhe}r61(hg]hh]hi]hj]hm]uhoMhq]r71hzXEDatabase tables are now only created if the database backend is used,r81r91}r:1(hTj51hUj31ubaubj)r;1}r<1(hTUhe}r=1(hg]hh]hi]hj]hm]uhUj/1hq]r>1h)r?1}r@1(hTXso if you change back to the database backend at some point, be sure to initialize tables (django: ``syncdb``, python: ``celeryinit``). (Note: This is only the case when using Django 1.1 or higher)hUj;1h^hahchhe}rA1(hg]hh]hi]hj]hm]uhoMhq]rB1(hzXcso if you change back to the database backend at some point, be sure to initialize tables (django: rC1rD1}rE1(hTXcso if you change back to the database backend at some point, be sure to initialize tables (django: hUj?1ubj.)rF1}rG1(hTX ``syncdb``he}rH1(hg]hh]hi]hj]hm]uhUj?1hq]rI1hzXsyncdbrJ1rK1}rL1(hTUhUjF1ubahcj6ubhzX , python: rM1rN1}rO1(hTX , python: hUj?1ubj.)rP1}rQ1(hTX``celeryinit``he}rR1(hg]hh]hi]hj]hm]uhUj?1hq]rS1hzX celeryinitrT1rU1}rV1(hTUhUjP1ubahcj6ubhzX@). (Note: This is only the case when using Django 1.1 or higher)rW1rX1}rY1(hTX@). (Note: This is only the case when using Django 1.1 or higher)hUj?1ubeubahcjubeubahcjubaubh)rZ1}r[1(hTX)Now depends on ``carrot`` version 0.6.0. hUj0h^hahchhe}r\1(hg]hh]hi]hj]hm]uhoNhphhq]r]1h)r^1}r_1(hTX(Now depends on ``carrot`` version 0.6.0.hUjZ1h^hahchhe}r`1(hg]hh]hi]hj]hm]uhoMhq]ra1(hzXNow depends on rb1rc1}rd1(hTXNow depends on hUj^1ubj.)re1}rf1(hTX ``carrot``he}rg1(hg]hh]hi]hj]hm]uhUj^1hq]rh1hzXcarrotri1rj1}rk1(hTUhUje1ubahcj6ubhzX version 0.6.0.rl1rm1}rn1(hTX version 0.6.0.hUj^1ubeubaubh)ro1}rp1(hTX#Now depends on python-daemon 1.4.8 hUj0h^hahchhe}rq1(hg]hh]hi]hj]hm]uhoNhphhq]rr1h)rs1}rt1(hTX"Now depends on python-daemon 1.4.8ru1hUjo1h^hahchhe}rv1(hg]hh]hi]hj]hm]uhoMhq]rw1hzX"Now depends on python-daemon 1.4.8rx1ry1}rz1(hTju1hUjs1ubaubaubeubeubhV)r{1}r|1(hTUhYKhUj0h^hahchdhe}r}1(hg]r~1j/ahh]hi]hj]r1jahm]uhoMhphhq]r1(hs)r1}r1(hTjhUj{1h^hahchwhe}r1(hj]hi]hg]hh]hm]jjuhoMhphhq]r1hzXImportant changesr1r1}r1(hTjhUj1ubaubh)r1}r1(hTUhUj{1h^hahchhe}r1(j X*hj]hi]hg]hh]hm]uhoMhphhq]r1h)r1}r1(hTXCelery can now be used in pure Python (outside of a Django project). This means celery is no longer Django specific. For more information see the FAQ entry `Can I use celery without Django?`_. hUj1h^Nhchhe}r1(hg]hh]hi]hj]hm]uhoNhphhq]r1j)r1}r1(hTUhe}r1(hg]hh]hi]hj]hm]uhUj1hq]r1j)r1}r1(hTXCelery can now be used in pure Python (outside of a Django project). This means celery is no longer Django specific. For more information see the FAQ entry `Can I use celery without Django?`_. hUj1h^hahcjhe}r1(hg]hh]hi]hj]hm]uhoMhq]r1(j)r1}r1(hTXDCelery can now be used in pure Python (outside of a Django project).r1hUj1h^hahcjhe}r1(hg]hh]hi]hj]hm]uhoMhq]r1hzXDCelery can now be used in pure Python (outside of a Django project).r1r1}r1(hTj1hUj1ubaubj)r1}r1(hTUhe}r1(hg]hh]hi]hj]hm]uhUj1hq]r1(h)r1}r1(hTX/This means celery is no longer Django specific.r1hUj1h^hahchhe}r1(hg]hh]hi]hj]hm]uhoMhq]r1hzX/This means celery is no longer Django specific.r1r1}r1(hTj1hUj1ubaubh)r1}r1(hTXKFor more information see the FAQ entry `Can I use celery without Django?`_.hUj1h^hahchhe}r1(hg]hh]hi]hj]hm]uhoMhq]r1(hzX'For more information see the FAQ entry r1r1}r1(hTX'For more information see the FAQ entry hUj1ubh)r1}r1(hTX#`Can I use celery without Django?`_j+KhUj1hchhe}r1(UnameX Can I use celery without Django?j.XEhttp://ask.github.com/celery/faq.html#can-i-use-celery-without-djangor1hj]hi]hg]hh]hm]uhq]r1hzX Can I use celery without Django?r1r1}r1(hTUhUj1ubaubhzX.r1}r1(hTX.hUj1ubeubehcjubeubahcjubaubaubjx)r1}r1(hTXu.. _`Can I use celery without Django?`: http://ask.github.com/celery/faq.html#can-i-use-celery-without-djangohYKhUj{1h^hahcj}he}r1(j.j1hj]r1Ucan-i-use-celery-without-djangor1ahi]hg]hh]hm]r1h9auhoMhphhq]ubh)r1}r1(hTUhUj{1h^hahchhe}r1(j X*hj]hi]hg]hh]hm]uhoMhphhq]r1h)r1}r1(hTX_Celery now supports task retries. See `Cookbook: Retrying Tasks`_ for more information. hUj1h^hahchhe}r1(hg]hh]hi]hj]hm]uhoNhphhq]r1(h)r1}r1(hTX!Celery now supports task retries.r1hUj1h^hahchhe}r1(hg]hh]hi]hj]hm]uhoMhq]r1hzX!Celery now supports task retries.r1r1}r1(hTj1hUj1ubaubj:)r1}r1(hTUhe}r1(hg]hh]hi]hj]hm]uhUj1hq]r1h)r1}r1(hTX5See `Cookbook: Retrying Tasks`_ for more information.hUj1h^hahchhe}r1(hg]hh]hi]hj]hm]uhoMhq]r1(hzXSee r1r1}r1(hTXSee hUj1ubh)r1}r1(hTX`Cookbook: Retrying Tasks`_j+KhUj1hchhe}r1(UnameXCookbook: Retrying Tasksj.X7http://ask.github.com/celery/cookbook/task-retries.htmlr1hj]hi]hg]hh]hm]uhq]r1hzXCookbook: Retrying Tasksr1r1}r1(hTUhUj1ubaubhzX for more information.r1r1}r1(hTX for more information.hUj1ubeubahcjPubeubaubjx)r1}r1(hTX_.. _`Cookbook: Retrying Tasks`: http://ask.github.com/celery/cookbook/task-retries.htmlhYKhUj{1h^hahcj}he}r1(j.j1hj]r1Ucookbook-retrying-tasksr1ahi]hg]hh]hm]r1h:auhoMhphhq]ubh)r1}r1(hTUhUj{1h^hahchhe}r1(j X*hj]hi]hg]hh]hm]uhoMhphhq]r1(h)r1}r1(hTXWe now have an AMQP result store backend. It uses messages to publish task return value and status. And it's incredibly fast! See http://github.com/ask/celery/issues/closed#issue/6 for more info! hUj1h^hahchhe}r1(hg]hh]hi]hj]hm]uhoNhphhq]r1(h)r1}r1(hTX)We now have an AMQP result store backend.r1hUj1h^hahchhe}r1(hg]hh]hi]hj]hm]uhoMhq]r1hzX)We now have an AMQP result store backend.r1r1}r1(hTj1hUj1ubaubj:)r1}r2(hTUhe}r2(hg]hh]hi]hj]hm]uhUj1hq]r2(h)r2}r2(hTXSIt uses messages to publish task return value and status. And it's incredibly fast!r2hUj1h^hahchhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2hzXSIt uses messages to publish task return value and status. And it's incredibly fast!r2r 2}r 2(hTj2hUj2ubaubh)r 2}r 2(hTXESee http://github.com/ask/celery/issues/closed#issue/6 for more info!hUj1h^hahchhe}r 2(hg]hh]hi]hj]hm]uhoMhq]r2(hzXSee r2r2}r2(hTXSee hUj 2ubh)r2}r2(hTX2http://github.com/ask/celery/issues/closed#issue/6r2he}r2(Urefurij2hj]hi]hg]hh]hm]uhUj 2hq]r2hzX2http://github.com/ask/celery/issues/closed#issue/6r2r2}r2(hTUhUj2ubahchubhzX for more info!r2r2}r2(hTX for more info!hUj 2ubeubehcjPubeubh)r2}r2(hTXcAMQP QoS (prefetch count) implemented: This to not receive more messages than we can handle. hUj1h^Nhchhe}r2(hg]hh]hi]hj]hm]uhoNhphhq]r 2j)r!2}r"2(hTUhe}r#2(hg]hh]hi]hj]hm]uhUj2hq]r$2j)r%2}r&2(hTX]AMQP QoS (prefetch count) implemented: This to not receive more messages than we can handle. hUj!2h^hahcjhe}r'2(hg]hh]hi]hj]hm]uhoMhq]r(2(j)r)2}r*2(hTX&AMQP QoS (prefetch count) implemented:r+2hUj%2h^hahcjhe}r,2(hg]hh]hi]hj]hm]uhoMhq]r-2hzX&AMQP QoS (prefetch count) implemented:r.2r/2}r02(hTj+2hUj)2ubaubj)r12}r22(hTUhe}r32(hg]hh]hi]hj]hm]uhUj%2hq]r42h)r52}r62(hTX5This to not receive more messages than we can handle.r72hUj12h^hahchhe}r82(hg]hh]hi]hj]hm]uhoMhq]r92hzX5This to not receive more messages than we can handle.r:2r;2}r<2(hTj72hUj52ubaubahcjubeubahcjubaubh)r=2}r>2(hTXANow redirects stdout/stderr to the celeryd logfile when detached hUj1h^hahchhe}r?2(hg]hh]hi]hj]hm]uhoNhphhq]r@2h)rA2}rB2(hTX@Now redirects stdout/stderr to the celeryd logfile when detachedrC2hUj=2h^hahchhe}rD2(hg]hh]hi]hj]hm]uhoMhq]rE2hzX@Now redirects stdout/stderr to the celeryd logfile when detachedrF2rG2}rH2(hTjC2hUjA2ubaubaubh)rI2}rJ2(hTXXNow uses ``inspect.getargspec`` to only pass default arguments the task supports. hUj1h^Nhchhe}rK2(hg]hh]hi]hj]hm]uhoNhphhq]rL2j)rM2}rN2(hTUhe}rO2(hg]hh]hi]hj]hm]uhUjI2hq]rP2j)rQ2}rR2(hTXRNow uses ``inspect.getargspec`` to only pass default arguments the task supports. hUjM2h^hahcjhe}rS2(hg]hh]hi]hj]hm]uhoMhq]rT2(j)rU2}rV2(hTX>Now uses ``inspect.getargspec`` to only pass default argumentshUjQ2h^hahcjhe}rW2(hg]hh]hi]hj]hm]uhoMhq]rX2(hzX Now uses rY2rZ2}r[2(hTX Now uses hUjU2ubj.)r\2}r]2(hTX``inspect.getargspec``he}r^2(hg]hh]hi]hj]hm]uhUjU2hq]r_2hzXinspect.getargspecr`2ra2}rb2(hTUhUj\2ubahcj6ubhzX to only pass default argumentsrc2rd2}re2(hTX to only pass default argumentshUjU2ubeubj)rf2}rg2(hTUhe}rh2(hg]hh]hi]hj]hm]uhUjQ2hq]ri2h)rj2}rk2(hTXthe task supports.rl2hUjf2h^hahchhe}rm2(hg]hh]hi]hj]hm]uhoMhq]rn2hzXthe task supports.ro2rp2}rq2(hTjl2hUjj2ubaubahcjubeubahcjubaubh)rr2}rs2(hTXAdd Task.on_success, .on_retry, .on_failure handlers See :meth:`celery.task.base.Task.on_success`, :meth:`celery.task.base.Task.on_retry`, :meth:`celery.task.base.Task.on_failure`, hUj1h^Nhchhe}rt2(hg]hh]hi]hj]hm]uhoNhphhq]ru2j)rv2}rw2(hTUhe}rx2(hg]hh]hi]hj]hm]uhUjr2hq]ry2j)rz2}r{2(hTXAdd Task.on_success, .on_retry, .on_failure handlers See :meth:`celery.task.base.Task.on_success`, :meth:`celery.task.base.Task.on_retry`, :meth:`celery.task.base.Task.on_failure`, hUjv2h^hahcjhe}r|2(hg]hh]hi]hj]hm]uhoMhq]r}2(j)r~2}r2(hTX4Add Task.on_success, .on_retry, .on_failure handlersr2hUjz2h^hahcjhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2hzX4Add Task.on_success, .on_retry, .on_failure handlersr2r2}r2(hTj2hUj~2ubaubj)r2}r2(hTUhe}r2(hg]hh]hi]hj]hm]uhUjz2hq]r2j)r2}r2(hTUhe}r2(hg]hh]hi]hj]hm]uhUj2hq]r2j)r2}r2(hTXSee :meth:`celery.task.base.Task.on_success`, :meth:`celery.task.base.Task.on_retry`, :meth:`celery.task.base.Task.on_failure`, hUj2h^hahcjhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2(j)r2}r2(hTX-See :meth:`celery.task.base.Task.on_success`,hUj2h^hahcjhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2(hzXSee r2r2}r2(hTXSee hUj2ubje)r2}r2(hTX(:meth:`celery.task.base.Task.on_success`r2hUj2h^hahcjihe}r2(UreftypeXmethjkjlX celery.task.base.Task.on_successU refdomainXpyr2hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r2j.)r2}r2(hTj2he}r2(hg]hh]r2(jwj2Xpy-methr2ehi]hj]hm]uhUj2hq]r2hzX"celery.task.base.Task.on_success()r2r2}r2(hTUhUj2ubahcj6ubaubhzX,r2}r2(hTX,hUj2ubeubj)r2}r2(hTUhe}r2(hg]hh]hi]hj]hm]uhUj2hq]r2j)r2}r2(hTUhe}r2(hg]hh]hi]hj]hm]uhUj2hq]r2j)r2}r2(hTXR:meth:`celery.task.base.Task.on_retry`, :meth:`celery.task.base.Task.on_failure`, hUj2h^hahcjhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2(j)r2}r2(hTX':meth:`celery.task.base.Task.on_retry`,hUj2h^hahcjhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2(je)r2}r2(hTX&:meth:`celery.task.base.Task.on_retry`r2hUj2h^hahcjihe}r2(UreftypeXmethjkjlXcelery.task.base.Task.on_retryU refdomainXpyr2hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r2j.)r2}r2(hTj2he}r2(hg]hh]r2(jwj2Xpy-methr2ehi]hj]hm]uhUj2hq]r2hzX celery.task.base.Task.on_retry()r2r2}r2(hTUhUj2ubahcj6ubaubhzX,r2}r2(hTX,hUj2ubeubj)r2}r2(hTUhe}r2(hg]hh]hi]hj]hm]uhUj2hq]r2h)r2}r2(hTX):meth:`celery.task.base.Task.on_failure`,hUj2h^hahchhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2(je)r2}r2(hTX(:meth:`celery.task.base.Task.on_failure`r2hUj2h^hahcjihe}r2(UreftypeXmethjkjlX celery.task.base.Task.on_failureU refdomainXpyr2hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r2j.)r2}r2(hTj2he}r2(hg]hh]r2(jwj2Xpy-methr2ehi]hj]hm]uhUj2hq]r2hzX"celery.task.base.Task.on_failure()r2r2}r2(hTUhUj2ubahcj6ubaubhzX,r2}r2(hTX,hUj2ubeubahcjubeubahcjubahcjubeubahcjubahcjubeubahcjubaubh)r2}r2(hTXV``celery.utils.gen_unique_id``: Workaround for http://bugs.python.org/issue4607 hUj1h^Nhchhe}r2(hg]hh]hi]hj]hm]uhoNhphhq]r2j)r2}r2(hTUhe}r2(hg]hh]hi]hj]hm]uhUj2hq]r2j)r2}r2(hTXP``celery.utils.gen_unique_id``: Workaround for http://bugs.python.org/issue4607 hUj2h^hahcjhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2(j)r2}r2(hTX.``celery.utils.gen_unique_id``: Workaround forhUj2h^hahcjhe}r2(hg]hh]hi]hj]hm]uhoMhq]r2(j.)r2}r2(hTX``celery.utils.gen_unique_id``he}r2(hg]hh]hi]hj]hm]uhUj2hq]r2hzXcelery.utils.gen_unique_idr2r2}r2(hTUhUj2ubahcj6ubhzX: Workaround forr2r2}r2(hTX: Workaround forhUj2ubeubj)r2}r2(hTUhe}r3(hg]hh]hi]hj]hm]uhUj2hq]r3h)r3}r3(hTX http://bugs.python.org/issue4607r3hUj2h^hahchhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3h)r3}r3(hTj3he}r 3(Urefurij3hj]hi]hg]hh]hm]uhUj3hq]r 3hzX http://bugs.python.org/issue4607r 3r 3}r 3(hTUhUj3ubahchubaubahcjubeubahcjubaubh)r3}r3(hTXYou can now customize what happens at worker start, at process init, etc by creating your own loaders. (see :mod:`celery.loaders.default`, :mod:`celery.loaders.djangoapp`, :mod:`celery.loaders`.) hUj1h^Nhchhe}r3(hg]hh]hi]hj]hm]uhoNhphhq]r3j)r3}r3(hTUhe}r3(hg]hh]hi]hj]hm]uhUj3hq]r3j)r3}r3(hTXYou can now customize what happens at worker start, at process init, etc by creating your own loaders. (see :mod:`celery.loaders.default`, :mod:`celery.loaders.djangoapp`, :mod:`celery.loaders`.) hUj3h^hahcjhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3(j)r3}r3(hTXHYou can now customize what happens at worker start, at process init, etcr3hUj3h^hahcjhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3hzXHYou can now customize what happens at worker start, at process init, etcr3r 3}r!3(hTj3hUj3ubaubj)r"3}r#3(hTUhe}r$3(hg]hh]hi]hj]hm]uhUj3hq]r%3h)r&3}r'3(hTXzby creating your own loaders. (see :mod:`celery.loaders.default`, :mod:`celery.loaders.djangoapp`, :mod:`celery.loaders`.)hUj"3h^hahchhe}r(3(hg]hh]hi]hj]hm]uhoMhq]r)3(hzX#by creating your own loaders. (see r*3r+3}r,3(hTX#by creating your own loaders. (see hUj&3ubje)r-3}r.3(hTX:mod:`celery.loaders.default`r/3hUj&3h^hahcjihe}r03(UreftypeXmodjkjlXcelery.loaders.defaultU refdomainXpyr13hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r23j.)r33}r43(hTj/3he}r53(hg]hh]r63(jwj13Xpy-modr73ehi]hj]hm]uhUj-3hq]r83hzXcelery.loaders.defaultr93r:3}r;3(hTUhUj33ubahcj6ubaubhzX, r<3r=3}r>3(hTX, hUj&3ubje)r?3}r@3(hTX:mod:`celery.loaders.djangoapp`rA3hUj&3h^hahcjihe}rB3(UreftypeXmodjkjlXcelery.loaders.djangoappU refdomainXpyrC3hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rD3j.)rE3}rF3(hTjA3he}rG3(hg]hh]rH3(jwjC3Xpy-modrI3ehi]hj]hm]uhUj?3hq]rJ3hzXcelery.loaders.djangoapprK3rL3}rM3(hTUhUjE3ubahcj6ubaubhzX, rN3rO3}rP3(hTX, hUj&3ubje)rQ3}rR3(hTX:mod:`celery.loaders`rS3hUj&3h^hahcjihe}rT3(UreftypeXmodjkjlXcelery.loadersU refdomainXpyrU3hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rV3j.)rW3}rX3(hTjS3he}rY3(hg]hh]rZ3(jwjU3Xpy-modr[3ehi]hj]hm]uhUjQ3hq]r\3hzXcelery.loadersr]3r^3}r_3(hTUhUjW3ubahcj6ubaubhzX.)r`3ra3}rb3(hTX.)hUj&3ubeubahcjubeubahcjubaubh)rc3}rd3(hTXSupport for multiple AMQP exchanges and queues. This feature misses documentation and tests, so anyone interested is encouraged to improve this situation. hUj1h^hahchhe}re3(hg]hh]hi]hj]hm]uhoNhphhq]rf3(h)rg3}rh3(hTX/Support for multiple AMQP exchanges and queues.ri3hUjc3h^hahchhe}rj3(hg]hh]hi]hj]hm]uhoMhq]rk3hzX/Support for multiple AMQP exchanges and queues.rl3rm3}rn3(hTji3hUjg3ubaubj:)ro3}rp3(hTUhe}rq3(hg]hh]hi]hj]hm]uhUjc3hq]rr3h)rs3}rt3(hTXjThis feature misses documentation and tests, so anyone interested is encouraged to improve this situation.ru3hUjo3h^hahchhe}rv3(hg]hh]hi]hj]hm]uhoMhq]rw3hzXjThis feature misses documentation and tests, so anyone interested is encouraged to improve this situation.rx3ry3}rz3(hTju3hUjs3ubaubahcjPubeubh)r{3}r|3(hTX:celeryd now survives a restart of the AMQP server! Automatically re-establish AMQP broker connection if it's lost. New settings: * AMQP_CONNECTION_RETRY Set to ``True`` to enable connection retries. * AMQP_CONNECTION_MAX_RETRIES. Maximum number of restarts before we give up. Default: ``100``. hUj1h^hahchhe}r}3(hg]hh]hi]hj]hm]uhoNhphhq]r~3(h)r3}r3(hTX2celeryd now survives a restart of the AMQP server!r3hUj{3h^hahchhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3hzX2celeryd now survives a restart of the AMQP server!r3r3}r3(hTj3hUj3ubaubh)r3}r3(hTX?Automatically re-establish AMQP broker connection if it's lost.r3hUj{3h^hahchhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3hzX?Automatically re-establish AMQP broker connection if it's lost.r3r3}r3(hTj3hUj3ubaubh)r3}r3(hTX New settings:r3hUj{3h^hahchhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3hzX New settings:r3r3}r3(hTj3hUj3ubaubj:)r3}r3(hTUhe}r3(hg]hh]hi]hj]hm]uhUj{3hq]r3h)r3}r3(hTUhe}r3(j X*hj]hi]hg]hh]hm]uhUj3hq]r3(h)r3}r3(hTXFAMQP_CONNECTION_RETRY Set to ``True`` to enable connection retries. he}r3(hg]hh]hi]hj]hm]uhUj3hq]r3j)r3}r3(hTUhe}r3(hg]hh]hi]hj]hm]uhUj3hq]r3j)r3}r3(hTXDAMQP_CONNECTION_RETRY Set to ``True`` to enable connection retries. hUj3h^hahcjhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3(j)r3}r3(hTXAMQP_CONNECTION_RETRYr3hUj3h^hahcjhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3hzXAMQP_CONNECTION_RETRYr3r3}r3(hTj3hUj3ubaubj)r3}r3(hTUhe}r3(hg]hh]hi]hj]hm]uhUj3hq]r3h)r3}r3(hTX-Set to ``True`` to enable connection retries.hUj3h^hahchhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3(hzXSet to r3r3}r3(hTXSet to hUj3ubj.)r3}r3(hTX``True``he}r3(hg]hh]hi]hj]hm]uhUj3hq]r3hzXTruer3r3}r3(hTUhUj3ubahcj6ubhzX to enable connection retries.r3r3}r3(hTX to enable connection retries.hUj3ubeubahcjubeubahcjubahchubh)r3}r3(hTX_AMQP_CONNECTION_MAX_RETRIES. Maximum number of restarts before we give up. Default: ``100``. he}r3(hg]hh]hi]hj]hm]uhUj3hq]r3j)r3}r3(hTUhe}r3(hg]hh]hi]hj]hm]uhUj3hq]r3j)r3}r3(hTX]AMQP_CONNECTION_MAX_RETRIES. Maximum number of restarts before we give up. Default: ``100``. hUj3h^hahcjhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3(j)r3}r3(hTXAMQP_CONNECTION_MAX_RETRIES.r3hUj3h^hahcjhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3hzXAMQP_CONNECTION_MAX_RETRIES.r3r3}r3(hTj3hUj3ubaubj)r3}r3(hTUhe}r3(hg]hh]hi]hj]hm]uhUj3hq]r3h)r3}r3(hTX?Maximum number of restarts before we give up. Default: ``100``.r3hUj3h^hahchhe}r3(hg]hh]hi]hj]hm]uhoMhq]r3(hzX7Maximum number of restarts before we give up. Default: r3r3}r3(hTX7Maximum number of restarts before we give up. Default: hUj3ubj.)r3}r3(hTX``100``he}r3(hg]hh]hi]hj]hm]uhUj3hq]r3hzX100r3r3}r3(hTUhUj3ubahcj6ubhzX.r3}r3(hTX.hUj3ubeubahcjubeubahcjubahchubehchubahcjPubeubeubeubhV)r3}r3(hTUhYKhUj0h^hahchdhe}r3(hg]r3Xnewsr3ahh]hi]hj]r3jahm]uhoMhphhq]r3(hs)r3}r3(hTjhUj3h^hahchwhe}r3(hj]hi]hg]hh]hm]jjuhoMhphhq]r3hzXNewsr3r3}r3(hTjhUj3ubaubh)r3}r4(hTUhUj3h^hahchhe}r4(j X*hj]hi]hg]hh]hm]uhoMhphhq]r4(h)r4}r4(hTXFix an incompatibility between python-daemon and multiprocessing, which resulted in the ``[Errno 10] No child processes`` problem when detaching. hUj3h^Nhchhe}r4(hg]hh]hi]hj]hm]uhoNhphhq]r4j)r4}r4(hTUhe}r 4(hg]hh]hi]hj]hm]uhUj4hq]r 4j)r 4}r 4(hTXFix an incompatibility between python-daemon and multiprocessing, which resulted in the ``[Errno 10] No child processes`` problem when detaching. hUj4h^hahcjhe}r 4(hg]hh]hi]hj]hm]uhoMhq]r4(j)r4}r4(hTXAFix an incompatibility between python-daemon and multiprocessing,r4hUj 4h^hahcjhe}r4(hg]hh]hi]hj]hm]uhoMhq]r4hzXAFix an incompatibility between python-daemon and multiprocessing,r4r4}r4(hTj4hUj4ubaubj)r4}r4(hTUhe}r4(hg]hh]hi]hj]hm]uhUj 4hq]r4h)r4}r4(hTXOwhich resulted in the ``[Errno 10] No child processes`` problem when detaching.hUj4h^hahchhe}r4(hg]hh]hi]hj]hm]uhoMhq]r4(hzXwhich resulted in the r4r 4}r!4(hTXwhich resulted in the hUj4ubj.)r"4}r#4(hTX!``[Errno 10] No child processes``he}r$4(hg]hh]hi]hj]hm]uhUj4hq]r%4hzX[Errno 10] No child processesr&4r'4}r(4(hTUhUj"4ubahcj6ubhzX problem when detaching.r)4r*4}r+4(hTX problem when detaching.hUj4ubeubahcjubeubahcjubaubh)r,4}r-4(hTX{Fixed a possible DjangoUnicodeDecodeError being raised when saving pickled data to Django's memcached cache backend. hUj3h^Nhchhe}r.4(hg]hh]hi]hj]hm]uhoNhphhq]r/4j)r04}r14(hTUhe}r24(hg]hh]hi]hj]hm]uhUj,4hq]r34j)r44}r54(hTXuFixed a possible DjangoUnicodeDecodeError being raised when saving pickled data to Django's memcached cache backend. hUj04h^hahcjhe}r64(hg]hh]hi]hj]hm]uhoMhq]r74(j)r84}r94(hTXJFixed a possible DjangoUnicodeDecodeError being raised when saving pickledr:4hUj44h^hahcjhe}r;4(hg]hh]hi]hj]hm]uhoMhq]r<4hzXJFixed a possible DjangoUnicodeDecodeError being raised when saving pickledr=4r>4}r?4(hTj:4hUj84ubaubj)r@4}rA4(hTUhe}rB4(hg]hh]hi]hj]hm]uhUj44hq]rC4h)rD4}rE4(hTX)data to Django's memcached cache backend.rF4hUj@4h^hahchhe}rG4(hg]hh]hi]hj]hm]uhoMhq]rH4hzX)data to Django's memcached cache backend.rI4rJ4}rK4(hTjF4hUjD4ubaubahcjubeubahcjubaubh)rL4}rM4(hTXBetter Windows compatibility. hUj3h^hahchhe}rN4(hg]hh]hi]hj]hm]uhoNhphhq]rO4h)rP4}rQ4(hTXBetter Windows compatibility.rR4hUjL4h^hahchhe}rS4(hg]hh]hi]hj]hm]uhoMhq]rT4hzXBetter Windows compatibility.rU4rV4}rW4(hTjR4hUjP4ubaubaubh)rX4}rY4(hTX`New version of the pickled field (taken from http://www.djangosnippets.org/snippets/513/) hUj3h^Nhchhe}rZ4(hg]hh]hi]hj]hm]uhoNhphhq]r[4j)r\4}r]4(hTUhe}r^4(hg]hh]hi]hj]hm]uhUjX4hq]r_4j)r`4}ra4(hTXZNew version of the pickled field (taken from http://www.djangosnippets.org/snippets/513/) hUj\4h^hahcjhe}rb4(hg]hh]hi]hj]hm]uhoMhq]rc4(j)rd4}re4(hTX,New version of the pickled field (taken fromrf4hUj`4h^hahcjhe}rg4(hg]hh]hi]hj]hm]uhoMhq]rh4hzX,New version of the pickled field (taken fromri4rj4}rk4(hTjf4hUjd4ubaubj)rl4}rm4(hTUhe}rn4(hg]hh]hi]hj]hm]uhUj`4hq]ro4h)rp4}rq4(hTX,http://www.djangosnippets.org/snippets/513/)hUjl4h^hahchhe}rr4(hg]hh]hi]hj]hm]uhoMhq]rs4(h)rt4}ru4(hTX+http://www.djangosnippets.org/snippets/513/rv4he}rw4(Urefurijv4hj]hi]hg]hh]hm]uhUjp4hq]rx4hzX+http://www.djangosnippets.org/snippets/513/ry4rz4}r{4(hTUhUjt4ubahchubhzX)r|4}r}4(hTX)hUjp4ubeubahcjubeubahcjubaubh)r~4}r4(hTXNew signals introduced: ``task_sent``, ``task_prerun`` and ``task_postrun``, see :mod:`celery.signals` for more information. hUj3h^Nhchhe}r4(hg]hh]hi]hj]hm]uhoNhphhq]r4j)r4}r4(hTUhe}r4(hg]hh]hi]hj]hm]uhUj~4hq]r4j)r4}r4(hTX}New signals introduced: ``task_sent``, ``task_prerun`` and ``task_postrun``, see :mod:`celery.signals` for more information. hUj4h^hahcjhe}r4(hg]hh]hi]hj]hm]uhoMhq]r4(j)r4}r4(hTX:New signals introduced: ``task_sent``, ``task_prerun`` andhUj4h^hahcjhe}r4(hg]hh]hi]hj]hm]uhoMhq]r4(hzXNew signals introduced: r4r4}r4(hTXNew signals introduced: hUj4ubj.)r4}r4(hTX ``task_sent``he}r4(hg]hh]hi]hj]hm]uhUj4hq]r4hzX task_sentr4r4}r4(hTUhUj4ubahcj6ubhzX, r4r4}r4(hTX, hUj4ubj.)r4}r4(hTX``task_prerun``he}r4(hg]hh]hi]hj]hm]uhUj4hq]r4hzX task_prerunr4r4}r4(hTUhUj4ubahcj6ubhzX andr4r4}r4(hTX andhUj4ubeubj)r4}r4(hTUhe}r4(hg]hh]hi]hj]hm]uhUj4hq]r4h)r4}r4(hTXA``task_postrun``, see :mod:`celery.signals` for more information.hUj4h^hahchhe}r4(hg]hh]hi]hj]hm]uhoMhq]r4(j.)r4}r4(hTX``task_postrun``he}r4(hg]hh]hi]hj]hm]uhUj4hq]r4hzX task_postrunr4r4}r4(hTUhUj4ubahcj6ubhzX, see r4r4}r4(hTX, see hUj4ubje)r4}r4(hTX:mod:`celery.signals`r4hUj4h^hahcjihe}r4(UreftypeXmodjkjlXcelery.signalsU refdomainXpyr4hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r4j.)r4}r4(hTj4he}r4(hg]hh]r4(jwj4Xpy-modr4ehi]hj]hm]uhUj4hq]r4hzXcelery.signalsr4r4}r4(hTUhUj4ubahcj6ubaubhzX for more information.r4r4}r4(hTX for more information.hUj4ubeubahcjubeubahcjubaubh)r4}r4(hTXj``TaskSetResult.join`` caused ``TypeError`` when ``timeout=None``. Thanks Jerzy Kozera. Closes #31 hUj3h^Nhchhe}r4(hg]hh]hi]hj]hm]uhoNhphhq]r4j)r4}r4(hTUhe}r4(hg]hh]hi]hj]hm]uhUj4hq]r4j)r4}r4(hTXd``TaskSetResult.join`` caused ``TypeError`` when ``timeout=None``. Thanks Jerzy Kozera. Closes #31 hUj4h^hahcjhe}r4(hg]hh]hi]hj]hm]uhoMhq]r4(j)r4}r4(hTXB``TaskSetResult.join`` caused ``TypeError`` when ``timeout=None``.hUj4h^hahcjhe}r4(hg]hh]hi]hj]hm]uhoMhq]r4(j.)r4}r4(hTX``TaskSetResult.join``he}r4(hg]hh]hi]hj]hm]uhUj4hq]r4hzXTaskSetResult.joinr4r4}r4(hTUhUj4ubahcj6ubhzX caused r4r4}r4(hTX caused hUj4ubj.)r4}r4(hTX ``TypeError``he}r4(hg]hh]hi]hj]hm]uhUj4hq]r4hzX TypeErrorr4r4}r4(hTUhUj4ubahcj6ubhzX when r4r4}r4(hTX when hUj4ubj.)r4}r4(hTX``timeout=None``he}r4(hg]hh]hi]hj]hm]uhUj4hq]r4hzX timeout=Noner4r4}r4(hTUhUj4ubahcj6ubhzX.r4}r4(hTX.hUj4ubeubj)r4}r4(hTUhe}r4(hg]hh]hi]hj]hm]uhUj4hq]r4h)r4}r4(hTX Thanks Jerzy Kozera. Closes #31r4hUj4h^hahchhe}r4(hg]hh]hi]hj]hm]uhoMhq]r4hzX Thanks Jerzy Kozera. Closes #31r4r5}r5(hTj4hUj4ubaubahcjubeubahcjubaubh)r5}r5(hTXb``views.apply`` should return ``HttpResponse`` instance. Thanks to Jerzy Kozera. Closes #32 hUj3h^Nhchhe}r5(hg]hh]hi]hj]hm]uhoNhphhq]r5j)r5}r5(hTUhe}r5(hg]hh]hi]hj]hm]uhUj5hq]r 5j)r 5}r 5(hTX\``views.apply`` should return ``HttpResponse`` instance. Thanks to Jerzy Kozera. Closes #32 hUj5h^hahcjhe}r 5(hg]hh]hi]hj]hm]uhoMhq]r 5(j)r5}r5(hTX8``views.apply`` should return ``HttpResponse`` instance.hUj 5h^hahcjhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5(j.)r5}r5(hTX``views.apply``he}r5(hg]hh]hi]hj]hm]uhUj5hq]r5hzX views.applyr5r5}r5(hTUhUj5ubahcj6ubhzX should return r5r5}r5(hTX should return hUj5ubj.)r5}r5(hTX``HttpResponse``he}r5(hg]hh]hi]hj]hm]uhUj5hq]r5hzX HttpResponser 5r!5}r"5(hTUhUj5ubahcj6ubhzX instance.r#5r$5}r%5(hTX instance.hUj5ubeubj)r&5}r'5(hTUhe}r(5(hg]hh]hi]hj]hm]uhUj 5hq]r)5h)r*5}r+5(hTX"Thanks to Jerzy Kozera. Closes #32r,5hUj&5h^hahchhe}r-5(hg]hh]hi]hj]hm]uhoMhq]r.5hzX"Thanks to Jerzy Kozera. Closes #32r/5r05}r15(hTj,5hUj*5ubaubahcjubeubahcjubaubh)r25}r35(hTX``PeriodicTask``: Save conversion of ``run_every`` from ``int`` to ``timedelta`` to the class attribute instead of on the instance. hUj3h^Nhchhe}r45(hg]hh]hi]hj]hm]uhoNhphhq]r55j)r65}r75(hTUhe}r85(hg]hh]hi]hj]hm]uhUj25hq]r95j)r:5}r;5(hTX``PeriodicTask``: Save conversion of ``run_every`` from ``int`` to ``timedelta`` to the class attribute instead of on the instance. hUj65h^hahcjhe}r<5(hg]hh]hi]hj]hm]uhoM hq]r=5(j)r>5}r?5(hTX?``PeriodicTask``: Save conversion of ``run_every`` from ``int``hUj:5h^hahcjhe}r@5(hg]hh]hi]hj]hm]uhoM hq]rA5(j.)rB5}rC5(hTX``PeriodicTask``he}rD5(hg]hh]hi]hj]hm]uhUj>5hq]rE5hzX PeriodicTaskrF5rG5}rH5(hTUhUjB5ubahcj6ubhzX: Save conversion of rI5rJ5}rK5(hTX: Save conversion of hUj>5ubj.)rL5}rM5(hTX ``run_every``he}rN5(hg]hh]hi]hj]hm]uhUj>5hq]rO5hzX run_everyrP5rQ5}rR5(hTUhUjL5ubahcj6ubhzX from rS5rT5}rU5(hTX from hUj>5ubj.)rV5}rW5(hTX``int``he}rX5(hg]hh]hi]hj]hm]uhUj>5hq]rY5hzXintrZ5r[5}r\5(hTUhUjV5ubahcj6ubeubj)r]5}r^5(hTUhe}r_5(hg]hh]hi]hj]hm]uhUj:5hq]r`5h)ra5}rb5(hTXCto ``timedelta`` to the class attribute instead of on the instance.hUj]5h^hahchhe}rc5(hg]hh]hi]hj]hm]uhoM hq]rd5(hzXto re5rf5}rg5(hTXto hUja5ubj.)rh5}ri5(hTX ``timedelta``he}rj5(hg]hh]hi]hj]hm]uhUja5hq]rk5hzX timedeltarl5rm5}rn5(hTUhUjh5ubahcj6ubhzX3 to the class attribute instead of on the instance.ro5rp5}rq5(hTX3 to the class attribute instead of on the instance.hUja5ubeubahcjubeubahcjubaubh)rr5}rs5(hTXjExceptions has been moved to ``celery.exceptions``, but are still available in the previous module. hUj3h^Nhchhe}rt5(hg]hh]hi]hj]hm]uhoNhphhq]ru5j)rv5}rw5(hTUhe}rx5(hg]hh]hi]hj]hm]uhUjr5hq]ry5j)rz5}r{5(hTXdExceptions has been moved to ``celery.exceptions``, but are still available in the previous module. hUjv5h^hahcjhe}r|5(hg]hh]hi]hj]hm]uhoMhq]r}5(j)r~5}r5(hTXAExceptions has been moved to ``celery.exceptions``, but are stillhUjz5h^hahcjhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5(hzXExceptions has been moved to r5r5}r5(hTXExceptions has been moved to hUj~5ubj.)r5}r5(hTX``celery.exceptions``he}r5(hg]hh]hi]hj]hm]uhUj~5hq]r5hzXcelery.exceptionsr5r5}r5(hTUhUj5ubahcj6ubhzX, but are stillr5r5}r5(hTX, but are stillhUj~5ubeubj)r5}r5(hTUhe}r5(hg]hh]hi]hj]hm]uhUjz5hq]r5h)r5}r5(hTX!available in the previous module.r5hUj5h^hahchhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5hzX!available in the previous module.r5r5}r5(hTj5hUj5ubaubahcjubeubahcjubaubh)r5}r5(hTXTry to rollback transaction and retry saving result if an error happens while setting task status with the database backend. hUj3h^Nhchhe}r5(hg]hh]hi]hj]hm]uhoNhphhq]r5j)r5}r5(hTUhe}r5(hg]hh]hi]hj]hm]uhUj5hq]r5j)r5}r5(hTX}Try to rollback transaction and retry saving result if an error happens while setting task status with the database backend. hUj5h^hahcjhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5(j)r5}r5(hTXGTry to rollback transaction and retry saving result if an error happensr5hUj5h^hahcjhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5hzXGTry to rollback transaction and retry saving result if an error happensr5r5}r5(hTj5hUj5ubaubj)r5}r5(hTUhe}r5(hg]hh]hi]hj]hm]uhUj5hq]r5h)r5}r5(hTX4while setting task status with the database backend.r5hUj5h^hahchhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5hzX4while setting task status with the database backend.r5r5}r5(hTj5hUj5ubaubahcjubeubahcjubaubh)r5}r5(hTX?jail() refactored into :class:`celery.execute.ExecuteWrapper`. hUj3h^hahchhe}r5(hg]hh]hi]hj]hm]uhoNhphhq]r5h)r5}r5(hTX>jail() refactored into :class:`celery.execute.ExecuteWrapper`.hUj5h^hahchhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5(hzXjail() refactored into r5r5}r5(hTXjail() refactored into hUj5ubje)r5}r5(hTX&:class:`celery.execute.ExecuteWrapper`r5hUj5h^hahcjihe}r5(UreftypeXclassjkjlXcelery.execute.ExecuteWrapperU refdomainXpyr5hj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]r5j.)r5}r5(hTj5he}r5(hg]hh]r5(jwj5Xpy-classr5ehi]hj]hm]uhUj5hq]r5hzXcelery.execute.ExecuteWrapperr5r5}r5(hTUhUj5ubahcj6ubaubhzX.r5}r5(hTX.hUj5ubeubaubh)r5}r5(hTXB``views.apply`` now correctly sets mimetype to "application/json" hUj3h^hahchhe}r5(hg]hh]hi]hj]hm]uhoNhphhq]r5h)r5}r5(hTXA``views.apply`` now correctly sets mimetype to "application/json"hUj5h^hahchhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5(j.)r5}r5(hTX``views.apply``he}r5(hg]hh]hi]hj]hm]uhUj5hq]r5hzX views.applyr5r5}r5(hTUhUj5ubahcj6ubhzX2 now correctly sets mimetype to "application/json"r5r5}r5(hTX2 now correctly sets mimetype to "application/json"hUj5ubeubaubh)r5}r5(hTX?``views.task_status`` now returns exception if status is RETRY hUj3h^hahchhe}r5(hg]hh]hi]hj]hm]uhoNhphhq]r5h)r5}r5(hTX>``views.task_status`` now returns exception if status is RETRYhUj5h^hahchhe}r5(hg]hh]hi]hj]hm]uhoMhq]r5(j.)r5}r5(hTX``views.task_status``he}r5(hg]hh]hi]hj]hm]uhUj5hq]r5hzXviews.task_statusr5r5}r5(hTUhUj5ubahcj6ubhzX) now returns exception if status is RETRYr5r5}r5(hTX) now returns exception if status is RETRYhUj5ubeubaubh)r5}r5(hTXT``views.task_status`` now returns traceback if status is "FAILURE" or "RETRY" hUj3h^Nhchhe}r5(hg]hh]hi]hj]hm]uhoNhphhq]r5j)r5}r6(hTUhe}r6(hg]hh]hi]hj]hm]uhUj5hq]r6j)r6}r6(hTXN``views.task_status`` now returns traceback if status is "FAILURE" or "RETRY" hUj5h^hahcjhe}r6(hg]hh]hi]hj]hm]uhoMhq]r6(j)r6}r6(hTXB``views.task_status`` now returns traceback if status is "FAILURE"hUj6h^hahcjhe}r 6(hg]hh]hi]hj]hm]uhoMhq]r 6(j.)r 6}r 6(hTX``views.task_status``he}r 6(hg]hh]hi]hj]hm]uhUj6hq]r6hzXviews.task_statusr6r6}r6(hTUhUj 6ubahcj6ubhzX- now returns traceback if status is "FAILURE"r6r6}r6(hTX- now returns traceback if status is "FAILURE"hUj6ubeubj)r6}r6(hTUhe}r6(hg]hh]hi]hj]hm]uhUj6hq]r6h)r6}r6(hTX or "RETRY"r6hUj6h^hahchhe}r6(hg]hh]hi]hj]hm]uhoMhq]r6hzX or "RETRY"r6r6}r 6(hTj6hUj6ubaubahcjubeubahcjubaubh)r!6}r"6(hTX#Documented default task arguments. hUj3h^hahchhe}r#6(hg]hh]hi]hj]hm]uhoNhphhq]r$6h)r%6}r&6(hTX"Documented default task arguments.r'6hUj!6h^hahchhe}r(6(hg]hh]hi]hj]hm]uhoMhq]r)6hzX"Documented default task arguments.r*6r+6}r,6(hTj'6hUj%6ubaubaubh)r-6}r.6(hTX>Add a sensible __repr__ to ExceptionInfo for easier debugging hUj3h^hahchhe}r/6(hg]hh]hi]hj]hm]uhoNhphhq]r06h)r16}r26(hTX=Add a sensible __repr__ to ExceptionInfo for easier debuggingr36hUj-6h^hahchhe}r46(hg]hh]hi]hj]hm]uhoMhq]r56hzX=Add a sensible __repr__ to ExceptionInfo for easier debuggingr66r76}r86(hTj36hUj16ubaubaubh)r96}r:6(hTXWFix documentation typo ``.. import map`` -> ``.. import dmap``. Thanks mikedizon hUj3h^Nhchhe}r;6(hg]hh]hi]hj]hm]uhoNhphhq]r<6j)r=6}r>6(hTUhe}r?6(hg]hh]hi]hj]hm]uhUj96hq]r@6j)rA6}rB6(hTXQFix documentation typo ``.. import map`` -> ``.. import dmap``. Thanks mikedizon hUj=6h^hahcjhe}rC6(hg]hh]hi]hj]hm]uhoM!hq]rD6(j)rE6}rF6(hTX?Fix documentation typo ``.. import map`` -> ``.. import dmap``.hUjA6h^hahcjhe}rG6(hg]hh]hi]hj]hm]uhoM!hq]rH6(hzXFix documentation typo rI6rJ6}rK6(hTXFix documentation typo hUjE6ubj.)rL6}rM6(hTX``.. import map``he}rN6(hg]hh]hi]hj]hm]uhUjE6hq]rO6hzX .. import maprP6rQ6}rR6(hTUhUjL6ubahcj6ubhzX -> rS6rT6}rU6(hTX -> hUjE6ubj.)rV6}rW6(hTX``.. import dmap``he}rX6(hg]hh]hi]hj]hm]uhUjE6hq]rY6hzX.. import dmaprZ6r[6}r\6(hTUhUjV6ubahcj6ubhzX.r]6}r^6(hTX.hUjE6ubeubj)r_6}r`6(hTUhe}ra6(hg]hh]hi]hj]hm]uhUjA6hq]rb6h)rc6}rd6(hTXThanks mikedizonre6hUj_6h^hahchhe}rf6(hg]hh]hi]hj]hm]uhoM!hq]rg6hzXThanks mikedizonrh6ri6}rj6(hTje6hUjc6ubaubahcjubeubahcjubaubeubeubeubhV)rk6}rl6(hTUhUh\h^hahchdhe}rm6(hg]hh]hi]hj]rn6jahm]ro6h auhoM$hphhq]rp6(hs)rq6}rr6(hTjhUjk6h^hahchwhe}rs6(hj]hi]hg]hh]hm]jjuhoM$hphhq]rt6hzX0.6.0ru6rv6}rw6(hTjhUjq6ubaubj)rx6}ry6(hTUhUjk6h^hahcjhe}rz6(hg]hh]hi]hj]hm]uhoM%hphhq]r{6j)r|6}r}6(hTUhUjx6h^hahcjhe}r~6(hg]hh]hi]hj]hm]uhoM%hphhq]r6(j)r6}r6(hTX release-dater6he}r6(hg]hh]hi]hj]hm]uhUj|6hq]r6hzX release-dater6r6}r6(hTj6hUj6ubahcjubj)r6}r6(hTX2009-08-07 06:54 A.M CET he}r6(hg]hh]hi]hj]hm]uhUj|6hq]r6h)r6}r6(hTX2009-08-07 06:54 A.M CETr6hUj6h^hahchhe}r6(hg]hh]hi]hj]hm]uhoM%hq]r6hzX2009-08-07 06:54 A.M CETr6r6}r6(hTj6hUj6ubaubahcjubeubaubhV)r6}r6(hTUhYKhUjk6h^hahchdhe}r6(hg]r6Ximportant changesr6ahh]hi]hj]r6j ahm]uhoM(hphhq]r6(hs)r6}r6(hTjhUj6h^hahchwhe}r6(hj]hi]hg]hh]hm]jj uhoM(hphhq]r6hzXImportant changesr6r6}r6(hTjhUj6ubaubh)r6}r6(hTUhUj6h^hahchhe}r6(j X*hj]hi]hg]hh]hm]uhoM*hphhq]r6(h)r6}r6(hTXFixed a bug where tasks raising unpickleable exceptions crashed pool workers. So if you've had pool workers mysteriously dissapearing, or problems with celeryd stopping working, this has been fixed in this version. hUj6h^Nhchhe}r6(hg]hh]hi]hj]hm]uhoNhphhq]r6j)r6}r6(hTUhe}r6(hg]hh]hi]hj]hm]uhUj6hq]r6j)r6}r6(hTXFixed a bug where tasks raising unpickleable exceptions crashed pool workers. So if you've had pool workers mysteriously dissapearing, or problems with celeryd stopping working, this has been fixed in this version. hUj6h^hahcjhe}r6(hg]hh]hi]hj]hm]uhoM-hq]r6(j)r6}r6(hTXDFixed a bug where tasks raising unpickleable exceptions crashed poolr6hUj6h^hahcjhe}r6(hg]hh]hi]hj]hm]uhoM-hq]r6hzXDFixed a bug where tasks raising unpickleable exceptions crashed poolr6r6}r6(hTj6hUj6ubaubj)r6}r6(hTUhe}r6(hg]hh]hi]hj]hm]uhUj6hq]r6h)r6}r6(hTXworkers. So if you've had pool workers mysteriously dissapearing, or problems with celeryd stopping working, this has been fixed in this version.r6hUj6h^hahchhe}r6(hg]hh]hi]hj]hm]uhoM+hq]r6hzXworkers. So if you've had pool workers mysteriously dissapearing, or problems with celeryd stopping working, this has been fixed in this version.r6r6}r6(hTj6hUj6ubaubahcjubeubahcjubaubh)r6}r6(hTX,Fixed a race condition with periodic tasks. hUj6h^hahchhe}r6(hg]hh]hi]hj]hm]uhoNhphhq]r6h)r6}r6(hTX+Fixed a race condition with periodic tasks.r6hUj6h^hahchhe}r6(hg]hh]hi]hj]hm]uhoM/hq]r6hzX+Fixed a race condition with periodic tasks.r6r6}r6(hTj6hUj6ubaubaubh)r6}r6(hTXThe task pool is now supervised, so if a pool worker crashes, goes away or stops responding, it is automatically replaced with a new one. hUj6h^Nhchhe}r6(hg]hh]hi]hj]hm]uhoNhphhq]r6j)r6}r6(hTUhe}r6(hg]hh]hi]hj]hm]uhUj6hq]r6j)r6}r6(hTXThe task pool is now supervised, so if a pool worker crashes, goes away or stops responding, it is automatically replaced with a new one. hUj6h^hahcjhe}r6(hg]hh]hi]hj]hm]uhoM3hq]r6(j)r6}r6(hTX=The task pool is now supervised, so if a pool worker crashes,r6hUj6h^hahcjhe}r6(hg]hh]hi]hj]hm]uhoM3hq]r6hzX=The task pool is now supervised, so if a pool worker crashes,r6r6}r6(hTj6hUj6ubaubj)r6}r6(hTUhe}r6(hg]hh]hi]hj]hm]uhUj6hq]r6h)r6}r6(hTXKgoes away or stops responding, it is automatically replaced with a new one.r6hUj6h^hahchhe}r6(hg]hh]hi]hj]hm]uhoM2hq]r6hzXKgoes away or stops responding, it is automatically replaced with a new one.r6r6}r6(hTj6hUj6ubaubahcjubeubahcjubaubh)r6}r6(hTXTask.name is now automatically generated out of class module+name, e.g. ``"djangotwitter.tasks.UpdateStatusesTask"``. Very convenient. No idea why we didn't do this before. Some documentation is updated to not manually specify a task name. hUj6h^Nhchhe}r6(hg]hh]hi]hj]hm]uhoNhphhq]r6j)r6}r6(hTUhe}r6(hg]hh]hi]hj]hm]uhUj6hq]r6j)r6}r6(hTXTask.name is now automatically generated out of class module+name, e.g. ``"djangotwitter.tasks.UpdateStatusesTask"``. Very convenient. No idea why we didn't do this before. Some documentation is updated to not manually specify a task name. hUj6h^hahcjhe}r6(hg]hh]hi]hj]hm]uhoM8hq]r6(j)r6}r6(hTXGTask.name is now automatically generated out of class module+name, e.g.r7hUj6h^hahcjhe}r7(hg]hh]hi]hj]hm]uhoM8hq]r7hzXGTask.name is now automatically generated out of class module+name, e.g.r7r7}r7(hTj7hUj6ubaubj)r7}r7(hTUhe}r7(hg]hh]hi]hj]hm]uhUj6hq]r 7h)r 7}r 7(hTX``"djangotwitter.tasks.UpdateStatusesTask"``. Very convenient. No idea why we didn't do this before. Some documentation is updated to not manually specify a task name.hUj7h^hahchhe}r 7(hg]hh]hi]hj]hm]uhoM6hq]r 7(j.)r7}r7(hTX,``"djangotwitter.tasks.UpdateStatusesTask"``he}r7(hg]hh]hi]hj]hm]uhUj 7hq]r7hzX("djangotwitter.tasks.UpdateStatusesTask"r7r7}r7(hTUhUj7ubahcj6ubhzX{. Very convenient. No idea why we didn't do this before. Some documentation is updated to not manually specify a task name.r7r7}r7(hTX{. Very convenient. No idea why we didn't do this before. Some documentation is updated to not manually specify a task name.hUj 7ubeubahcjubeubahcjubaubeubeubhV)r7}r7(hTUhYKhUjk6h^hahchdhe}r7(hg]r7Xnewsr7ahh]hi]hj]r7jahm]uhoM;hphhq]r7(hs)r7}r 7(hTj#hUj7h^hahchwhe}r!7(hj]hi]hg]hh]hm]jjuhoM;hphhq]r"7hzXNewsr#7r$7}r%7(hTj#hUj7ubaubh)r&7}r'7(hTUhUj7h^hahchhe}r(7(j X*hj]hi]hg]hh]hm]uhoM=hphhq]r)7(h)r*7}r+7(hTXTested with Django 1.1 hUj&7h^hahchhe}r,7(hg]hh]hi]hj]hm]uhoNhphhq]r-7h)r.7}r/7(hTXTested with Django 1.1r07hUj*7h^hahchhe}r17(hg]hh]hi]hj]hm]uhoM=hq]r27hzXTested with Django 1.1r37r47}r57(hTj07hUj.7ubaubaubh)r67}r77(hTX?New Tutorial: Creating a click counter using carrot and celery hUj&7h^hahchhe}r87(hg]hh]hi]hj]hm]uhoNhphhq]r97h)r:7}r;7(hTX>New Tutorial: Creating a click counter using carrot and celeryr<7hUj67h^hahchhe}r=7(hg]hh]hi]hj]hm]uhoM?hq]r>7hzX>New Tutorial: Creating a click counter using carrot and celeryr?7r@7}rA7(hTj<7hUj:7ubaubaubh)rB7}rC7(hTXDatabase entries for periodic tasks are now created at ``celeryd`` startup instead of for each check (which has been a forgotten TODO/XXX in the code for a long time) hUj&7h^Nhchhe}rD7(hg]hh]hi]hj]hm]uhoNhphhq]rE7j)rF7}rG7(hTUhe}rH7(hg]hh]hi]hj]hm]uhUjB7hq]rI7j)rJ7}rK7(hTXDatabase entries for periodic tasks are now created at ``celeryd`` startup instead of for each check (which has been a forgotten TODO/XXX in the code for a long time) hUjF7h^hahcjhe}rL7(hg]hh]hi]hj]hm]uhoMChq]rM7(j)rN7}rO7(hTXBDatabase entries for periodic tasks are now created at ``celeryd``hUjJ7h^hahcjhe}rP7(hg]hh]hi]hj]hm]uhoMChq]rQ7(hzX7Database entries for periodic tasks are now created at rR7rS7}rT7(hTX7Database entries for periodic tasks are now created at hUjN7ubj.)rU7}rV7(hTX ``celeryd``he}rW7(hg]hh]hi]hj]hm]uhUjN7hq]rX7hzXcelerydrY7rZ7}r[7(hTUhUjU7ubahcj6ubeubj)r\7}r]7(hTUhe}r^7(hg]hh]hi]hj]hm]uhUjJ7hq]r_7h)r`7}ra7(hTXcstartup instead of for each check (which has been a forgotten TODO/XXX in the code for a long time)rb7hUj\7h^hahchhe}rc7(hg]hh]hi]hj]hm]uhoMBhq]rd7hzXcstartup instead of for each check (which has been a forgotten TODO/XXX in the code for a long time)re7rf7}rg7(hTjb7hUj`7ubaubahcjubeubahcjubaubh)rh7}ri7(hTXNew settings variable: ``CELERY_TASK_RESULT_EXPIRES`` Time (in seconds, or a `datetime.timedelta` object) for when after stored task results are deleted. For the moment this only works for the database backend. hUj&7h^Nhchhe}rj7(hg]hh]hi]hj]hm]uhoNhphhq]rk7j)rl7}rm7(hTUhe}rn7(hg]hh]hi]hj]hm]uhUjh7hq]ro7j)rp7}rq7(hTXNew settings variable: ``CELERY_TASK_RESULT_EXPIRES`` Time (in seconds, or a `datetime.timedelta` object) for when after stored task results are deleted. For the moment this only works for the database backend. hUjl7h^hahcjhe}rr7(hg]hh]hi]hj]hm]uhoMHhq]rs7(j)rt7}ru7(hTX5New settings variable: ``CELERY_TASK_RESULT_EXPIRES``hUjp7h^hahcjhe}rv7(hg]hh]hi]hj]hm]uhoMHhq]rw7(hzXNew settings variable: rx7ry7}rz7(hTXNew settings variable: hUjt7ubj.)r{7}r|7(hTX``CELERY_TASK_RESULT_EXPIRES``he}r}7(hg]hh]hi]hj]hm]uhUjt7hq]r~7hzXCELERY_TASK_RESULT_EXPIRESr7r7}r7(hTUhUj{7ubahcj6ubeubj)r7}r7(hTUhe}r7(hg]hh]hi]hj]hm]uhUjp7hq]r7h)r7}r7(hTXTime (in seconds, or a `datetime.timedelta` object) for when after stored task results are deleted. For the moment this only works for the database backend.hUj7h^hahchhe}r7(hg]hh]hi]hj]hm]uhoMFhq]r7(hzXTime (in seconds, or a r7r7}r7(hTXTime (in seconds, or a hUj7ubj)r7}r7(hTX`datetime.timedelta`he}r7(hg]hh]hi]hj]hm]uhUj7hq]r7hzXdatetime.timedeltar7r7}r7(hTUhUj7ubahcjubhzXq object) for when after stored task results are deleted. For the moment this only works for the database backend.r7r7}r7(hTXq object) for when after stored task results are deleted. For the moment this only works for the database backend.hUj7ubeubahcjubeubahcjubaubh)r7}r7(hTX\``celeryd`` now emits a debug log message for which periodic tasks has been launched. hUj&7h^Nhchhe}r7(hg]hh]hi]hj]hm]uhoNhphhq]r7j)r7}r7(hTUhe}r7(hg]hh]hi]hj]hm]uhUj7hq]r7j)r7}r7(hTXV``celeryd`` now emits a debug log message for which periodic tasks has been launched. hUj7h^hahcjhe}r7(hg]hh]hi]hj]hm]uhoMKhq]r7(j)r7}r7(hTXB``celeryd`` now emits a debug log message for which periodic taskshUj7h^hahcjhe}r7(hg]hh]hi]hj]hm]uhoMKhq]r7(j.)r7}r7(hTX ``celeryd``he}r7(hg]hh]hi]hj]hm]uhUj7hq]r7hzXcelerydr7r7}r7(hTUhUj7ubahcj6ubhzX7 now emits a debug log message for which periodic tasksr7r7}r7(hTX7 now emits a debug log message for which periodic taskshUj7ubeubj)r7}r7(hTUhe}r7(hg]hh]hi]hj]hm]uhUj7hq]r7h)r7}r7(hTXhas been launched.r7hUj7h^hahchhe}r7(hg]hh]hi]hj]hm]uhoMKhq]r7hzXhas been launched.r7r7}r7(hTj7hUj7ubaubahcjubeubahcjubaubh)r7}r7(hTXThe periodic task table is now locked for reading while getting periodic task status. (MySQL only so far, seeking patches for other engines) hUj&7h^Nhchhe}r7(hg]hh]hi]hj]hm]uhoNhphhq]r7j)r7}r7(hTUhe}r7(hg]hh]hi]hj]hm]uhUj7hq]r7j)r7}r7(hTXThe periodic task table is now locked for reading while getting periodic task status. (MySQL only so far, seeking patches for other engines) hUj7h^hahcjhe}r7(hg]hh]hi]hj]hm]uhoMOhq]r7(j)r7}r7(hTX?The periodic task table is now locked for reading while gettingr7hUj7h^hahcjhe}r7(hg]hh]hi]hj]hm]uhoMOhq]r7hzX?The periodic task table is now locked for reading while gettingr7r7}r7(hTj7hUj7ubaubj)r7}r7(hTUhe}r7(hg]hh]hi]hj]hm]uhUj7hq]r7h)r7}r7(hTXLperiodic task status. (MySQL only so far, seeking patches for other engines)r7hUj7h^hahchhe}r7(hg]hh]hi]hj]hm]uhoMNhq]r7hzXLperiodic task status. (MySQL only so far, seeking patches for other engines)r7r7}r7(hTj7hUj7ubaubahcjubeubahcjubaubh)r7}r7(hTXuA lot more debugging information is now available by turning on the ``DEBUG`` loglevel (``--loglevel=DEBUG``). hUj&7h^Nhchhe}r7(hg]hh]hi]hj]hm]uhoNhphhq]r7j)r7}r7(hTUhe}r7(hg]hh]hi]hj]hm]uhUj7hq]r7j)r7}r7(hTXoA lot more debugging information is now available by turning on the ``DEBUG`` loglevel (``--loglevel=DEBUG``). hUj7h^hahcjhe}r7(hg]hh]hi]hj]hm]uhoMRhq]r7(j)r7}r7(hTXCA lot more debugging information is now available by turning on ther7hUj7h^hahcjhe}r7(hg]hh]hi]hj]hm]uhoMRhq]r7hzXCA lot more debugging information is now available by turning on ther7r7}r7(hTj7hUj7ubaubj)r7}r7(hTUhe}r7(hg]hh]hi]hj]hm]uhUj7hq]r7h)r7}r7(hTX*``DEBUG`` loglevel (``--loglevel=DEBUG``).hUj7h^hahchhe}r7(hg]hh]hi]hj]hm]uhoMRhq]r7(j.)r7}r7(hTX ``DEBUG``he}r7(hg]hh]hi]hj]hm]uhUj7hq]r7hzXDEBUGr7r7}r7(hTUhUj7ubahcj6ubhzX loglevel (r8r8}r8(hTX loglevel (hUj7ubj.)r8}r8(hTX``--loglevel=DEBUG``he}r8(hg]hh]hi]hj]hm]uhUj7hq]r8hzX--loglevel=DEBUGr8r8}r 8(hTUhUj8ubahcj6ubhzX).r 8r 8}r 8(hTX).hUj7ubeubahcjubeubahcjubaubh)r 8}r8(hTX?Functions/methods with a timeout argument now works correctly. hUj&7h^hahchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r8h)r8}r8(hTX>Functions/methods with a timeout argument now works correctly.r8hUj 8h^hahchhe}r8(hg]hh]hi]hj]hm]uhoMThq]r8hzX>Functions/methods with a timeout argument now works correctly.r8r8}r8(hTj8hUj8ubaubaubh)r8}r8(hTXNew: ``celery.strategy.even_time_distribution``: With an iterator yielding task args, kwargs tuples, evenly distribute the processing of its tasks throughout the time window available. hUj&7h^Nhchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r8j)r8}r8(hTUhe}r8(hg]hh]hi]hj]hm]uhUj8hq]r 8j)r!8}r"8(hTXNew: ``celery.strategy.even_time_distribution``: With an iterator yielding task args, kwargs tuples, evenly distribute the processing of its tasks throughout the time window available. hUj8h^hahcjhe}r#8(hg]hh]hi]hj]hm]uhoMXhq]r$8(j)r%8}r&8(hTX0New: ``celery.strategy.even_time_distribution``:hUj!8h^hahcjhe}r'8(hg]hh]hi]hj]hm]uhoMXhq]r(8(hzXNew: r)8r*8}r+8(hTXNew: hUj%8ubj.)r,8}r-8(hTX*``celery.strategy.even_time_distribution``he}r.8(hg]hh]hi]hj]hm]uhUj%8hq]r/8hzX&celery.strategy.even_time_distributionr08r18}r28(hTUhUj,8ubahcj6ubhzX:r38}r48(hTX:hUj%8ubeubj)r58}r68(hTUhe}r78(hg]hh]hi]hj]hm]uhUj!8hq]r88h)r98}r:8(hTXWith an iterator yielding task args, kwargs tuples, evenly distribute the processing of its tasks throughout the time window available.r;8hUj58h^hahchhe}r<8(hg]hh]hi]hj]hm]uhoMWhq]r=8hzXWith an iterator yielding task args, kwargs tuples, evenly distribute the processing of its tasks throughout the time window available.r>8r?8}r@8(hTj;8hUj98ubaubahcjubeubahcjubaubh)rA8}rB8(hTXCLog message ``Unknown task ignored...`` now has loglevel ``ERROR`` hUj&7h^hahchhe}rC8(hg]hh]hi]hj]hm]uhoNhphhq]rD8h)rE8}rF8(hTXBLog message ``Unknown task ignored...`` now has loglevel ``ERROR``hUjA8h^hahchhe}rG8(hg]hh]hi]hj]hm]uhoMZhq]rH8(hzX Log message rI8rJ8}rK8(hTX Log message hUjE8ubj.)rL8}rM8(hTX``Unknown task ignored...``he}rN8(hg]hh]hi]hj]hm]uhUjE8hq]rO8hzXUnknown task ignored...rP8rQ8}rR8(hTUhUjL8ubahcj6ubhzX now has loglevel rS8rT8}rU8(hTX now has loglevel hUjE8ubj.)rV8}rW8(hTX ``ERROR``he}rX8(hg]hh]hi]hj]hm]uhUjE8hq]rY8hzXERRORrZ8r[8}r\8(hTUhUjV8ubahcj6ubeubaubh)r]8}r^8(hTXLog message ``"Got task from broker"`` is now emitted for all tasks, even if the task has an ETA (estimated time of arrival). Also the message now includes the ETA for the task (if any). hUj&7h^Nhchhe}r_8(hg]hh]hi]hj]hm]uhoNhphhq]r`8j)ra8}rb8(hTUhe}rc8(hg]hh]hi]hj]hm]uhUj]8hq]rd8j)re8}rf8(hTXLog message ``"Got task from broker"`` is now emitted for all tasks, even if the task has an ETA (estimated time of arrival). Also the message now includes the ETA for the task (if any). hUja8h^hahcjhe}rg8(hg]hh]hi]hj]hm]uhoM^hq]rh8(j)ri8}rj8(hTXLLog message ``"Got task from broker"`` is now emitted for all tasks, even ifhUje8h^hahcjhe}rk8(hg]hh]hi]hj]hm]uhoM^hq]rl8(hzX Log message rm8rn8}ro8(hTX Log message hUji8ubj.)rp8}rq8(hTX``"Got task from broker"``he}rr8(hg]hh]hi]hj]hm]uhUji8hq]rs8hzX"Got task from broker"rt8ru8}rv8(hTUhUjp8ubahcj6ubhzX& is now emitted for all tasks, even ifrw8rx8}ry8(hTX& is now emitted for all tasks, even ifhUji8ubeubj)rz8}r{8(hTUhe}r|8(hg]hh]hi]hj]hm]uhUje8hq]r}8h)r~8}r8(hTXmthe task has an ETA (estimated time of arrival). Also the message now includes the ETA for the task (if any).r8hUjz8h^hahchhe}r8(hg]hh]hi]hj]hm]uhoM]hq]r8hzXmthe task has an ETA (estimated time of arrival). Also the message now includes the ETA for the task (if any).r8r8}r8(hTj8hUj~8ubaubahcjubeubahcjubaubh)r8}r8(hTXAcknowledgement now happens in the pool callback. Can't do ack in the job target, as it's not pickleable (can't share AMQP connection, etc)). hUj&7h^Nhchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r8j)r8}r8(hTUhe}r8(hg]hh]hi]hj]hm]uhUj8hq]r8j)r8}r8(hTXAcknowledgement now happens in the pool callback. Can't do ack in the job target, as it's not pickleable (can't share AMQP connection, etc)). hUj8h^hahcjhe}r8(hg]hh]hi]hj]hm]uhoMahq]r8(j)r8}r8(hTXIAcknowledgement now happens in the pool callback. Can't do ack in the jobr8hUj8h^hahcjhe}r8(hg]hh]hi]hj]hm]uhoMahq]r8hzXIAcknowledgement now happens in the pool callback. Can't do ack in the jobr8r8}r8(hTj8hUj8ubaubj)r8}r8(hTUhe}r8(hg]hh]hi]hj]hm]uhUj8hq]r8h)r8}r8(hTXCtarget, as it's not pickleable (can't share AMQP connection, etc)).r8hUj8h^hahchhe}r8(hg]hh]hi]hj]hm]uhoMahq]r8hzXCtarget, as it's not pickleable (can't share AMQP connection, etc)).r8r8}r8(hTj8hUj8ubaubahcjubeubahcjubaubh)r8}r8(hTX*Added note about .delay hanging in README hUj&7h^hahchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r8h)r8}r8(hTX)Added note about .delay hanging in READMEr8hUj8h^hahchhe}r8(hg]hh]hi]hj]hm]uhoMchq]r8hzX)Added note about .delay hanging in READMEr8r8}r8(hTj8hUj8ubaubaubh)r8}r8(hTX Tests now passing in Django 1.1 hUj&7h^hahchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r8h)r8}r8(hTXTests now passing in Django 1.1r8hUj8h^hahchhe}r8(hg]hh]hi]hj]hm]uhoMehq]r8hzXTests now passing in Django 1.1r8r8}r8(hTj8hUj8ubaubaubh)r8}r8(hTX6Fixed discovery to make sure app is in INSTALLED_APPS hUj&7h^hahchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r8h)r8}r8(hTX5Fixed discovery to make sure app is in INSTALLED_APPSr8hUj8h^hahchhe}r8(hg]hh]hi]hj]hm]uhoMghq]r8hzX5Fixed discovery to make sure app is in INSTALLED_APPSr8r8}r8(hTj8hUj8ubaubaubh)r8}r8(hTXPreviously overrided pool behaviour (process reap, wait until pool worker available, etc.) is now handled by ``multiprocessing.Pool`` itself. hUj&7h^Nhchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r8j)r8}r8(hTUhe}r8(hg]hh]hi]hj]hm]uhUj8hq]r8j)r8}r8(hTXPreviously overrided pool behaviour (process reap, wait until pool worker available, etc.) is now handled by ``multiprocessing.Pool`` itself. hUj8h^hahcjhe}r8(hg]hh]hi]hj]hm]uhoMjhq]r8(j)r8}r8(hTXIPreviously overrided pool behaviour (process reap, wait until pool workerr8hUj8h^hahcjhe}r8(hg]hh]hi]hj]hm]uhoMjhq]r8hzXIPreviously overrided pool behaviour (process reap, wait until pool workerr8r8}r8(hTj8hUj8ubaubj)r8}r8(hTUhe}r8(hg]hh]hi]hj]hm]uhUj8hq]r8h)r8}r8(hTXCavailable, etc.) is now handled by ``multiprocessing.Pool`` itself.hUj8h^hahchhe}r8(hg]hh]hi]hj]hm]uhoMjhq]r8(hzX#available, etc.) is now handled by r8r8}r8(hTX#available, etc.) is now handled by hUj8ubj.)r8}r8(hTX``multiprocessing.Pool``he}r8(hg]hh]hi]hj]hm]uhUj8hq]r8hzXmultiprocessing.Poolr8r8}r8(hTUhUj8ubahcj6ubhzX itself.r8r8}r8(hTX itself.hUj8ubeubahcjubeubahcjubaubh)r8}r8(hTXCConvert statistics data to unicode for use as kwargs. Thanks Lucy! hUj&7h^hahchhe}r8(hg]hh]hi]hj]hm]uhoNhphhq]r8h)r8}r8(hTXBConvert statistics data to unicode for use as kwargs. Thanks Lucy!r8hUj8h^hahchhe}r8(hg]hh]hi]hj]hm]uhoMlhq]r8hzXBConvert statistics data to unicode for use as kwargs. Thanks Lucy!r8r8}r8(hTj8hUj8ubaubaubeubeubeubhV)r8}r9(hTUhUh\h^hahchdhe}r9(hg]hh]hi]hj]r9j1ahm]r9h$auhoMohphhq]r9(hs)r9}r9(hTj6hUj8h^hahchwhe}r9(hj]hi]hg]hh]hm]jj0uhoMohphhq]r9hzX0.4.1r 9r 9}r 9(hTj6hUj9ubaubj)r 9}r 9(hTUhUj8h^hahcjhe}r9(hg]hh]hi]hj]hm]uhoMphphhq]r9j)r9}r9(hTUhUj 9h^hahcjhe}r9(hg]hh]hi]hj]hm]uhoMphphhq]r9(j)r9}r9(hTX release-dater9he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9hzX release-dater9r9}r9(hTj9hUj9ubahcjubj)r9}r9(hTX2009-07-02 01:42 P.M CET he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9h)r 9}r!9(hTX2009-07-02 01:42 P.M CETr"9hUj9h^hahchhe}r#9(hg]hh]hi]hj]hm]uhoMphq]r$9hzX2009-07-02 01:42 P.M CETr%9r&9}r'9(hTj"9hUj 9ubaubahcjubeubaubh)r(9}r)9(hTUhUj8h^hahchhe}r*9(j X*hj]hi]hg]hh]hm]uhoMrhphhq]r+9h)r,9}r-9(hTXkFixed a bug with parsing the message options (``mandatory``, ``routing_key``, ``priority``, ``immediate``) hUj(9h^hahchhe}r.9(hg]hh]hi]hj]hm]uhoNhphhq]r/9h)r09}r19(hTXjFixed a bug with parsing the message options (``mandatory``, ``routing_key``, ``priority``, ``immediate``)hUj,9h^hahchhe}r29(hg]hh]hi]hj]hm]uhoMrhq]r39(hzX.Fixed a bug with parsing the message options (r49r59}r69(hTX.Fixed a bug with parsing the message options (hUj09ubj.)r79}r89(hTX ``mandatory``he}r99(hg]hh]hi]hj]hm]uhUj09hq]r:9hzX mandatoryr;9r<9}r=9(hTUhUj79ubahcj6ubhzX, r>9r?9}r@9(hTX, hUj09ubj.)rA9}rB9(hTX``routing_key``he}rC9(hg]hh]hi]hj]hm]uhUj09hq]rD9hzX routing_keyrE9rF9}rG9(hTUhUjA9ubahcj6ubhzX, rH9rI9}rJ9(hTX, hUj09ubj.)rK9}rL9(hTX ``priority``he}rM9(hg]hh]hi]hj]hm]uhUj09hq]rN9hzXpriorityrO9rP9}rQ9(hTUhUjK9ubahcj6ubhzX, rR9rS9}rT9(hTX, hUj09ubj.)rU9}rV9(hTX ``immediate``he}rW9(hg]hh]hi]hj]hm]uhUj09hq]rX9hzX immediaterY9rZ9}r[9(hTUhUjU9ubahcj6ubhzX)r\9}r]9(hTX)hUj09ubeubaubaubeubhV)r^9}r_9(hTUhUh\h^hahchdhe}r`9(hg]hh]hi]hj]ra9jDahm]rb9h6auhoMvhphhq]rc9(hs)rd9}re9(hTjIhUj^9h^hahchwhe}rf9(hj]hi]hg]hh]hm]jjCuhoMvhphhq]rg9hzX0.4.0rh9ri9}rj9(hTjIhUjd9ubaubj)rk9}rl9(hTUhUj^9h^hahcjhe}rm9(hg]hh]hi]hj]hm]uhoMwhphhq]rn9j)ro9}rp9(hTUhUjk9h^hahcjhe}rq9(hg]hh]hi]hj]hm]uhoMwhphhq]rr9(j)rs9}rt9(hTX release-dateru9he}rv9(hg]hh]hi]hj]hm]uhUjo9hq]rw9hzX release-daterx9ry9}rz9(hTju9hUjs9ubahcjubj)r{9}r|9(hTX2009-07-01 07:29 P.M CET he}r}9(hg]hh]hi]hj]hm]uhUjo9hq]r~9h)r9}r9(hTX2009-07-01 07:29 P.M CETr9hUj{9h^hahchhe}r9(hg]hh]hi]hj]hm]uhoMwhq]r9hzX2009-07-01 07:29 P.M CETr9r9}r9(hTj9hUj9ubaubahcjubeubaubh)r9}r9(hTUhUj^9h^hahchhe}r9(j X*hj]hi]hg]hh]hm]uhoMyhphhq]r9(h)r9}r9(hTX1Adds eager execution. ``celery.execute.apply``|``Task.apply`` executes the function blocking until the task is done, for API compatiblity it returns an ``celery.result.EagerResult`` instance. You can configure celery to always run tasks locally by setting the ``CELERY_ALWAYS_EAGER`` setting to ``True``. hUj9h^hahchhe}r9(hg]hh]hi]hj]hm]uhoNhphhq]r9h)r9}r9(hTX0Adds eager execution. ``celery.execute.apply``|``Task.apply`` executes the function blocking until the task is done, for API compatiblity it returns an ``celery.result.EagerResult`` instance. You can configure celery to always run tasks locally by setting the ``CELERY_ALWAYS_EAGER`` setting to ``True``.hUj9h^hahchhe}r9(hg]hh]hi]hj]hm]uhoMyhq]r9(hzXAdds eager execution. r9r9}r9(hTXAdds eager execution. hUj9ubj.)r9}r9(hTX'``celery.execute.apply``|``Task.apply``he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9hzX#celery.execute.apply``|``Task.applyr9r9}r9(hTUhUj9ubahcj6ubhzX[ executes the function blocking until the task is done, for API compatiblity it returns an r9r9}r9(hTX[ executes the function blocking until the task is done, for API compatiblity it returns an hUj9ubj.)r9}r9(hTX``celery.result.EagerResult``he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9hzXcelery.result.EagerResultr9r9}r9(hTUhUj9ubahcj6ubhzXO instance. You can configure celery to always run tasks locally by setting the r9r9}r9(hTXO instance. You can configure celery to always run tasks locally by setting the hUj9ubj.)r9}r9(hTX``CELERY_ALWAYS_EAGER``he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9hzXCELERY_ALWAYS_EAGERr9r9}r9(hTUhUj9ubahcj6ubhzX setting to r9r9}r9(hTX setting to hUj9ubj.)r9}r9(hTX``True``he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9hzXTruer9r9}r9(hTUhUj9ubahcj6ubhzX.r9}r9(hTX.hUj9ubeubaubh)r9}r9(hTXNow depends on ``anyjson``. hUj9h^hahchhe}r9(hg]hh]hi]hj]hm]uhoNhphhq]r9h)r9}r9(hTXNow depends on ``anyjson``.hUj9h^hahchhe}r9(hg]hh]hi]hj]hm]uhoMhq]r9(hzXNow depends on r9r9}r9(hTXNow depends on hUj9ubj.)r9}r9(hTX ``anyjson``he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9hzXanyjsonr9r9}r9(hTUhUj9ubahcj6ubhzX.r9}r9(hTX.hUj9ubeubaubh)r9}r9(hTX,99% coverage using python ``coverage`` 3.0. hUj9h^hahchhe}r9(hg]hh]hi]hj]hm]uhoNhphhq]r9h)r9}r9(hTX+99% coverage using python ``coverage`` 3.0.hUj9h^hahchhe}r9(hg]hh]hi]hj]hm]uhoMhq]r9(hzX99% coverage using python r9r9}r9(hTX99% coverage using python hUj9ubj.)r9}r9(hTX ``coverage``he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9hzXcoverager9r9}r9(hTUhUj9ubahcj6ubhzX 3.0.r9r9}r9(hTX 3.0.hUj9ubeubaubeubeubhV)r9}r9(hTUhUh\h^hahchdhe}r9(hg]hh]hi]hj]r9jWahm]r9hauhoMhphhq]r9(hs)r9}r9(hTj\hUj9h^hahchwhe}r9(hj]hi]hg]hh]hm]jjVuhoMhphhq]r9hzX0.3.20r9r9}r9(hTj\hUj9ubaubj)r9}r9(hTUhUj9h^hahcjhe}r9(hg]hh]hi]hj]hm]uhoMhphhq]r9j)r9}r9(hTUhUj9h^hahcjhe}r9(hg]hh]hi]hj]hm]uhoMhphhq]r9(j)r9}r9(hTX release-dater9he}r9(hg]hh]hi]hj]hm]uhUj9hq]r9hzX release-dater:r:}r:(hTj9hUj9ubahcjubj)r:}r:(hTX2009-06-25 08:42 P.M CET he}r:(hg]hh]hi]hj]hm]uhUj9hq]r:h)r:}r:(hTX2009-06-25 08:42 P.M CETr :hUj:h^hahchhe}r :(hg]hh]hi]hj]hm]uhoMhq]r :hzX2009-06-25 08:42 P.M CETr :r :}r:(hTj :hUj:ubaubahcjubeubaubh)r:}r:(hTUhUj9h^hahchhe}r:(j X*hj]hi]hg]hh]hm]uhoMhphhq]r:(h)r:}r:(hTXNew arguments to ``apply_async`` (the advanced version of ``delay_task``), ``countdown`` and ``eta``; >>> # Run 10 seconds into the future. >>> res = apply_async(MyTask, countdown=10); >>> # Run 1 day from now >>> res = apply_async(MyTask, eta=datetime.now() + ... timedelta(days=1) hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoNhphhq]r:(h)r:}r:(hTXeNew arguments to ``apply_async`` (the advanced version of ``delay_task``), ``countdown`` and ``eta``;hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoMhq]r:(hzXNew arguments to r:r:}r:(hTXNew arguments to hUj:ubj.)r:}r:(hTX``apply_async``he}r :(hg]hh]hi]hj]hm]uhUj:hq]r!:hzX apply_asyncr":r#:}r$:(hTUhUj:ubahcj6ubhzX (the advanced version of r%:r&:}r':(hTX (the advanced version of hUj:ubj.)r(:}r):(hTX``delay_task``he}r*:(hg]hh]hi]hj]hm]uhUj:hq]r+:hzX delay_taskr,:r-:}r.:(hTUhUj(:ubahcj6ubhzX), r/:r0:}r1:(hTX), hUj:ubj.)r2:}r3:(hTX ``countdown``he}r4:(hg]hh]hi]hj]hm]uhUj:hq]r5:hzX countdownr6:r7:}r8:(hTUhUj2:ubahcj6ubhzX and r9:r::}r;:(hTX and hUj:ubj.)r<:}r=:(hTX``eta``he}r>:(hg]hh]hi]hj]hm]uhUj:hq]r?:hzXetar@:rA:}rB:(hTUhUj<:ubahcj6ubhzX;rC:}rD:(hTX;hUj:ubeubj)rE:}rF:(hTXR>>> # Run 10 seconds into the future. >>> res = apply_async(MyTask, countdown=10);hUj:h^Nhcjhe}rG:(jjhj]hi]hg]hh]hm]uhoNhphhq]rH:hzXR>>> # Run 10 seconds into the future. >>> res = apply_async(MyTask, countdown=10);rI:rJ:}rK:(hTUhUjE:ubaubj)rL:}rM:(hTX>>> # Run 1 day from now >>> res = apply_async(MyTask, eta=datetime.now() + ... timedelta(days=1)hUj:h^Nhcjhe}rN:(jjhj]hi]hg]hh]hm]uhoNhphhq]rO:hzX>>> # Run 1 day from now >>> res = apply_async(MyTask, eta=datetime.now() + ... timedelta(days=1)rP:rQ:}rR:(hTUhUjL:ubaubeubh)rS:}rT:(hTX'Now unlinks the pidfile if it's stale. hUj:h^hahchhe}rU:(hg]hh]hi]hj]hm]uhoNhphhq]rV:h)rW:}rX:(hTX&Now unlinks the pidfile if it's stale.rY:hUjS:h^hahchhe}rZ:(hg]hh]hi]hj]hm]uhoMhq]r[:hzX&Now unlinks the pidfile if it's stale.r\:r]:}r^:(hTjY:hUjW:ubaubaubh)r_:}r`:(hTXLots of more tests. hUj:h^hahchhe}ra:(hg]hh]hi]hj]hm]uhoNhphhq]rb:h)rc:}rd:(hTXLots of more tests.re:hUj_:h^hahchhe}rf:(hg]hh]hi]hj]hm]uhoMhq]rg:hzXLots of more tests.rh:ri:}rj:(hTje:hUjc:ubaubaubh)rk:}rl:(hTX%Now compatible with carrot >= 0.5.0. hUj:h^hahchhe}rm:(hg]hh]hi]hj]hm]uhoNhphhq]rn:h)ro:}rp:(hTX$Now compatible with carrot >= 0.5.0.rq:hUjk:h^hahchhe}rr:(hg]hh]hi]hj]hm]uhoMhq]rs:hzX$Now compatible with carrot >= 0.5.0.rt:ru:}rv:(hTjq:hUjo:ubaubaubh)rw:}rx:(hTX**IMPORTANT** The ``subtask_ids`` attribute on the ``TaskSetResult`` instance has been removed. To get this information instead use: >>> subtask_ids = [subtask.task_id for subtask in ts_res.subtasks] hUj:h^hahchhe}ry:(hg]hh]hi]hj]hm]uhoNhphhq]rz:(h)r{:}r|:(hTX**IMPORTANT** The ``subtask_ids`` attribute on the ``TaskSetResult`` instance has been removed. To get this information instead use:hUjw:h^hahchhe}r}:(hg]hh]hi]hj]hm]uhoMhq]r~:(j)r:}r:(hTX **IMPORTANT**he}r:(hg]hh]hi]hj]hm]uhUj{:hq]r:hzX IMPORTANTr:r:}r:(hTUhUj:ubahcjubhzX The r:r:}r:(hTX The hUj{:ubj.)r:}r:(hTX``subtask_ids``he}r:(hg]hh]hi]hj]hm]uhUj{:hq]r:hzX subtask_idsr:r:}r:(hTUhUj:ubahcj6ubhzX attribute on the r:r:}r:(hTX attribute on the hUj{:ubj.)r:}r:(hTX``TaskSetResult``he}r:(hg]hh]hi]hj]hm]uhUj{:hq]r:hzX TaskSetResultr:r:}r:(hTUhUj:ubahcj6ubhzX@ instance has been removed. To get this information instead use:r:r:}r:(hTX@ instance has been removed. To get this information instead use:hUj{:ubeubj)r:}r:(hTXB>>> subtask_ids = [subtask.task_id for subtask in ts_res.subtasks]hUjw:h^Nhcjhe}r:(jjhj]hi]hg]hh]hm]uhoNhphhq]r:hzXB>>> subtask_ids = [subtask.task_id for subtask in ts_res.subtasks]r:r:}r:(hTUhUj:ubaubeubh)r:}r:(hTXJ``Taskset.run()`` now respects extra message options from the task class. hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoNhphhq]r:h)r:}r:(hTXI``Taskset.run()`` now respects extra message options from the task class.hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoMhq]r:(j.)r:}r:(hTX``Taskset.run()``he}r:(hg]hh]hi]hj]hm]uhUj:hq]r:hzX Taskset.run()r:r:}r:(hTUhUj:ubahcj6ubhzX8 now respects extra message options from the task class.r:r:}r:(hTX8 now respects extra message options from the task class.hUj:ubeubaubh)r:}r:(hTXSTask: Add attribute ``ignore_result``: Don't store the status and return value. This means you can't use the ``celery.result.AsyncResult`` to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual. hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoNhphhq]r:h)r:}r:(hTXRTask: Add attribute ``ignore_result``: Don't store the status and return value. This means you can't use the ``celery.result.AsyncResult`` to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual.hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoMhq]r:(hzXTask: Add attribute r:r:}r:(hTXTask: Add attribute hUj:ubj.)r:}r:(hTX``ignore_result``he}r:(hg]hh]hi]hj]hm]uhUj:hq]r:hzX ignore_resultr:r:}r:(hTUhUj:ubahcj6ubhzXH: Don't store the status and return value. This means you can't use the r:r:}r:(hTXH: Don't store the status and return value. This means you can't use the hUj:ubj.)r:}r:(hTX``celery.result.AsyncResult``he}r:(hg]hh]hi]hj]hm]uhUj:hq]r:hzXcelery.result.AsyncResultr:r:}r:(hTUhUj:ubahcj6ubhzX to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual.r:r:}r:(hTX to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual.hUj:ubeubaubh)r:}r:(hTX\Task: Add attribute ``disable_error_emails`` to disable sending error emails for that task. hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoNhphhq]r:h)r:}r:(hTX[Task: Add attribute ``disable_error_emails`` to disable sending error emails for that task.hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoMhq]r:(hzXTask: Add attribute r:r:}r:(hTXTask: Add attribute hUj:ubj.)r:}r:(hTX``disable_error_emails``he}r:(hg]hh]hi]hj]hm]uhUj:hq]r:hzXdisable_error_emailsr:r:}r:(hTUhUj:ubahcj6ubhzX/ to disable sending error emails for that task.r:r:}r:(hTX/ to disable sending error emails for that task.hUj:ubeubaubh)r:}r:(hTXShould now work on Windows (although running in the background won't work, so using the ``--detach`` argument results in an exception being raised.) hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoNhphhq]r:h)r:}r:(hTXShould now work on Windows (although running in the background won't work, so using the ``--detach`` argument results in an exception being raised.)hUj:h^hahchhe}r:(hg]hh]hi]hj]hm]uhoMhq]r:(hzXXShould now work on Windows (although running in the background won't work, so using the r:r:}r:(hTXXShould now work on Windows (although running in the background won't work, so using the hUj:ubj.)r:}r:(hTX ``--detach``he}r:(hg]hh]hi]hj]hm]uhUj:hq]r:hzX--detachr:r:}r:(hTUhUj:ubahcj6ubhzX0 argument results in an exception being raised.)r:r:}r:(hTX0 argument results in an exception being raised.)hUj:ubeubaubh)r:}r;(hTXAdded support for statistics for profiling and monitoring. To start sending statistics start ``celeryd`` with the ``--statistics`` option. Then after a while you can dump the results by running ``python manage.py celerystats``. See ``celery.monitoring`` for more information. hUj:h^hahchhe}r;(hg]hh]hi]hj]hm]uhoNhphhq]r;h)r;}r;(hTXAdded support for statistics for profiling and monitoring. To start sending statistics start ``celeryd`` with the ``--statistics`` option. Then after a while you can dump the results by running ``python manage.py celerystats``. See ``celery.monitoring`` for more information.hUj:h^hahchhe}r;(hg]hh]hi]hj]hm]uhoMhq]r;(hzX]Added support for statistics for profiling and monitoring. To start sending statistics start r;r;}r ;(hTX]Added support for statistics for profiling and monitoring. To start sending statistics start hUj;ubj.)r ;}r ;(hTX ``celeryd``he}r ;(hg]hh]hi]hj]hm]uhUj;hq]r ;hzXcelerydr;r;}r;(hTUhUj ;ubahcj6ubhzX with the r;r;}r;(hTX with the hUj;ubj.)r;}r;(hTX``--statistics``he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;hzX --statisticsr;r;}r;(hTUhUj;ubahcj6ubhzX@ option. Then after a while you can dump the results by running r;r;}r;(hTX@ option. Then after a while you can dump the results by running hUj;ubj.)r;}r;(hTX ``python manage.py celerystats``he}r ;(hg]hh]hi]hj]hm]uhUj;hq]r!;hzXpython manage.py celerystatsr";r#;}r$;(hTUhUj;ubahcj6ubhzX. See r%;r&;}r';(hTX. See hUj;ubj.)r(;}r);(hTX``celery.monitoring``he}r*;(hg]hh]hi]hj]hm]uhUj;hq]r+;hzXcelery.monitoringr,;r-;}r.;(hTUhUj(;ubahcj6ubhzX for more information.r/;r0;}r1;(hTX for more information.hUj;ubeubaubh)r2;}r3;(hTXThe celery daemon can now be supervised (i.e it is automatically restarted if it crashes). To use this start celeryd with the ``--supervised`` option (or alternatively ``-S``). hUj:h^hahchhe}r4;(hg]hh]hi]hj]hm]uhoNhphhq]r5;h)r6;}r7;(hTXThe celery daemon can now be supervised (i.e it is automatically restarted if it crashes). To use this start celeryd with the ``--supervised`` option (or alternatively ``-S``).hUj2;h^hahchhe}r8;(hg]hh]hi]hj]hm]uhoMhq]r9;(hzX~The celery daemon can now be supervised (i.e it is automatically restarted if it crashes). To use this start celeryd with the r:;r;;}r<;(hTX~The celery daemon can now be supervised (i.e it is automatically restarted if it crashes). To use this start celeryd with the hUj6;ubj.)r=;}r>;(hTX``--supervised``he}r?;(hg]hh]hi]hj]hm]uhUj6;hq]r@;hzX --supervisedrA;rB;}rC;(hTUhUj=;ubahcj6ubhzX option (or alternatively rD;rE;}rF;(hTX option (or alternatively hUj6;ubj.)rG;}rH;(hTX``-S``he}rI;(hg]hh]hi]hj]hm]uhUj6;hq]rJ;hzX-SrK;rL;}rM;(hTUhUjG;ubahcj6ubhzX).rN;rO;}rP;(hTX).hUj6;ubeubaubh)rQ;}rR;(hTXviews.apply: View applying a task. Example:: http://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&kwarg2=b **NOTE** Use with caution, preferably not make this publicly accessible without ensuring your code is safe! hUj:h^hahchhe}rS;(hg]hh]hi]hj]hm]uhoNhphhq]rT;(h)rU;}rV;(hTX,views.apply: View applying a task. Example::hUjQ;h^hahchhe}rW;(hg]hh]hi]hj]hm]uhoMhq]rX;hzX+views.apply: View applying a task. Example:rY;rZ;}r[;(hTX+views.apply: View applying a task. Example:hUjU;ubaubj)r\;}r];(hTXAhttp://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&kwarg2=bhUjQ;hcjhe}r^;(jjhj]hi]hg]hh]hm]uhoMhq]r_;hzXAhttp://e.com/celery/apply/task_name/arg1/arg2//?kwarg1=a&kwarg2=br`;ra;}rb;(hTUhUj\;ubaubh)rc;}rd;(hTXk**NOTE** Use with caution, preferably not make this publicly accessible without ensuring your code is safe!hUjQ;h^hahchhe}re;(hg]hh]hi]hj]hm]uhoMhq]rf;(j)rg;}rh;(hTX**NOTE**he}ri;(hg]hh]hi]hj]hm]uhUjc;hq]rj;hzXNOTErk;rl;}rm;(hTUhUjg;ubahcjubhzXc Use with caution, preferably not make this publicly accessible without ensuring your code is safe!rn;ro;}rp;(hTXc Use with caution, preferably not make this publicly accessible without ensuring your code is safe!hUjc;ubeubeubh)rq;}rr;(hTX1Refactored ``celery.task``. It's now split into three modules: * celery.task Contains ``apply_async``, ``delay_task``, ``discard_all``, and task shortcuts, plus imports objects from ``celery.task.base`` and ``celery.task.builtins`` * celery.task.base Contains task base classes: ``Task``, ``PeriodicTask``, ``TaskSet``, ``AsynchronousMapTask``, ``ExecuteRemoteTask``. * celery.task.builtins Built-in tasks: ``PingTask``, ``DeleteExpiredTaskMetaTask``. hUj:h^hahchhe}rs;(hg]hh]hi]hj]hm]uhoNhphhq]rt;(h)ru;}rv;(hTX>Refactored ``celery.task``. It's now split into three modules:rw;hUjq;h^hahchhe}rx;(hg]hh]hi]hj]hm]uhoMhq]ry;(hzX Refactored rz;r{;}r|;(hTX Refactored hUju;ubj.)r};}r~;(hTX``celery.task``he}r;(hg]hh]hi]hj]hm]uhUju;hq]r;hzX celery.taskr;r;}r;(hTUhUj};ubahcj6ubhzX$. It's now split into three modules:r;r;}r;(hTX$. It's now split into three modules:hUju;ubeubj:)r;}r;(hTUhe}r;(hg]hh]hi]hj]hm]uhUjq;hq]r;h)r;}r;(hTUhe}r;(j X*hj]hi]hg]hh]hm]uhUj;hq]r;(h)r;}r;(hTXcelery.task Contains ``apply_async``, ``delay_task``, ``discard_all``, and task shortcuts, plus imports objects from ``celery.task.base`` and ``celery.task.builtins`` he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;(h)r;}r;(hTX celery.taskr;hUj;h^hahchhe}r;(hg]hh]hi]hj]hm]uhoMhq]r;hzX celery.taskr;r;}r;(hTj;hUj;ubaubj:)r;}r;(hTUhe}r;(hg]hh]hi]hj]hm]uhUj;hq]r;h)r;}r;(hTXContains ``apply_async``, ``delay_task``, ``discard_all``, and task shortcuts, plus imports objects from ``celery.task.base`` and ``celery.task.builtins``hUj;h^hahchhe}r;(hg]hh]hi]hj]hm]uhoMhq]r;(hzX Contains r;r;}r;(hTX Contains hUj;ubj.)r;}r;(hTX``apply_async``he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;hzX apply_asyncr;r;}r;(hTUhUj;ubahcj6ubhzX, r;r;}r;(hTX, hUj;ubj.)r;}r;(hTX``delay_task``he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;hzX delay_taskr;r;}r;(hTUhUj;ubahcj6ubhzX, r;r;}r;(hTX, hUj;ubj.)r;}r;(hTX``discard_all``he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;hzX discard_allr;r;}r;(hTUhUj;ubahcj6ubhzX0, and task shortcuts, plus imports objects from r;r;}r;(hTX0, and task shortcuts, plus imports objects from hUj;ubj.)r;}r;(hTX``celery.task.base``he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;hzXcelery.task.baser;r;}r;(hTUhUj;ubahcj6ubhzX and r;r;}r;(hTX and hUj;ubj.)r;}r;(hTX``celery.task.builtins``he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;hzXcelery.task.builtinsr;r;}r;(hTUhUj;ubahcj6ubeubahcjPubehchubh)r;}r;(hTXcelery.task.base Contains task base classes: ``Task``, ``PeriodicTask``, ``TaskSet``, ``AsynchronousMapTask``, ``ExecuteRemoteTask``. he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;(h)r;}r;(hTXcelery.task.baser;hUj;h^hahchhe}r;(hg]hh]hi]hj]hm]uhoMhq]r;hzXcelery.task.baser;r;}r;(hTj;hUj;ubaubj:)r;}r;(hTUhe}r;(hg]hh]hi]hj]hm]uhUj;hq]r;h)r;}r;(hTXtContains task base classes: ``Task``, ``PeriodicTask``, ``TaskSet``, ``AsynchronousMapTask``, ``ExecuteRemoteTask``.hUj;h^hahchhe}r;(hg]hh]hi]hj]hm]uhoMhq]r;(hzXContains task base classes: r;r;}r;(hTXContains task base classes: hUj;ubj.)r;}r;(hTX``Task``he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;hzXTaskr;r;}r;(hTUhUj;ubahcj6ubhzX, r;r;}r;(hTX, hUj;ubj.)r;}r;(hTX``PeriodicTask``he}r;(hg]hh]hi]hj]hm]uhUj;hq]r;hzX PeriodicTaskr;r;}r;(hTUhUj;ubahcj6ubhzX, r;r;}r;(hTX, hUj;ubj.)r<}r<(hTX ``TaskSet``he}r<(hg]hh]hi]hj]hm]uhUj;hq]r<hzXTaskSetr<r<}r<(hTUhUj<ubahcj6ubhzX, r<r<}r <(hTX, hUj;ubj.)r <}r <(hTX``AsynchronousMapTask``he}r <(hg]hh]hi]hj]hm]uhUj;hq]r <hzXAsynchronousMapTaskr<r<}r<(hTUhUj <ubahcj6ubhzX, r<r<}r<(hTX, hUj;ubj.)r<}r<(hTX``ExecuteRemoteTask``he}r<(hg]hh]hi]hj]hm]uhUj;hq]r<hzXExecuteRemoteTaskr<r<}r<(hTUhUj<ubahcj6ubhzX.r<}r<(hTX.hUj;ubeubahcjPubehchubh)r<}r<(hTXZcelery.task.builtins Built-in tasks: ``PingTask``, ``DeleteExpiredTaskMetaTask``. he}r<(hg]hh]hi]hj]hm]uhUj;hq]r <(h)r!<}r"<(hTXcelery.task.builtinsr#<hUj<h^hahchhe}r$<(hg]hh]hi]hj]hm]uhoMhq]r%<hzXcelery.task.builtinsr&<r'<}r(<(hTj#<hUj!<ubaubj:)r)<}r*<(hTUhe}r+<(hg]hh]hi]hj]hm]uhUj<hq]r,<h)r-<}r.<(hTX<Built-in tasks: ``PingTask``, ``DeleteExpiredTaskMetaTask``.r/<hUj)<h^hahchhe}r0<(hg]hh]hi]hj]hm]uhoMhq]r1<(hzXBuilt-in tasks: r2<r3<}r4<(hTXBuilt-in tasks: hUj-<ubj.)r5<}r6<(hTX ``PingTask``he}r7<(hg]hh]hi]hj]hm]uhUj-<hq]r8<hzXPingTaskr9<r:<}r;<(hTUhUj5<ubahcj6ubhzX, r<<r=<}r><(hTX, hUj-<ubj.)r?<}r@<(hTX``DeleteExpiredTaskMetaTask``he}rA<(hg]hh]hi]hj]hm]uhUj-<hq]rB<hzXDeleteExpiredTaskMetaTaskrC<rD<}rE<(hTUhUj?<ubahcj6ubhzX.rF<}rG<(hTX.hUj-<ubeubahcjPubehchubehchubahcjPubeubeubeubhV)rH<}rI<(hTUhUh\h^hahchdhe}rJ<(hg]hh]hi]hj]rK<jjahm]rL<h auhoMhphhq]rM<(hs)rN<}rO<(hTjohUjH<h^hahchwhe}rP<(hj]hi]hg]hh]hm]jjiuhoMhphhq]rQ<hzX0.3.7rR<rS<}rT<(hTjohUjN<ubaubj)rU<}rV<(hTUhUjH<h^hahcjhe}rW<(hg]hh]hi]hj]hm]uhoMhphhq]rX<j)rY<}rZ<(hTUhUjU<h^hahcjhe}r[<(hg]hh]hi]hj]hm]uhoMhphhq]r\<(j)r]<}r^<(hTX release-dater_<he}r`<(hg]hh]hi]hj]hm]uhUjY<hq]ra<hzX release-daterb<rc<}rd<(hTj_<hUj]<ubahcjubj)re<}rf<(hTX2008-06-16 11:41 P.M CET he}rg<(hg]hh]hi]hj]hm]uhUjY<hq]rh<h)ri<}rj<(hTX2008-06-16 11:41 P.M CETrk<hUje<h^hahchhe}rl<(hg]hh]hi]hj]hm]uhoMhq]rm<hzX2008-06-16 11:41 P.M CETrn<ro<}rp<(hTjk<hUji<ubaubahcjubeubaubh)rq<}rr<(hTUhUjH<h^hahchhe}rs<(j X*hj]hi]hg]hh]hm]uhoMhphhq]rt<(h)ru<}rv<(hTX**IMPORTANT** Now uses AMQP's ``basic.consume`` instead of ``basic.get``. This means we're no longer polling the broker for new messages. hUjq<h^hahchhe}rw<(hg]hh]hi]hj]hm]uhoNhphhq]rx<h)ry<}rz<(hTX**IMPORTANT** Now uses AMQP's ``basic.consume`` instead of ``basic.get``. This means we're no longer polling the broker for new messages.hUju<h^hahchhe}r{<(hg]hh]hi]hj]hm]uhoMhq]r|<(j)r}<}r~<(hTX **IMPORTANT**he}r<(hg]hh]hi]hj]hm]uhUjy<hq]r<hzX IMPORTANTr<r<}r<(hTUhUj}<ubahcjubhzX Now uses AMQP's r<r<}r<(hTX Now uses AMQP's hUjy<ubj.)r<}r<(hTX``basic.consume``he}r<(hg]hh]hi]hj]hm]uhUjy<hq]r<hzX basic.consumer<r<}r<(hTUhUj<ubahcj6ubhzX instead of r<r<}r<(hTX instead of hUjy<ubj.)r<}r<(hTX ``basic.get``he}r<(hg]hh]hi]hj]hm]uhUjy<hq]r<hzX basic.getr<r<}r<(hTUhUj<ubahcj6ubhzXA. This means we're no longer polling the broker for new messages.r<r<}r<(hTXA. This means we're no longer polling the broker for new messages.hUjy<ubeubaubh)r<}r<(hTXb**IMPORTANT** Default concurrency limit is now set to the number of CPUs available on the system. hUjq<h^hahchhe}r<(hg]hh]hi]hj]hm]uhoNhphhq]r<h)r<}r<(hTXa**IMPORTANT** Default concurrency limit is now set to the number of CPUs available on the system.hUj<h^hahchhe}r<(hg]hh]hi]hj]hm]uhoMhq]r<(j)r<}r<(hTX **IMPORTANT**he}r<(hg]hh]hi]hj]hm]uhUj<hq]r<hzX IMPORTANTr<r<}r<(hTUhUj<ubahcjubhzXT Default concurrency limit is now set to the number of CPUs available on the system.r<r<}r<(hTXT Default concurrency limit is now set to the number of CPUs available on the system.hUj<ubeubaubh)r<}r<(hTX**IMPORTANT** ``tasks.register``: Renamed ``task_name`` argument to ``name``, so >>> tasks.register(func, task_name="mytask") has to be replaced with: >>> tasks.register(func, name="mytask") hUjq<h^hahchhe}r<(hg]hh]hi]hj]hm]uhoNhphhq]r<(h)r<}r<(hTXP**IMPORTANT** ``tasks.register``: Renamed ``task_name`` argument to ``name``, sohUj<h^hahchhe}r<(hg]hh]hi]hj]hm]uhoMhq]r<(j)r<}r<(hTX **IMPORTANT**he}r<(hg]hh]hi]hj]hm]uhUj<hq]r<hzX IMPORTANTr<r<}r<(hTUhUj<ubahcjubhzX r<}r<(hTX hUj<ubj.)r<}r<(hTX``tasks.register``he}r<(hg]hh]hi]hj]hm]uhUj<hq]r<hzXtasks.registerr<r<}r<(hTUhUj<ubahcj6ubhzX : Renamed r<r<}r<(hTX : Renamed hUj<ubj.)r<}r<(hTX ``task_name``he}r<(hg]hh]hi]hj]hm]uhUj<hq]r<hzX task_namer<r<}r<(hTUhUj<ubahcj6ubhzX argument to r<r<}r<(hTX argument to hUj<ubj.)r<}r<(hTX``name``he}r<(hg]hh]hi]hj]hm]uhUj<hq]r<hzXnamer<r<}r<(hTUhUj<ubahcj6ubhzX, sor<r<}r<(hTX, sohUj<ubeubj)r<}r<(hTX,>>> tasks.register(func, task_name="mytask")hUj<h^Nhcjhe}r<(jjhj]hi]hg]hh]hm]uhoNhphhq]r<hzX,>>> tasks.register(func, task_name="mytask")r<r<}r<(hTUhUj<ubaubh)r<}r<(hTXhas to be replaced with:r<hUj<h^hahchhe}r<(hg]hh]hi]hj]hm]uhoMhq]r<hzXhas to be replaced with:r<r<}r<(hTj<hUj<ubaubj)r<}r<(hTX'>>> tasks.register(func, name="mytask")hUj<h^Nhcjhe}r<(jjhj]hi]hg]hh]hm]uhoNhphhq]r<hzX'>>> tasks.register(func, name="mytask")r<r<}r<(hTUhUj<ubaubeubh)r<}r<(hTX7The daemon now correctly runs if the pidlock is stale. hUjq<h^hahchhe}r<(hg]hh]hi]hj]hm]uhoNhphhq]r<h)r<}r<(hTX6The daemon now correctly runs if the pidlock is stale.r<hUj<h^hahchhe}r<(hg]hh]hi]hj]hm]uhoMhq]r<hzX6The daemon now correctly runs if the pidlock is stale.r<r<}r<(hTj<hUj<ubaubaubh)r<}r<(hTX!Now compatible with carrot 0.4.5 hUjq<h^hahchhe}r=(hg]hh]hi]hj]hm]uhoNhphhq]r=h)r=}r=(hTX Now compatible with carrot 0.4.5r=hUj<h^hahchhe}r=(hg]hh]hi]hj]hm]uhoMhq]r=hzX Now compatible with carrot 0.4.5r=r=}r =(hTj=hUj=ubaubaubh)r =}r =(hTX2Default AMQP connnection timeout is now 4 seconds.r =hUjq<h^hahchhe}r =(hg]hh]hi]hj]hm]uhoNhphhq]r=h)r=}r=(hTj =hUj =h^hahchhe}r=(hg]hh]hi]hj]hm]uhoMhq]r=hzX2Default AMQP connnection timeout is now 4 seconds.r=r=}r=(hTj =hUj=ubaubaubh)r=}r=(hTX6``AsyncResult.read()`` was always returning ``True``. hUjq<h^hahchhe}r=(hg]hh]hi]hj]hm]uhoNhphhq]r=h)r=}r=(hTX5``AsyncResult.read()`` was always returning ``True``.hUj=h^hahchhe}r=(hg]hh]hi]hj]hm]uhoMhq]r=(j.)r=}r=(hTX``AsyncResult.read()``he}r =(hg]hh]hi]hj]hm]uhUj=hq]r!=hzXAsyncResult.read()r"=r#=}r$=(hTUhUj=ubahcj6ubhzX was always returning r%=r&=}r'=(hTX was always returning hUj=ubj.)r(=}r)=(hTX``True``he}r*=(hg]hh]hi]hj]hm]uhUj=hq]r+=hzXTruer,=r-=}r.=(hTUhUj(=ubahcj6ubhzX.r/=}r0=(hTX.hUj=ubeubaubh)r1=}r2=(hTXVOnly use README as long_description if the file exists so easy_install doesn't break. hUjq<h^hahchhe}r3=(hg]hh]hi]hj]hm]uhoNhphhq]r4=h)r5=}r6=(hTXUOnly use README as long_description if the file exists so easy_install doesn't break.r7=hUj1=h^hahchhe}r8=(hg]hh]hi]hj]hm]uhoMhq]r9=hzXUOnly use README as long_description if the file exists so easy_install doesn't break.r:=r;=}r<=(hTj7=hUj5=ubaubaubh)r==}r>=(hTX@``celery.view``: JSON responses now properly set its mime-type. hUjq<h^hahchhe}r?=(hg]hh]hi]hj]hm]uhoNhphhq]r@=h)rA=}rB=(hTX?``celery.view``: JSON responses now properly set its mime-type.hUj==h^hahchhe}rC=(hg]hh]hi]hj]hm]uhoMhq]rD=(j.)rE=}rF=(hTX``celery.view``he}rG=(hg]hh]hi]hj]hm]uhUjA=hq]rH=hzX celery.viewrI=rJ=}rK=(hTUhUjE=ubahcj6ubhzX0: JSON responses now properly set its mime-type.rL=rM=}rN=(hTX0: JSON responses now properly set its mime-type.hUjA=ubeubaubh)rO=}rP=(hTX``apply_async`` now has a ``connection`` keyword argument so you can re-use the same AMQP connection if you want to execute more than one task. hUjq<h^hahchhe}rQ=(hg]hh]hi]hj]hm]uhoNhphhq]rR=h)rS=}rT=(hTX``apply_async`` now has a ``connection`` keyword argument so you can re-use the same AMQP connection if you want to execute more than one task.hUjO=h^hahchhe}rU=(hg]hh]hi]hj]hm]uhoMhq]rV=(j.)rW=}rX=(hTX``apply_async``he}rY=(hg]hh]hi]hj]hm]uhUjS=hq]rZ=hzX apply_asyncr[=r\=}r]=(hTUhUjW=ubahcj6ubhzX now has a r^=r_=}r`=(hTX now has a hUjS=ubj.)ra=}rb=(hTX``connection``he}rc=(hg]hh]hi]hj]hm]uhUjS=hq]rd=hzX connectionre=rf=}rg=(hTUhUja=ubahcj6ubhzXg keyword argument so you can re-use the same AMQP connection if you want to execute more than one task.rh=ri=}rj=(hTXg keyword argument so you can re-use the same AMQP connection if you want to execute more than one task.hUjS=ubeubaubh)rk=}rl=(hTXCHandle failures in task_status view such that it won't throw 500s. hUjq<h^hahchhe}rm=(hg]hh]hi]hj]hm]uhoNhphhq]rn=h)ro=}rp=(hTXBHandle failures in task_status view such that it won't throw 500s.rq=hUjk=h^hahchhe}rr=(hg]hh]hi]hj]hm]uhoMhq]rs=hzXBHandle failures in task_status view such that it won't throw 500s.rt=ru=}rv=(hTjq=hUjo=ubaubaubh)rw=}rx=(hTX>Fixed typo ``AMQP_SERVER`` in documentation to ``AMQP_HOST``. hUjq<h^hahchhe}ry=(hg]hh]hi]hj]hm]uhoNhphhq]rz=h)r{=}r|=(hTX=Fixed typo ``AMQP_SERVER`` in documentation to ``AMQP_HOST``.hUjw=h^hahchhe}r}=(hg]hh]hi]hj]hm]uhoMhq]r~=(hzX Fixed typo r=r=}r=(hTX Fixed typo hUj{=ubj.)r=}r=(hTX``AMQP_SERVER``he}r=(hg]hh]hi]hj]hm]uhUj{=hq]r=hzX AMQP_SERVERr=r=}r=(hTUhUj=ubahcj6ubhzX in documentation to r=r=}r=(hTX in documentation to hUj{=ubj.)r=}r=(hTX ``AMQP_HOST``he}r=(hg]hh]hi]hj]hm]uhUj{=hq]r=hzX AMQP_HOSTr=r=}r=(hTUhUj=ubahcj6ubhzX.r=}r=(hTX.hUj{=ubeubaubh)r=}r=(hTX<Worker exception e-mails sent to admins now works properly. hUjq<h^hahchhe}r=(hg]hh]hi]hj]hm]uhoNhphhq]r=h)r=}r=(hTX;Worker exception e-mails sent to admins now works properly.r=hUj=h^hahchhe}r=(hg]hh]hi]hj]hm]uhoMhq]r=hzX;Worker exception e-mails sent to admins now works properly.r=r=}r=(hTj=hUj=ubaubaubh)r=}r=(hTXoNo longer depends on ``django``, so installing ``celery`` won't affect the preferred Django version installed. hUjq<h^hahchhe}r=(hg]hh]hi]hj]hm]uhoNhphhq]r=h)r=}r=(hTXnNo longer depends on ``django``, so installing ``celery`` won't affect the preferred Django version installed.hUj=h^hahchhe}r=(hg]hh]hi]hj]hm]uhoMhq]r=(hzXNo longer depends on r=r=}r=(hTXNo longer depends on hUj=ubj.)r=}r=(hTX ``django``he}r=(hg]hh]hi]hj]hm]uhUj=hq]r=hzXdjangor=r=}r=(hTUhUj=ubahcj6ubhzX, so installing r=r=}r=(hTX, so installing hUj=ubj.)r=}r=(hTX ``celery``he}r=(hg]hh]hi]hj]hm]uhUj=hq]r=hzXceleryr=r=}r=(hTUhUj=ubahcj6ubhzX5 won't affect the preferred Django version installed.r=r=}r=(hTX5 won't affect the preferred Django version installed.hUj=ubeubaubh)r=}r=(hTXWNow works with PostgreSQL (psycopg2) again by registering the ``PickledObject`` field. hUjq<h^hahchhe}r=(hg]hh]hi]hj]hm]uhoNhphhq]r=h)r=}r=(hTXVNow works with PostgreSQL (psycopg2) again by registering the ``PickledObject`` field.hUj=h^hahchhe}r=(hg]hh]hi]hj]hm]uhoMhq]r=(hzX>Now works with PostgreSQL (psycopg2) again by registering the r=r=}r=(hTX>Now works with PostgreSQL (psycopg2) again by registering the hUj=ubj.)r=}r=(hTX``PickledObject``he}r=(hg]hh]hi]hj]hm]uhUj=hq]r=hzX PickledObjectr=r=}r=(hTUhUj=ubahcj6ubhzX field.r=r=}r=(hTX field.hUj=ubeubaubh)r=}r=(hTX}``celeryd``: Added ``--detach`` option as an alias to ``--daemon``, and it's the term used in the documentation from now on. hUjq<h^hahchhe}r=(hg]hh]hi]hj]hm]uhoNhphhq]r=h)r=}r=(hTX|``celeryd``: Added ``--detach`` option as an alias to ``--daemon``, and it's the term used in the documentation from now on.hUj=h^hahchhe}r=(hg]hh]hi]hj]hm]uhoMhq]r=(j.)r=}r=(hTX ``celeryd``he}r=(hg]hh]hi]hj]hm]uhUj=hq]r=hzXcelerydr=r=}r=(hTUhUj=ubahcj6ubhzX: Added r=r=}r=(hTX: Added hUj=ubj.)r=}r=(hTX ``--detach``he}r=(hg]hh]hi]hj]hm]uhUj=hq]r=hzX--detachr=r=}r=(hTUhUj=ubahcj6ubhzX option as an alias to r=r=}r=(hTX option as an alias to hUj=ubj.)r=}r=(hTX ``--daemon``he}r=(hg]hh]hi]hj]hm]uhUj=hq]r=hzX--daemonr=r=}r=(hTUhUj=ubahcj6ubhzX:, and it's the term used in the documentation from now on.r=r=}r=(hTX:, and it's the term used in the documentation from now on.hUj=ubeubaubh)r=}r=(hTXpMake sure the pool and periodic task worker thread is terminated properly at exit. (So ``Ctrl-C`` works again). hUjq<h^hahchhe}r=(hg]hh]hi]hj]hm]uhoNhphhq]r=h)r=}r>(hTXoMake sure the pool and periodic task worker thread is terminated properly at exit. (So ``Ctrl-C`` works again).hUj=h^hahchhe}r>(hg]hh]hi]hj]hm]uhoM hq]r>(hzXWMake sure the pool and periodic task worker thread is terminated properly at exit. (So r>r>}r>(hTXWMake sure the pool and periodic task worker thread is terminated properly at exit. (So hUj=ubj.)r>}r>(hTX ``Ctrl-C``he}r>(hg]hh]hi]hj]hm]uhUj=hq]r >hzXCtrl-Cr >r >}r >(hTUhUj>ubahcj6ubhzX works again).r >r>}r>(hTX works again).hUj=ubeubaubh)r>}r>(hTX"Now depends on ``python-daemon``. hUjq<h^hahchhe}r>(hg]hh]hi]hj]hm]uhoNhphhq]r>h)r>}r>(hTX!Now depends on ``python-daemon``.hUj>h^hahchhe}r>(hg]hh]hi]hj]hm]uhoM hq]r>(hzXNow depends on r>r>}r>(hTXNow depends on hUj>ubj.)r>}r>(hTX``python-daemon``he}r>(hg]hh]hi]hj]hm]uhUj>hq]r>hzX python-daemonr>r >}r!>(hTUhUj>ubahcj6ubhzX.r">}r#>(hTX.hUj>ubeubaubh)r$>}r%>(hTX%Removed dependency to ``simplejson`` hUjq<h^hahchhe}r&>(hg]hh]hi]hj]hm]uhoNhphhq]r'>h)r(>}r)>(hTX$Removed dependency to ``simplejson``hUj$>h^hahchhe}r*>(hg]hh]hi]hj]hm]uhoM hq]r+>(hzXRemoved dependency to r,>r->}r.>(hTXRemoved dependency to hUj(>ubj.)r/>}r0>(hTX``simplejson``he}r1>(hg]hh]hi]hj]hm]uhUj(>hq]r2>hzX simplejsonr3>r4>}r5>(hTUhUj/>ubahcj6ubeubaubh)r6>}r7>(hTXwCache Backend: Re-establishes connection for every task process if the Django cache backend is memcached/libmemcached. hUjq<h^hahchhe}r8>(hg]hh]hi]hj]hm]uhoNhphhq]r9>h)r:>}r;>(hTXvCache Backend: Re-establishes connection for every task process if the Django cache backend is memcached/libmemcached.r<>hUj6>h^hahchhe}r=>(hg]hh]hi]hj]hm]uhoM hq]r>>hzXvCache Backend: Re-establishes connection for every task process if the Django cache backend is memcached/libmemcached.r?>r@>}rA>(hTj<>hUj:>ubaubaubh)rB>}rC>(hTXKTyrant Backend: Now re-establishes the connection for every task executed. hUjq<h^hahchhe}rD>(hg]hh]hi]hj]hm]uhoNhphhq]rE>h)rF>}rG>(hTXJTyrant Backend: Now re-establishes the connection for every task executed.rH>hUjB>h^hahchhe}rI>(hg]hh]hi]hj]hm]uhoM hq]rJ>hzXJTyrant Backend: Now re-establishes the connection for every task executed.rK>rL>}rM>(hTjH>hUjF>ubaubaubeubeubhV)rN>}rO>(hTUhUh\h^hahchdhe}rP>(hg]hh]hi]hj]rQ>j}ahm]rR>hauhoM hphhq]rS>(hs)rT>}rU>(hTjhUjN>h^hahchwhe}rV>(hj]hi]hg]hh]hm]jj|uhoM hphhq]rW>hzX0.3.3rX>rY>}rZ>(hTjhUjT>ubaubj)r[>}r\>(hTUhUjN>h^hahcjhe}r]>(hg]hh]hi]hj]hm]uhoM hphhq]r^>j)r_>}r`>(hTUhUj[>h^hahcjhe}ra>(hg]hh]hi]hj]hm]uhoM hphhq]rb>(j)rc>}rd>(hTX release-datere>he}rf>(hg]hh]hi]hj]hm]uhUj_>hq]rg>hzX release-daterh>ri>}rj>(hTje>hUjc>ubahcjubj)rk>}rl>(hTX2009-06-08 01:07 P.M CET he}rm>(hg]hh]hi]hj]hm]uhUj_>hq]rn>h)ro>}rp>(hTX2009-06-08 01:07 P.M CETrq>hUjk>h^hahchhe}rr>(hg]hh]hi]hj]hm]uhoM hq]rs>hzX2009-06-08 01:07 P.M CETrt>ru>}rv>(hTjq>hUjo>ubaubahcjubeubaubh)rw>}rx>(hTUhUjN>h^hahchhe}ry>(j X*hj]hi]hg]hh]hm]uhoM hphhq]rz>h)r{>}r|>(hTXgThe ``PeriodicWorkController`` now sleeps for 1 second between checking for periodic tasks to execute. hUjw>h^hahchhe}r}>(hg]hh]hi]hj]hm]uhoNhphhq]r~>h)r>}r>(hTXfThe ``PeriodicWorkController`` now sleeps for 1 second between checking for periodic tasks to execute.hUj{>h^hahchhe}r>(hg]hh]hi]hj]hm]uhoM hq]r>(hzXThe r>r>}r>(hTXThe hUj>ubj.)r>}r>(hTX``PeriodicWorkController``he}r>(hg]hh]hi]hj]hm]uhUj>hq]r>hzXPeriodicWorkControllerr>r>}r>(hTUhUj>ubahcj6ubhzXH now sleeps for 1 second between checking for periodic tasks to execute.r>r>}r>(hTXH now sleeps for 1 second between checking for periodic tasks to execute.hUj>ubeubaubaubeubhV)r>}r>(hTUhUh\h^hahchdhe}r>(hg]hh]hi]hj]r>jahm]r>hauhoM hphhq]r>(hs)r>}r>(hTjhUj>h^hahchwhe}r>(hj]hi]hg]hh]hm]jjuhoM hphhq]r>hzX0.3.2r>r>}r>(hTjhUj>ubaubj)r>}r>(hTUhUj>h^hahcjhe}r>(hg]hh]hi]hj]hm]uhoM hphhq]r>j)r>}r>(hTUhUj>h^hahcjhe}r>(hg]hh]hi]hj]hm]uhoM hphhq]r>(j)r>}r>(hTX release-dater>he}r>(hg]hh]hi]hj]hm]uhUj>hq]r>hzX release-dater>r>}r>(hTj>hUj>ubahcjubj)r>}r>(hTX2009-06-08 01:07 P.M CET he}r>(hg]hh]hi]hj]hm]uhUj>hq]r>h)r>}r>(hTX2009-06-08 01:07 P.M CETr>hUj>h^hahchhe}r>(hg]hh]hi]hj]hm]uhoM hq]r>hzX2009-06-08 01:07 P.M CETr>r>}r>(hTj>hUj>ubaubahcjubeubaubh)r>}r>(hTUhUj>h^hahchhe}r>(j X*hj]hi]hg]hh]hm]uhoM hphhq]r>(h)r>}r>(hTXZceleryd: Added option ``--discard``: Discard (delete!) all waiting messages in the queue. hUj>h^hahchhe}r>(hg]hh]hi]hj]hm]uhoNhphhq]r>h)r>}r>(hTXYceleryd: Added option ``--discard``: Discard (delete!) all waiting messages in the queue.hUj>h^hahchhe}r>(hg]hh]hi]hj]hm]uhoM hq]r>(hzXceleryd: Added option r>r>}r>(hTXceleryd: Added option hUj>ubj.)r>}r>(hTX ``--discard``he}r>(hg]hh]hi]hj]hm]uhUj>hq]r>hzX --discardr>r>}r>(hTUhUj>ubahcj6ubhzX6: Discard (delete!) all waiting messages in the queue.r>r>}r>(hTX6: Discard (delete!) all waiting messages in the queue.hUj>ubeubaubh)r>}r>(hTXCceleryd: The ``--wakeup-after`` option was not handled as a float. hUj>h^hahchhe}r>(hg]hh]hi]hj]hm]uhoNhphhq]r>h)r>}r>(hTXBceleryd: The ``--wakeup-after`` option was not handled as a float.hUj>h^hahchhe}r>(hg]hh]hi]hj]hm]uhoM hq]r>(hzX celeryd: The r>r>}r>(hTX celeryd: The hUj>ubj.)r>}r>(hTX``--wakeup-after``he}r>(hg]hh]hi]hj]hm]uhUj>hq]r>hzX--wakeup-afterr>r>}r>(hTUhUj>ubahcj6ubhzX# option was not handled as a float.r>r>}r>(hTX# option was not handled as a float.hUj>ubeubaubeubeubhV)r>}r>(hTUhUh\h^hahchdhe}r>(hg]hh]hi]hj]r>jahm]r>h(hs)r>}r>(hTjhUj>h^hahchwhe}r>(hj]hi]hg]hh]hm]jjuhoM hphhq]r>hzX0.3.1r>r>}r>(hTjhUj>ubaubj)r>}r>(hTUhUj>h^hahcjhe}r>(hg]hh]hi]hj]hm]uhoM! hphhq]r>j)r>}r>(hTUhUj>h^hahcjhe}r>(hg]hh]hi]hj]hm]uhoM! hphhq]r>(j)r>}r>(hTX release-dater>he}r>(hg]hh]hi]hj]hm]uhUj>hq]r?hzX release-dater?r?}r?(hTj>hUj>ubahcjubj)r?}r?(hTX2009-06-08 01:07 P.M CET he}r?(hg]hh]hi]hj]hm]uhUj>hq]r?h)r?}r ?(hTX2009-06-08 01:07 P.M CETr ?hUj?h^hahchhe}r ?(hg]hh]hi]hj]hm]uhoM! hq]r ?hzX2009-06-08 01:07 P.M CETr ?r?}r?(hTj ?hUj?ubaubahcjubeubaubh)r?}r?(hTUhUj>h^hahchhe}r?(j X*hj]hi]hg]hh]hm]uhoM# hphhq]r?(h)r?}r?(hTXmThe `PeriodicTask`` worker is now running in its own thread instead of blocking the ``TaskController`` loop. hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoNhphhq]r?h)r?}r?(hTXlThe `PeriodicTask`` worker is now running in its own thread instead of blocking the ``TaskController`` loop.hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoM# hq]r?(hzXThe r?r?}r?(hTXThe hUj?ubj)r?}r ?(hTX`PeriodicTask``he}r!?(hg]hh]hi]hj]hm]uhUj?hq]r"?hzX PeriodicTask`r#?r$?}r%?(hTUhUj?ubahcjubhzXA worker is now running in its own thread instead of blocking the r&?r'?}r(?(hTXA worker is now running in its own thread instead of blocking the hUj?ubj.)r)?}r*?(hTX``TaskController``he}r+?(hg]hh]hi]hj]hm]uhUj?hq]r,?hzXTaskControllerr-?r.?}r/?(hTUhUj)?ubahcj6ubhzX loop.r0?r1?}r2?(hTX loop.hUj?ubeubaubh)r3?}r4?(hTXIDefault ``QUEUE_WAKEUP_AFTER`` has been lowered to ``0.1`` (was ``0.3``) hUj?h^hahchhe}r5?(hg]hh]hi]hj]hm]uhoNhphhq]r6?h)r7?}r8?(hTXHDefault ``QUEUE_WAKEUP_AFTER`` has been lowered to ``0.1`` (was ``0.3``)hUj3?h^hahchhe}r9?(hg]hh]hi]hj]hm]uhoM& hq]r:?(hzXDefault r;?r?}r??(hTX``QUEUE_WAKEUP_AFTER``he}r@?(hg]hh]hi]hj]hm]uhUj7?hq]rA?hzXQUEUE_WAKEUP_AFTERrB?rC?}rD?(hTUhUj>?ubahcj6ubhzX has been lowered to rE?rF?}rG?(hTX has been lowered to hUj7?ubj.)rH?}rI?(hTX``0.1``he}rJ?(hg]hh]hi]hj]hm]uhUj7?hq]rK?hzX0.1rL?rM?}rN?(hTUhUjH?ubahcj6ubhzX (was rO?rP?}rQ?(hTX (was hUj7?ubj.)rR?}rS?(hTX``0.3``he}rT?(hg]hh]hi]hj]hm]uhUj7?hq]rU?hzX0.3rV?rW?}rX?(hTUhUjR?ubahcj6ubhzX)rY?}rZ?(hTX)hUj7?ubeubaubeubeubhV)r[?}r\?(hTUhUh\h^hahchdhe}r]?(hg]hh]hi]hj]r^?jahm]r_?hauhoM) hphhq]r`?(hs)ra?}rb?(hTjhUj[?h^hahchwhe}rc?(hj]hi]hg]hh]hm]jjuhoM) hphhq]rd?hzX0.3.0re?rf?}rg?(hTjhUja?ubaubj)rh?}ri?(hTUhUj[?h^hahcjhe}rj?(hg]hh]hi]hj]hm]uhoM* hphhq]rk?j)rl?}rm?(hTUhUjh?h^hahcjhe}rn?(hg]hh]hi]hj]hm]uhoM* hphhq]ro?(j)rp?}rq?(hTX release-daterr?he}rs?(hg]hh]hi]hj]hm]uhUjl?hq]rt?hzX release-dateru?rv?}rw?(hTjr?hUjp?ubahcjubj)rx?}ry?(hTX2009-06-08 12:41 P.M CET he}rz?(hg]hh]hi]hj]hm]uhUjl?hq]r{?h)r|?}r}?(hTX2009-06-08 12:41 P.M CETr~?hUjx?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoM* hq]r?hzX2009-06-08 12:41 P.M CETr?r?}r?(hTj~?hUj|?ubaubahcjubeubaubh)r?}r?(hTXZ**NOTE** This is a development version, for the stable release, please see versions 0.2.x.hUj[?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoM, hphhq]r?(j)r?}r?(hTX**NOTE**he}r?(hg]hh]hi]hj]hm]uhUj?hq]r?hzXNOTEr?r?}r?(hTUhUj?ubahcjubhzXR This is a development version, for the stable release, please see versions 0.2.x.r?r?}r?(hTXR This is a development version, for the stable release, please see versions 0.2.x.hUj?ubeubh)r?}r?(hTX**VERY IMPORTANT:** Pickle is now the encoder used for serializing task arguments, so be sure to flush your task queue before you upgrade.hUj[?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoM/ hphhq]r?(j)r?}r?(hTX**VERY IMPORTANT:**he}r?(hg]hh]hi]hj]hm]uhUj?hq]r?hzXVERY IMPORTANT:r?r?}r?(hTUhUj?ubahcjubhzXw Pickle is now the encoder used for serializing task arguments, so be sure to flush your task queue before you upgrade.r?r?}r?(hTXw Pickle is now the encoder used for serializing task arguments, so be sure to flush your task queue before you upgrade.hUj?ubeubh)r?}r?(hTUhUj[?h^hahchhe}r?(j X*hj]hi]hg]hh]hm]uhoM2 hphhq]r?(h)r?}r?(hTX**IMPORTANT** TaskSet.run() now returns a celery.result.TaskSetResult instance, which lets you inspect the status and return values of a taskset as it was a single entity. hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoNhphhq]r?h)r?}r?(hTX**IMPORTANT** TaskSet.run() now returns a celery.result.TaskSetResult instance, which lets you inspect the status and return values of a taskset as it was a single entity.hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoM2 hq]r?(j)r?}r?(hTX **IMPORTANT**he}r?(hg]hh]hi]hj]hm]uhUj?hq]r?hzX IMPORTANTr?r?}r?(hTUhUj?ubahcjubhzX TaskSet.run() now returns a celery.result.TaskSetResult instance, which lets you inspect the status and return values of a taskset as it was a single entity.r?r?}r?(hTX TaskSet.run() now returns a celery.result.TaskSetResult instance, which lets you inspect the status and return values of a taskset as it was a single entity.hUj?ubeubaubh)r?}r?(hTX5**IMPORTANT** Celery now depends on carrot >= 0.4.1. hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoNhphhq]r?h)r?}r?(hTX4**IMPORTANT** Celery now depends on carrot >= 0.4.1.hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoM6 hq]r?(j)r?}r?(hTX **IMPORTANT**he}r?(hg]hh]hi]hj]hm]uhUj?hq]r?hzX IMPORTANTr?r?}r?(hTUhUj?ubahcjubhzX' Celery now depends on carrot >= 0.4.1.r?r?}r?(hTX' Celery now depends on carrot >= 0.4.1.hUj?ubeubaubh)r?}r?(hTXThe celery daemon now sends task errors to the registered admin e-mails. To turn off this feature, set ``SEND_CELERY_TASK_ERROR_EMAILS`` to ``False`` in your ``settings.py``. Thanks to Grégoire Cachet. hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoNhphhq]r?h)r?}r?(hTXThe celery daemon now sends task errors to the registered admin e-mails. To turn off this feature, set ``SEND_CELERY_TASK_ERROR_EMAILS`` to ``False`` in your ``settings.py``. Thanks to Grégoire Cachet.hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoM8 hq]r?(hzXgThe celery daemon now sends task errors to the registered admin e-mails. To turn off this feature, set r?r?}r?(hTXgThe celery daemon now sends task errors to the registered admin e-mails. To turn off this feature, set hUj?ubj.)r?}r?(hTX!``SEND_CELERY_TASK_ERROR_EMAILS``he}r?(hg]hh]hi]hj]hm]uhUj?hq]r?hzXSEND_CELERY_TASK_ERROR_EMAILSr?r?}r?(hTUhUj?ubahcj6ubhzX to r?r?}r?(hTX to hUj?ubj.)r?}r?(hTX ``False``he}r?(hg]hh]hi]hj]hm]uhUj?hq]r?hzXFalser?r?}r?(hTUhUj?ubahcj6ubhzX in your r?r?}r?(hTX in your hUj?ubj.)r?}r?(hTX``settings.py``he}r?(hg]hh]hi]hj]hm]uhUj?hq]r?hzX settings.pyr?r?}r?(hTUhUj?ubahcj6ubhzX. Thanks to Grégoire Cachet.r?r?}r?(hTX. Thanks to Grégoire Cachet.hUj?ubeubaubh)r?}r?(hTXYou can now run the celery daemon by using ``manage.py``:: $ python manage.py celeryd Thanks to Grégoire Cachet. hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoNhphhq]r?(h)r?}r?(hTX:You can now run the celery daemon by using ``manage.py``::hUj?h^hahchhe}r?(hg]hh]hi]hj]hm]uhoM< hq]r?(hzX+You can now run the celery daemon by using r?r?}r?(hTX+You can now run the celery daemon by using hUj?ubj.)r?}r?(hTX ``manage.py``he}r?(hg]hh]hi]hj]hm]uhUj?hq]r?hzX manage.pyr@r@}r@(hTUhUj?ubahcj6ubhzX:r@}r@(hTX:hUj?ubeubj)r@}r@(hTX$ python manage.py celerydhUj?hcjhe}r@(jjhj]hi]hg]hh]hm]uhoM> hq]r@hzX$ python manage.py celerydr @r @}r @(hTUhUj@ubaubh)r @}r @(hTXThanks to Grégoire Cachet.r@hUj?h^hahchhe}r@(hg]hh]hi]hj]hm]uhoM@ hq]r@hzXThanks to Grégoire Cachet.r@r@}r@(hTj@hUj @ubaubeubh)r@}r@(hTXAdded support for message priorities, topic exchanges, custom routing keys for tasks. This means we have introduced ``celery.task.apply_async``, a new way of executing tasks. You can use ``celery.task.delay`` and ``celery.Task.delay`` like usual, but if you want greater control over the message sent, you want ``celery.task.apply_async`` and ``celery.Task.apply_async``. This also means the AMQP configuration has changed. Some settings has been renamed, while others are new:: CELERY_AMQP_EXCHANGE CELERY_AMQP_PUBLISHER_ROUTING_KEY CELERY_AMQP_CONSUMER_ROUTING_KEY CELERY_AMQP_CONSUMER_QUEUE CELERY_AMQP_EXCHANGE_TYPE See the entry `Can I send some tasks to only some servers?`_ in the `FAQ`_ for more information. hUj?h^hahchhe}r@(hg]hh]hi]hj]hm]uhoNhphhq]r@(h)r@}r@(hTXAdded support for message priorities, topic exchanges, custom routing keys for tasks. This means we have introduced ``celery.task.apply_async``, a new way of executing tasks.hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoMB hq]r@(hzXtAdded support for message priorities, topic exchanges, custom routing keys for tasks. This means we have introduced r@r@}r@(hTXtAdded support for message priorities, topic exchanges, custom routing keys for tasks. This means we have introduced hUj@ubj.)r@}r @(hTX``celery.task.apply_async``he}r!@(hg]hh]hi]hj]hm]uhUj@hq]r"@hzXcelery.task.apply_asyncr#@r$@}r%@(hTUhUj@ubahcj6ubhzX, a new way of executing tasks.r&@r'@}r(@(hTX, a new way of executing tasks.hUj@ubeubh)r)@}r*@(hTXYou can use ``celery.task.delay`` and ``celery.Task.delay`` like usual, but if you want greater control over the message sent, you want ``celery.task.apply_async`` and ``celery.Task.apply_async``.hUj@h^hahchhe}r+@(hg]hh]hi]hj]hm]uhoMF hq]r,@(hzX You can use r-@r.@}r/@(hTX You can use hUj)@ubj.)r0@}r1@(hTX``celery.task.delay``he}r2@(hg]hh]hi]hj]hm]uhUj)@hq]r3@hzXcelery.task.delayr4@r5@}r6@(hTUhUj0@ubahcj6ubhzX and r7@r8@}r9@(hTX and hUj)@ubj.)r:@}r;@(hTX``celery.Task.delay``he}r<@(hg]hh]hi]hj]hm]uhUj)@hq]r=@hzXcelery.Task.delayr>@r?@}r@@(hTUhUj:@ubahcj6ubhzXM like usual, but if you want greater control over the message sent, you want rA@rB@}rC@(hTXM like usual, but if you want greater control over the message sent, you want hUj)@ubj.)rD@}rE@(hTX``celery.task.apply_async``he}rF@(hg]hh]hi]hj]hm]uhUj)@hq]rG@hzXcelery.task.apply_asyncrH@rI@}rJ@(hTUhUjD@ubahcj6ubhzX and rK@rL@}rM@(hTX and hUj)@ubj.)rN@}rO@(hTX``celery.Task.apply_async``he}rP@(hg]hh]hi]hj]hm]uhUj)@hq]rQ@hzXcelery.Task.apply_asyncrR@rS@}rT@(hTUhUjN@ubahcj6ubhzX.rU@}rV@(hTX.hUj)@ubeubh)rW@}rX@(hTXjThis also means the AMQP configuration has changed. Some settings has been renamed, while others are new::hUj@h^hahchhe}rY@(hg]hh]hi]hj]hm]uhoMJ hq]rZ@hzXiThis also means the AMQP configuration has changed. Some settings has been renamed, while others are new:r[@r\@}r]@(hTXiThis also means the AMQP configuration has changed. Some settings has been renamed, while others are new:hUjW@ubaubj)r^@}r_@(hTXCELERY_AMQP_EXCHANGE CELERY_AMQP_PUBLISHER_ROUTING_KEY CELERY_AMQP_CONSUMER_ROUTING_KEY CELERY_AMQP_CONSUMER_QUEUE CELERY_AMQP_EXCHANGE_TYPEhUj@hcjhe}r`@(jjhj]hi]hg]hh]hm]uhoMM hq]ra@hzXCELERY_AMQP_EXCHANGE CELERY_AMQP_PUBLISHER_ROUTING_KEY CELERY_AMQP_CONSUMER_ROUTING_KEY CELERY_AMQP_CONSUMER_QUEUE CELERY_AMQP_EXCHANGE_TYPErb@rc@}rd@(hTUhUj^@ubaubh)re@}rf@(hTX`See the entry `Can I send some tasks to only some servers?`_ in the `FAQ`_ for more information.hUj@h^hahchhe}rg@(hg]hh]hi]hj]hm]uhoMS hq]rh@(hzXSee the entry ri@rj@}rk@(hTXSee the entry hUje@ubh)rl@}rm@(hTX.`Can I send some tasks to only some servers?`_j+KhUje@hchhe}rn@(UnameX+Can I send some tasks to only some servers?j.X!http://bit.ly/celery_AMQP_routingro@hj]hi]hg]hh]hm]uhq]rp@hzX+Can I send some tasks to only some servers?rq@rr@}rs@(hTUhUjl@ubaubhzX in the rt@ru@}rv@(hTX in the hUje@ubh)rw@}rx@(hTX`FAQ`_j+KhUje@hchhe}ry@(UnameXFAQj.X%http://ask.github.com/celery/faq.htmlrz@hj]hi]hg]hh]hm]uhq]r{@hzXFAQr|@r}@}r~@(hTUhUjw@ubaubhzX for more information.r@r@}r@(hTX for more information.hUje@ubeubeubeubjx)r@}r@(hTXd.. _`Can I send some tasks to only some servers?`: http://bit.ly/celery_AMQP_routinghYKhUj[?h^hahcj}he}r@(j.jo@hj]r@U*can-i-send-some-tasks-to-only-some-serversr@ahi]hg]hh]hm]r@hauhoMV hphhq]ubjx)r@}r@(hTX0.. _`FAQ`: http://ask.github.com/celery/faq.htmlhYKhUj[?h^hahcj}he}r@(j.jz@hj]r@Ufaqr@ahi]hg]hh]hm]r@h4auhoMX hphhq]ubh)r@}r@(hTUhUj[?h^hahchhe}r@(j X*hj]hi]hg]hh]hm]uhoMZ hphhq]r@(h)r@}r@(hTXTask errors are now logged using loglevel ``ERROR`` instead of ``INFO``, and backtraces are dumped. Thanks to Grégoire Cachet. hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoNhphhq]r@h)r@}r@(hTXTask errors are now logged using loglevel ``ERROR`` instead of ``INFO``, and backtraces are dumped. Thanks to Grégoire Cachet.hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoMZ hq]r@(hzX*Task errors are now logged using loglevel r@r@}r@(hTX*Task errors are now logged using loglevel hUj@ubj.)r@}r@(hTX ``ERROR``he}r@(hg]hh]hi]hj]hm]uhUj@hq]r@hzXERRORr@r@}r@(hTUhUj@ubahcj6ubhzX instead of r@r@}r@(hTX instead of hUj@ubj.)r@}r@(hTX``INFO``he}r@(hg]hh]hi]hj]hm]uhUj@hq]r@hzXINFOr@r@}r@(hTUhUj@ubahcj6ubhzX8, and backtraces are dumped. Thanks to Grégoire Cachet.r@r@}r@(hTX8, and backtraces are dumped. Thanks to Grégoire Cachet.hUj@ubeubaubh)r@}r@(hTXMake every new worker process re-establish it's Django DB connection, this solving the "MySQL connection died?" exceptions. Thanks to Vitaly Babiy and Jirka Vejrazka. hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoNhphhq]r@h)r@}r@(hTXMake every new worker process re-establish it's Django DB connection, this solving the "MySQL connection died?" exceptions. Thanks to Vitaly Babiy and Jirka Vejrazka.r@hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoM] hq]r@hzXMake every new worker process re-establish it's Django DB connection, this solving the "MySQL connection died?" exceptions. Thanks to Vitaly Babiy and Jirka Vejrazka.r@r@}r@(hTj@hUj@ubaubaubh)r@}r@(hTX**IMOPORTANT** Now using pickle to encode task arguments. This means you now can pass complex python objects to tasks as arguments. hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoNhphhq]r@h)r@}r@(hTX**IMOPORTANT** Now using pickle to encode task arguments. This means you now can pass complex python objects to tasks as arguments.hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoMa hq]r@(j)r@}r@(hTX**IMOPORTANT**he}r@(hg]hh]hi]hj]hm]uhUj@hq]r@hzX IMOPORTANTr@r@}r@(hTUhUj@ubahcjubhzXu Now using pickle to encode task arguments. This means you now can pass complex python objects to tasks as arguments.r@r@}r@(hTXu Now using pickle to encode task arguments. This means you now can pass complex python objects to tasks as arguments.hUj@ubeubaubh)r@}r@(hTX$Removed dependency to ``yadayada``. hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoNhphhq]r@h)r@}r@(hTX#Removed dependency to ``yadayada``.hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoMd hq]r@(hzXRemoved dependency to r@r@}r@(hTXRemoved dependency to hUj@ubj.)r@}r@(hTX ``yadayada``he}r@(hg]hh]hi]hj]hm]uhUj@hq]r@hzXyadayadar@r@}r@(hTUhUj@ubahcj6ubhzX.r@}r@(hTX.hUj@ubeubaubh)r@}r@(hTX#Added a FAQ, see ``docs/faq.rst``. hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoNhphhq]r@h)r@}r@(hTX"Added a FAQ, see ``docs/faq.rst``.hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoMf hq]r@(hzXAdded a FAQ, see r@r@}r@(hTXAdded a FAQ, see hUj@ubj.)r@}r@(hTX``docs/faq.rst``he}r@(hg]hh]hi]hj]hm]uhUj@hq]r@hzX docs/faq.rstr@r@}r@(hTUhUj@ubahcj6ubhzX.r@}r@(hTX.hUj@ubeubaubh)r@}r@(hTXZNow converts any unicode keys in task ``kwargs`` to regular strings. Thanks Vitaly Babiy. hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoNhphhq]r@h)r@}r@(hTXYNow converts any unicode keys in task ``kwargs`` to regular strings. Thanks Vitaly Babiy.hUj@h^hahchhe}r@(hg]hh]hi]hj]hm]uhoMh hq]r@(hzX&Now converts any unicode keys in task r@rA}rA(hTX&Now converts any unicode keys in task hUj@ubj.)rA}rA(hTX ``kwargs``he}rA(hg]hh]hi]hj]hm]uhUj@hq]rAhzXkwargsrArA}rA(hTUhUjAubahcj6ubhzX) to regular strings. Thanks Vitaly Babiy.r Ar A}r A(hTX) to regular strings. Thanks Vitaly Babiy.hUj@ubeubaubh)r A}r A(hTX2Renamed the ``TaskDaemon`` to ``WorkController``. hUj@h^hahchhe}rA(hg]hh]hi]hj]hm]uhoNhphhq]rAh)rA}rA(hTX1Renamed the ``TaskDaemon`` to ``WorkController``.hUj Ah^hahchhe}rA(hg]hh]hi]hj]hm]uhoMk hq]rA(hzX Renamed the rArA}rA(hTX Renamed the hUjAubj.)rA}rA(hTX``TaskDaemon``he}rA(hg]hh]hi]hj]hm]uhUjAhq]rAhzX TaskDaemonrArA}rA(hTUhUjAubahcj6ubhzX to rArA}r A(hTX to hUjAubj.)r!A}r"A(hTX``WorkController``he}r#A(hg]hh]hi]hj]hm]uhUjAhq]r$AhzXWorkControllerr%Ar&A}r'A(hTUhUj!Aubahcj6ubhzX.r(A}r)A(hTX.hUjAubeubaubh)r*A}r+A(hTXW``celery.datastructures.TaskProcessQueue`` is now renamed to ``celery.pool.TaskPool``. hUj@h^hahchhe}r,A(hg]hh]hi]hj]hm]uhoNhphhq]r-Ah)r.A}r/A(hTXV``celery.datastructures.TaskProcessQueue`` is now renamed to ``celery.pool.TaskPool``.hUj*Ah^hahchhe}r0A(hg]hh]hi]hj]hm]uhoMm hq]r1A(j.)r2A}r3A(hTX*``celery.datastructures.TaskProcessQueue``he}r4A(hg]hh]hi]hj]hm]uhUj.Ahq]r5AhzX&celery.datastructures.TaskProcessQueuer6Ar7A}r8A(hTUhUj2Aubahcj6ubhzX is now renamed to r9Ar:A}r;A(hTX is now renamed to hUj.Aubj.)rA(hg]hh]hi]hj]hm]uhUj.Ahq]r?AhzXcelery.pool.TaskPoolr@ArAA}rBA(hTUhUjB}r?B(hTUhUj:Bh^hahcjhe}r@B(hg]hh]hi]hj]hm]uhoM hphhq]rAB(j)rBB}rCB(hTX release-daterDBhe}rEB(hg]hh]hi]hj]hm]uhUj>Bhq]rFBhzX release-daterGBrHB}rIB(hTjDBhUjBBubahcjubj)rJB}rKB(hTX2009-05-20 12:33 P.M CET he}rLB(hg]hh]hi]hj]hm]uhUj>Bhq]rMBh)rNB}rOB(hTX2009-05-20 12:33 P.M CETrPBhUjJBh^hahchhe}rQB(hg]hh]hi]hj]hm]uhoM hq]rRBhzX2009-05-20 12:33 P.M CETrSBrTB}rUB(hTjPBhUjNBubaubahcjubeubaubh)rVB}rWB(hTUhUj-Bh^hahchhe}rXB(j X*hj]hi]hg]hh]hm]uhoM hphhq]rYB(h)rZB}r[B(hTXfIt's getting quite stable, with a lot of new features, so bump version to 0.2. This is a pre-release. hUjVBh^hahchhe}r\B(hg]hh]hi]hj]hm]uhoNhphhq]r]Bh)r^B}r_B(hTXeIt's getting quite stable, with a lot of new features, so bump version to 0.2. This is a pre-release.r`BhUjZBh^hahchhe}raB(hg]hh]hi]hj]hm]uhoM hq]rbBhzXeIt's getting quite stable, with a lot of new features, so bump version to 0.2. This is a pre-release.rcBrdB}reB(hTj`BhUj^Bubaubaubh)rfB}rgB(hTX``celery.task.mark_as_read()`` and ``celery.task.mark_as_failure()`` has been removed. Use ``celery.backends.default_backend.mark_as_read()``, and ``celery.backends.default_backend.mark_as_failure()`` instead. hUjVBh^hahchhe}rhB(hg]hh]hi]hj]hm]uhoNhphhq]riBh)rjB}rkB(hTX``celery.task.mark_as_read()`` and ``celery.task.mark_as_failure()`` has been removed. Use ``celery.backends.default_backend.mark_as_read()``, and ``celery.backends.default_backend.mark_as_failure()`` instead.hUjfBh^hahchhe}rlB(hg]hh]hi]hj]hm]uhoM hq]rmB(j.)rnB}roB(hTX``celery.task.mark_as_read()``he}rpB(hg]hh]hi]hj]hm]uhUjjBhq]rqBhzXcelery.task.mark_as_read()rrBrsB}rtB(hTUhUjnBubahcj6ubhzX and ruBrvB}rwB(hTX and hUjjBubj.)rxB}ryB(hTX!``celery.task.mark_as_failure()``he}rzB(hg]hh]hi]hj]hm]uhUjjBhq]r{BhzXcelery.task.mark_as_failure()r|Br}B}r~B(hTUhUjxBubahcj6ubhzX has been removed. Use rBrB}rB(hTX has been removed. Use hUjjBubj.)rB}rB(hTX2``celery.backends.default_backend.mark_as_read()``he}rB(hg]hh]hi]hj]hm]uhUjjBhq]rBhzX.celery.backends.default_backend.mark_as_read()rBrB}rB(hTUhUjBubahcj6ubhzX, and rBrB}rB(hTX, and hUjjBubj.)rB}rB(hTX5``celery.backends.default_backend.mark_as_failure()``he}rB(hg]hh]hi]hj]hm]uhUjjBhq]rBhzX1celery.backends.default_backend.mark_as_failure()rBrB}rB(hTUhUjBubahcj6ubhzX instead.rBrB}rB(hTX instead.hUjjBubeubaubeubeubhV)rB}rB(hTUhUh\h^hahchdhe}rB(hg]hh]hi]hj]rBjahm]rBh@auhoM hphhq]rB(hs)rB}rB(hTjhUjBh^hahchwhe}rB(hj]hi]hg]hh]hm]jjuhoM hphhq]rBhzX0.1.15rBrB}rB(hTjhUjBubaubj)rB}rB(hTUhUjBh^hahcjhe}rB(hg]hh]hi]hj]hm]uhoM hphhq]rBj)rB}rB(hTUhUjBh^hahcjhe}rB(hg]hh]hi]hj]hm]uhoM hphhq]rB(j)rB}rB(hTX release-daterBhe}rB(hg]hh]hi]hj]hm]uhUjBhq]rBhzX release-daterBrB}rB(hTjBhUjBubahcjubj)rB}rB(hTX2009-05-19 04:13 P.M CET he}rB(hg]hh]hi]hj]hm]uhUjBhq]rBh)rB}rB(hTX2009-05-19 04:13 P.M CETrBhUjBh^hahchhe}rB(hg]hh]hi]hj]hm]uhoM hq]rBhzX2009-05-19 04:13 P.M CETrBrB}rB(hTjBhUjBubaubahcjubeubaubh)rB}rB(hTUhUjBh^hahchhe}rB(j X*hj]hi]hg]hh]hm]uhoM hphhq]rBh)rB}rB(hTXThe celery daemon was leaking AMQP connections, this should be fixed, if you have any problems with too many files open (like ``emfile`` errors in ``rabbit.log``, please contact us! hUjBh^hahchhe}rB(hg]hh]hi]hj]hm]uhoNhphhq]rBh)rB}rB(hTXThe celery daemon was leaking AMQP connections, this should be fixed, if you have any problems with too many files open (like ``emfile`` errors in ``rabbit.log``, please contact us!hUjBh^hahchhe}rB(hg]hh]hi]hj]hm]uhoM hq]rB(hzX~The celery daemon was leaking AMQP connections, this should be fixed, if you have any problems with too many files open (like rBrB}rB(hTX~The celery daemon was leaking AMQP connections, this should be fixed, if you have any problems with too many files open (like hUjBubj.)rB}rB(hTX ``emfile``he}rB(hg]hh]hi]hj]hm]uhUjBhq]rBhzXemfilerBrB}rB(hTUhUjBubahcj6ubhzX errors in rBrB}rB(hTX errors in hUjBubj.)rB}rB(hTX``rabbit.log``he}rB(hg]hh]hi]hj]hm]uhUjBhq]rBhzX rabbit.logrBrB}rB(hTUhUjBubahcj6ubhzX, please contact us!rBrB}rB(hTX, please contact us!hUjBubeubaubaubeubhV)rB}rB(hTUhUh\h^hahchdhe}rB(hg]hh]hi]hj]rBj(ahm]rBh?auhoM hphhq]rB(hs)rB}rB(hTj-hUjBh^hahchwhe}rB(hj]hi]hg]hh]hm]jj'uhoM hphhq]rBhzX0.1.14rBrB}rB(hTj-hUjBubaubj)rB}rB(hTUhUjBh^hahcjhe}rB(hg]hh]hi]hj]hm]uhoM hphhq]rBj)rB}rB(hTUhUjBh^hahcjhe}rB(hg]hh]hi]hj]hm]uhoM hphhq]rB(j)rB}rB(hTX release-daterBhe}rB(hg]hh]hi]hj]hm]uhUjBhq]rBhzX release-daterBrB}rB(hTjBhUjBubahcjubj)rB}rC(hTX2009-05-19 01:08 P.M CET he}rC(hg]hh]hi]hj]hm]uhUjBhq]rCh)rC}rC(hTX2009-05-19 01:08 P.M CETrChUjBh^hahchhe}rC(hg]hh]hi]hj]hm]uhoM hq]rChzX2009-05-19 01:08 P.M CETrCr C}r C(hTjChUjCubaubahcjubeubaubh)r C}r C(hTUhUjBh^hahchhe}r C(j X*hj]hi]hg]hh]hm]uhoM hphhq]rCh)rC}rC(hTXUFixed a syntax error in the ``TaskSet`` class. (No such variable ``TimeOutError``). hUj Ch^hahchhe}rC(hg]hh]hi]hj]hm]uhoNhphhq]rCh)rC}rC(hTXTFixed a syntax error in the ``TaskSet`` class. (No such variable ``TimeOutError``).hUjCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoM hq]rC(hzXFixed a syntax error in the rCrC}rC(hTXFixed a syntax error in the hUjCubj.)rC}rC(hTX ``TaskSet``he}rC(hg]hh]hi]hj]hm]uhUjChq]rChzXTaskSetrCrC}r C(hTUhUjCubahcj6ubhzX class. (No such variable r!Cr"C}r#C(hTX class. (No such variable hUjCubj.)r$C}r%C(hTX``TimeOutError``he}r&C(hg]hh]hi]hj]hm]uhUjChq]r'ChzX TimeOutErrorr(Cr)C}r*C(hTUhUj$Cubahcj6ubhzX).r+Cr,C}r-C(hTX).hUjCubeubaubaubeubhV)r.C}r/C(hTUhUh\h^hahchdhe}r0C(hg]hh]hi]hj]r1Cj;ahm]r2Ch-auhoM hphhq]r3C(hs)r4C}r5C(hTj@hUj.Ch^hahchwhe}r6C(hj]hi]hg]hh]hm]jj:uhoM hphhq]r7ChzX0.1.13r8Cr9C}r:C(hTj@hUj4Cubaubj)r;C}rCj)r?C}r@C(hTUhUj;Ch^hahcjhe}rAC(hg]hh]hi]hj]hm]uhoM hphhq]rBC(j)rCC}rDC(hTX release-daterEChe}rFC(hg]hh]hi]hj]hm]uhUj?Chq]rGChzX release-daterHCrIC}rJC(hTjEChUjCCubahcjubj)rKC}rLC(hTX2009-05-19 12:36 P.M CET he}rMC(hg]hh]hi]hj]hm]uhUj?Chq]rNCh)rOC}rPC(hTX2009-05-19 12:36 P.M CETrQChUjKCh^hahchhe}rRC(hg]hh]hi]hj]hm]uhoM hq]rSChzX2009-05-19 12:36 P.M CETrTCrUC}rVC(hTjQChUjOCubaubahcjubeubaubh)rWC}rXC(hTUhUj.Ch^hahchhe}rYC(j X*hj]hi]hg]hh]hm]uhoM hphhq]rZC(h)r[C}r\C(hTX4Forgot to add ``yadayada`` to install requirements. hUjWCh^hahchhe}r]C(hg]hh]hi]hj]hm]uhoNhphhq]r^Ch)r_C}r`C(hTX3Forgot to add ``yadayada`` to install requirements.hUj[Ch^hahchhe}raC(hg]hh]hi]hj]hm]uhoM hq]rbC(hzXForgot to add rcCrdC}reC(hTXForgot to add hUj_Cubj.)rfC}rgC(hTX ``yadayada``he}rhC(hg]hh]hi]hj]hm]uhUj_Chq]riChzXyadayadarjCrkC}rlC(hTUhUjfCubahcj6ubhzX to install requirements.rmCrnC}roC(hTX to install requirements.hUj_Cubeubaubh)rpC}rqC(hTXENow deletes all expired task results, not just those marked as done. hUjWCh^hahchhe}rrC(hg]hh]hi]hj]hm]uhoNhphhq]rsCh)rtC}ruC(hTXDNow deletes all expired task results, not just those marked as done.rvChUjpCh^hahchhe}rwC(hg]hh]hi]hj]hm]uhoM hq]rxChzXDNow deletes all expired task results, not just those marked as done.ryCrzC}r{C(hTjvChUjtCubaubaubh)r|C}r}C(hTXAble to load the Tokyo Tyrant backend class without django configuration, can specify tyrant settings directly in the class constructor. hUjWCh^hahchhe}r~C(hg]hh]hi]hj]hm]uhoNhphhq]rCh)rC}rC(hTXAble to load the Tokyo Tyrant backend class without django configuration, can specify tyrant settings directly in the class constructor.rChUj|Ch^hahchhe}rC(hg]hh]hi]hj]hm]uhoM hq]rChzXAble to load the Tokyo Tyrant backend class without django configuration, can specify tyrant settings directly in the class constructor.rCrC}rC(hTjChUjCubaubaubh)rC}rC(hTXImproved API documentation hUjWCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoNhphhq]rCh)rC}rC(hTXImproved API documentationrChUjCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoM hq]rChzXImproved API documentationrCrC}rC(hTjChUjCubaubaubh)rC}rC(hTXNow using the Sphinx documentation system, you can build the html documentation by doing :: $ cd docs $ make html and the result will be in ``docs/.build/html``. hUjWCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoNhphhq]rC(h)rC}rC(hTX[Now using the Sphinx documentation system, you can build the html documentation by doing ::hUjCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoM hq]rChzXXNow using the Sphinx documentation system, you can build the html documentation by doingrCrC}rC(hTXXNow using the Sphinx documentation system, you can build the html documentation by doinghUjCubaubj)rC}rC(hTX$ cd docs $ make htmlhUjChcjhe}rC(jjhj]hi]hg]hh]hm]uhoM hq]rChzX$ cd docs $ make htmlrCrC}rC(hTUhUjCubaubh)rC}rC(hTX/and the result will be in ``docs/.build/html``.hUjCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoM hq]rC(hzXand the result will be in rCrC}rC(hTXand the result will be in hUjCubj.)rC}rC(hTX``docs/.build/html``he}rC(hg]hh]hi]hj]hm]uhUjChq]rChzXdocs/.build/htmlrCrC}rC(hTUhUjCubahcj6ubhzX.rC}rC(hTX.hUjCubeubeubeubeubhV)rC}rC(hTUhUh\h^hahchdhe}rC(hg]hh]hi]hj]rCjNahm]rCh;auhoM hphhq]rC(hs)rC}rC(hTjShUjCh^hahchwhe}rC(hj]hi]hg]hh]hm]jjMuhoM hphhq]rChzX0.1.12rCrC}rC(hTjShUjCubaubj)rC}rC(hTUhUjCh^hahcjhe}rC(hg]hh]hi]hj]hm]uhoM hphhq]rCj)rC}rC(hTUhUjCh^hahcjhe}rC(hg]hh]hi]hj]hm]uhoM hphhq]rC(j)rC}rC(hTX release-daterChe}rC(hg]hh]hi]hj]hm]uhUjChq]rChzX release-daterCrC}rC(hTjChUjCubahcjubj)rC}rC(hTX2009-05-18 04:38 P.M CET he}rC(hg]hh]hi]hj]hm]uhUjChq]rCh)rC}rC(hTX2009-05-18 04:38 P.M CETrChUjCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoM hq]rChzX2009-05-18 04:38 P.M CETrCrC}rC(hTjChUjCubaubahcjubeubaubh)rC}rC(hTUhUjCh^hahchhe}rC(j X*hj]hi]hg]hh]hm]uhoM hphhq]rC(h)rC}rC(hTX``delay_task()`` etc. now returns ``celery.task.AsyncResult`` object, which lets you check the result and any failure that might have happened. It kind of works like the ``multiprocessing.AsyncResult`` class returned by ``multiprocessing.Pool.map_async``. hUjCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoNhphhq]rCh)rC}rC(hTX``delay_task()`` etc. now returns ``celery.task.AsyncResult`` object, which lets you check the result and any failure that might have happened. It kind of works like the ``multiprocessing.AsyncResult`` class returned by ``multiprocessing.Pool.map_async``.hUjCh^hahchhe}rC(hg]hh]hi]hj]hm]uhoM hq]rC(j.)rC}rC(hTX``delay_task()``he}rC(hg]hh]hi]hj]hm]uhUjChq]rChzX delay_task()rCrC}rC(hTUhUjCubahcj6ubhzX etc. now returns rCrC}rC(hTX etc. now returns hUjCubj.)rC}rC(hTX``celery.task.AsyncResult``he}rC(hg]hh]hi]hj]hm]uhUjChq]rChzXcelery.task.AsyncResultrCrC}rC(hTUhUjCubahcj6ubhzXn object, which lets you check the result and any failure that might have happened. It kind of works like the rCrC}rC(hTXn object, which lets you check the result and any failure that might have happened. It kind of works like the hUjCubj.)rC}rD(hTX``multiprocessing.AsyncResult``he}rD(hg]hh]hi]hj]hm]uhUjChq]rDhzXmultiprocessing.AsyncResultrDrD}rD(hTUhUjCubahcj6ubhzX class returned by rDrD}rD(hTX class returned by hUjCubj.)r D}r D(hTX"``multiprocessing.Pool.map_async``he}r D(hg]hh]hi]hj]hm]uhUjChq]r DhzXmultiprocessing.Pool.map_asyncr DrD}rD(hTUhUj Dubahcj6ubhzX.rD}rD(hTX.hUjCubeubaubh)rD}rD(hTXAdded dmap() and dmap_async(). This works like the ``multiprocessing.Pool`` versions except they are tasks distributed to the celery server. Example: >>> from celery.task import dmap >>> import operator >>> dmap(operator.add, [[2, 2], [4, 4], [8, 8]]) >>> [4, 8, 16] >>> from celery.task import dmap_async >>> import operator >>> result = dmap_async(operator.add, [[2, 2], [4, 4], [8, 8]]) >>> result.ready() False >>> time.sleep(1) >>> result.ready() True >>> result.result [4, 8, 16] hUjCh^hahchhe}rD(hg]hh]hi]hj]hm]uhoNhphhq]rD(h)rD}rD(hTXAdded dmap() and dmap_async(). This works like the ``multiprocessing.Pool`` versions except they are tasks distributed to the celery server. Example:hUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoM hq]rD(hzX3Added dmap() and dmap_async(). This works like the rDrD}rD(hTX3Added dmap() and dmap_async(). This works like the hUjDubj.)rD}rD(hTX``multiprocessing.Pool``he}rD(hg]hh]hi]hj]hm]uhUjDhq]r DhzXmultiprocessing.Poolr!Dr"D}r#D(hTUhUjDubahcj6ubhzXJ versions except they are tasks distributed to the celery server. Example:r$Dr%D}r&D(hTXJ versions except they are tasks distributed to the celery server. Example:hUjDubeubj)r'D}r(D(hTXt>>> from celery.task import dmap >>> import operator >>> dmap(operator.add, [[2, 2], [4, 4], [8, 8]]) >>> [4, 8, 16]hUjDh^Nhcjhe}r)D(jjhj]hi]hg]hh]hm]uhoNhphhq]r*DhzXt>>> from celery.task import dmap >>> import operator >>> dmap(operator.add, [[2, 2], [4, 4], [8, 8]]) >>> [4, 8, 16]r+Dr,D}r-D(hTUhUj'Dubaubj)r.D}r/D(hTX>>> from celery.task import dmap_async >>> import operator >>> result = dmap_async(operator.add, [[2, 2], [4, 4], [8, 8]]) >>> result.ready() False >>> time.sleep(1) >>> result.ready() True >>> result.result [4, 8, 16]hUjDh^Nhcjhe}r0D(jjhj]hi]hg]hh]hm]uhoNhphhq]r1DhzX>>> from celery.task import dmap_async >>> import operator >>> result = dmap_async(operator.add, [[2, 2], [4, 4], [8, 8]]) >>> result.ready() False >>> time.sleep(1) >>> result.ready() True >>> result.result [4, 8, 16]r2Dr3D}r4D(hTUhUj.Dubaubeubh)r5D}r6D(hTX Refactored the task metadata cache and database backends, and added a new backend for Tokyo Tyrant. You can set the backend in your django settings file. e.g:: CELERY_RESULT_BACKEND = "database"; # Uses the database CELERY_RESULT_BACKEND = "cache"; # Uses the django cache framework CELERY_RESULT_BACKEND = "tyrant"; # Uses Tokyo Tyrant TT_HOST = "localhost"; # Hostname for the Tokyo Tyrant server. TT_PORT = 6657; # Port of the Tokyo Tyrant server. hUjCh^hahchhe}r7D(hg]hh]hi]hj]hm]uhoNhphhq]r8D(h)r9D}r:D(hTXRefactored the task metadata cache and database backends, and added a new backend for Tokyo Tyrant. You can set the backend in your django settings file. e.g::hUj5Dh^hahchhe}r;D(hg]hh]hi]hj]hm]uhoM hq]rD}r?D(hTXRefactored the task metadata cache and database backends, and added a new backend for Tokyo Tyrant. You can set the backend in your django settings file. e.g:hUj9Dubaubj)r@D}rAD(hTX"CELERY_RESULT_BACKEND = "database"; # Uses the database CELERY_RESULT_BACKEND = "cache"; # Uses the django cache framework CELERY_RESULT_BACKEND = "tyrant"; # Uses Tokyo Tyrant TT_HOST = "localhost"; # Hostname for the Tokyo Tyrant server. TT_PORT = 6657; # Port of the Tokyo Tyrant server.hUj5Dhcjhe}rBD(jjhj]hi]hg]hh]hm]uhoM hq]rCDhzX"CELERY_RESULT_BACKEND = "database"; # Uses the database CELERY_RESULT_BACKEND = "cache"; # Uses the django cache framework CELERY_RESULT_BACKEND = "tyrant"; # Uses Tokyo Tyrant TT_HOST = "localhost"; # Hostname for the Tokyo Tyrant server. TT_PORT = 6657; # Port of the Tokyo Tyrant server.rDDrED}rFD(hTUhUj@DubaubeubeubeubhV)rGD}rHD(hTUhUh\h^hahchdhe}rID(hg]hh]hi]hj]rJDjaahm]rKDh>auhoM hphhq]rLD(hs)rMD}rND(hTjfhUjGDh^hahchwhe}rOD(hj]hi]hg]hh]hm]jj`uhoM hphhq]rPDhzX0.1.11rQDrRD}rSD(hTjfhUjMDubaubj)rTD}rUD(hTUhUjGDh^hahcjhe}rVD(hg]hh]hi]hj]hm]uhoM hphhq]rWDj)rXD}rYD(hTUhUjTDh^hahcjhe}rZD(hg]hh]hi]hj]hm]uhoM hphhq]r[D(j)r\D}r]D(hTX release-dater^Dhe}r_D(hg]hh]hi]hj]hm]uhUjXDhq]r`DhzX release-dateraDrbD}rcD(hTj^DhUj\Dubahcjubj)rdD}reD(hTX2009-05-12 02:08 P.M CET he}rfD(hg]hh]hi]hj]hm]uhUjXDhq]rgDh)rhD}riD(hTX2009-05-12 02:08 P.M CETrjDhUjdDh^hahchhe}rkD(hg]hh]hi]hj]hm]uhoM hq]rlDhzX2009-05-12 02:08 P.M CETrmDrnD}roD(hTjjDhUjhDubaubahcjubeubaubh)rpD}rqD(hTUhUjGDh^hahchhe}rrD(j X*hj]hi]hg]hh]hm]uhoM hphhq]rsDh)rtD}ruD(hTXThe logging system was leaking file descriptors, resulting in servers stopping with the EMFILES (too many open files) error. (fixed) hUjpDh^hahchhe}rvD(hg]hh]hi]hj]hm]uhoNhphhq]rwDh)rxD}ryD(hTXThe logging system was leaking file descriptors, resulting in servers stopping with the EMFILES (too many open files) error. (fixed)rzDhUjtDh^hahchhe}r{D(hg]hh]hi]hj]hm]uhoM hq]r|DhzXThe logging system was leaking file descriptors, resulting in servers stopping with the EMFILES (too many open files) error. (fixed)r}Dr~D}rD(hTjzDhUjxDubaubaubaubeubhV)rD}rD(hTUhUh\h^hahchdhe}rD(hg]hh]hi]hj]rDjtahm]rDh=auhoM hphhq]rD(hs)rD}rD(hTjyhUjDh^hahchwhe}rD(hj]hi]hg]hh]hm]jjsuhoM hphhq]rDhzX0.1.10rDrD}rD(hTjyhUjDubaubj)rD}rD(hTUhUjDh^hahcjhe}rD(hg]hh]hi]hj]hm]uhoM hphhq]rDj)rD}rD(hTUhUjDh^hahcjhe}rD(hg]hh]hi]hj]hm]uhoM hphhq]rD(j)rD}rD(hTX release-daterDhe}rD(hg]hh]hi]hj]hm]uhUjDhq]rDhzX release-daterDrD}rD(hTjDhUjDubahcjubj)rD}rD(hTX2009-05-11 12:46 P.M CET he}rD(hg]hh]hi]hj]hm]uhUjDhq]rDh)rD}rD(hTX2009-05-11 12:46 P.M CETrDhUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoM hq]rDhzX2009-05-11 12:46 P.M CETrDrD}rD(hTjDhUjDubaubahcjubeubaubh)rD}rD(hTUhUjDh^hahchhe}rD(j X*hj]hi]hg]hh]hm]uhoM hphhq]rD(h)rD}rD(hTXDTasks now supports both positional arguments and keyword arguments. hUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoNhphhq]rDh)rD}rD(hTXCTasks now supports both positional arguments and keyword arguments.rDhUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoM hq]rDhzXCTasks now supports both positional arguments and keyword arguments.rDrD}rD(hTjDhUjDubaubaubh)rD}rD(hTXRequires carrot 0.3.8. hUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoNhphhq]rDh)rD}rD(hTXRequires carrot 0.3.8.rDhUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoM hq]rDhzXRequires carrot 0.3.8.rDrD}rD(hTjDhUjDubaubaubh)rD}rD(hTX=The daemon now tries to reconnect if the connection is lost. hUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoNhphhq]rDh)rD}rD(hTX<The daemon now tries to reconnect if the connection is lost.rDhUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoM hq]rDhzX<The daemon now tries to reconnect if the connection is lost.rDrD}rD(hTjDhUjDubaubaubeubeubhV)rD}rD(hTUhUh\h^hahchdhe}rD(hg]hh]hi]hj]rDjahm]rDhauhoM hphhq]rD(hs)rD}rD(hTjhUjDh^hahchwhe}rD(hj]hi]hg]hh]hm]jjuhoM hphhq]rDhzX0.1.8rDrD}rD(hTjhUjDubaubj)rD}rD(hTUhUjDh^hahcjhe}rD(hg]hh]hi]hj]hm]uhoM hphhq]rDj)rD}rD(hTUhUjDh^hahcjhe}rD(hg]hh]hi]hj]hm]uhoM hphhq]rD(j)rD}rD(hTX release-daterDhe}rD(hg]hh]hi]hj]hm]uhUjDhq]rDhzX release-daterDrD}rD(hTjDhUjDubahcjubj)rD}rD(hTX2009-05-07 12:27 P.M CET he}rD(hg]hh]hi]hj]hm]uhUjDhq]rDh)rD}rD(hTX2009-05-07 12:27 P.M CETrDhUjDh^hahchhe}rD(hg]hh]hi]hj]hm]uhoM hq]rDhzX2009-05-07 12:27 P.M CETrDrD}rD(hTjDhUjDubaubahcjubeubaubh)rD}rD(hTUhUjDh^hahchhe}rD(j X*hj]hi]hg]hh]hm]uhoM hphhq]rD(h)rD}rD(hTXBetter test coveragerEhUjDh^hahchhe}rE(hg]hh]hi]hj]hm]uhoNhphhq]rEh)rE}rE(hTjEhUjDh^hahchhe}rE(hg]hh]hi]hj]hm]uhoM hq]rEhzXBetter test coveragerErE}r E(hTjEhUjEubaubaubh)r E}r E(hTXMore documentationr EhUjDh^hahchhe}r E(hg]hh]hi]hj]hm]uhoNhphhq]rEh)rE}rE(hTj EhUj Eh^hahchhe}rE(hg]hh]hi]hj]hm]uhoM hq]rEhzXMore documentationrErE}rE(hTj EhUjEubaubaubh)rE}rE(hTXcceleryd doesn't emit ``Queue is empty`` message if ``settings.CELERYD_EMPTY_MSG_EMIT_EVERY`` is 0. hUjDh^hahchhe}rE(hg]hh]hi]hj]hm]uhoNhphhq]rEh)rE}rE(hTXbceleryd doesn't emit ``Queue is empty`` message if ``settings.CELERYD_EMPTY_MSG_EMIT_EVERY`` is 0.hUjEh^hahchhe}rE(hg]hh]hi]hj]hm]uhoM hq]rE(hzXceleryd doesn't emit rErE}r E(hTXceleryd doesn't emit hUjEubj.)r!E}r"E(hTX``Queue is empty``he}r#E(hg]hh]hi]hj]hm]uhUjEhq]r$EhzXQueue is emptyr%Er&E}r'E(hTUhUj!Eubahcj6ubhzX message if r(Er)E}r*E(hTX message if hUjEubj.)r+E}r,E(hTX)``settings.CELERYD_EMPTY_MSG_EMIT_EVERY``he}r-E(hg]hh]hi]hj]hm]uhUjEhq]r.EhzX%settings.CELERYD_EMPTY_MSG_EMIT_EVERYr/Er0E}r1E(hTUhUj+Eubahcj6ubhzX is 0.r2Er3E}r4E(hTX is 0.hUjEubeubaubeubeubhV)r5E}r6E(hTUhUh\h^hahchdhe}r7E(hg]hh]hi]hj]r8Ejahm]r9Eh&auhoM hphhq]r:E(hs)r;E}rEhzX0.1.7r?Er@E}rAE(hTjhUj;Eubaubj)rBE}rCE(hTUhUj5Eh^hahcjhe}rDE(hg]hh]hi]hj]hm]uhoM hphhq]rEEj)rFE}rGE(hTUhUjBEh^hahcjhe}rHE(hg]hh]hi]hj]hm]uhoM hphhq]rIE(j)rJE}rKE(hTX release-daterLEhe}rME(hg]hh]hi]hj]hm]uhUjFEhq]rNEhzX release-daterOErPE}rQE(hTjLEhUjJEubahcjubj)rRE}rSE(hTX2009-04-30 1:50 P.M CET he}rTE(hg]hh]hi]hj]hm]uhUjFEhq]rUEh)rVE}rWE(hTX2009-04-30 1:50 P.M CETrXEhUjREh^hahchhe}rYE(hg]hh]hi]hj]hm]uhoM hq]rZEhzX2009-04-30 1:50 P.M CETr[Er\E}r]E(hTjXEhUjVEubaubahcjubeubaubh)r^E}r_E(hTUhUj5Eh^hahchhe}r`E(j X*hj]hi]hg]hh]hm]uhoM hphhq]raE(h)rbE}rcE(hTXAdded some unittests hUj^Eh^hahchhe}rdE(hg]hh]hi]hj]hm]uhoNhphhq]reEh)rfE}rgE(hTXAdded some unittestsrhEhUjbEh^hahchhe}riE(hg]hh]hi]hj]hm]uhoM hq]rjEhzXAdded some unittestsrkErlE}rmE(hTjhEhUjfEubaubaubh)rnE}roE(hTXzCan now use the database for task metadata (like if the task has been executed or not). Set ``settings.CELERY_TASK_META`` hUj^Eh^hahchhe}rpE(hg]hh]hi]hj]hm]uhoNhphhq]rqEh)rrE}rsE(hTXyCan now use the database for task metadata (like if the task has been executed or not). Set ``settings.CELERY_TASK_META``hUjnEh^hahchhe}rtE(hg]hh]hi]hj]hm]uhoM hq]ruE(hzX\Can now use the database for task metadata (like if the task has been executed or not). Set rvErwE}rxE(hTX\Can now use the database for task metadata (like if the task has been executed or not). Set hUjrEubj.)ryE}rzE(hTX``settings.CELERY_TASK_META``he}r{E(hg]hh]hi]hj]hm]uhUjrEhq]r|EhzXsettings.CELERY_TASK_METAr}Er~E}rE(hTUhUjyEubahcj6ubeubaubh)rE}rE(hTX]Can now run ``python setup.py test`` to run the unittests from within the ``tests`` project. hUj^Eh^hahchhe}rE(hg]hh]hi]hj]hm]uhoNhphhq]rEh)rE}rE(hTX\Can now run ``python setup.py test`` to run the unittests from within the ``tests`` project.hUjEh^hahchhe}rE(hg]hh]hi]hj]hm]uhoM hq]rE(hzX Can now run rErE}rE(hTX Can now run hUjEubj.)rE}rE(hTX``python setup.py test``he}rE(hg]hh]hi]hj]hm]uhUjEhq]rEhzXpython setup.py testrErE}rE(hTUhUjEubahcj6ubhzX& to run the unittests from within the rErE}rE(hTX& to run the unittests from within the hUjEubj.)rE}rE(hTX ``tests``he}rE(hg]hh]hi]hj]hm]uhUjEhq]rEhzXtestsrErE}rE(hTUhUjEubahcj6ubhzX project.rErE}rE(hTX project.hUjEubeubaubh)rE}rE(hTXCan set the AMQP exchange/routing key/queue using ``settings.CELERY_AMQP_EXCHANGE``, ``settings.CELERY_AMQP_ROUTING_KEY``, and ``settings.CELERY_AMQP_CONSUMER_QUEUE``. hUj^Eh^hahchhe}rE(hg]hh]hi]hj]hm]uhoNhphhq]rEh)rE}rE(hTXCan set the AMQP exchange/routing key/queue using ``settings.CELERY_AMQP_EXCHANGE``, ``settings.CELERY_AMQP_ROUTING_KEY``, and ``settings.CELERY_AMQP_CONSUMER_QUEUE``.hUjEh^hahchhe}rE(hg]hh]hi]hj]hm]uhoM hq]rE(hzX2Can set the AMQP exchange/routing key/queue using rErE}rE(hTX2Can set the AMQP exchange/routing key/queue using hUjEubj.)rE}rE(hTX!``settings.CELERY_AMQP_EXCHANGE``he}rE(hg]hh]hi]hj]hm]uhUjEhq]rEhzXsettings.CELERY_AMQP_EXCHANGErErE}rE(hTUhUjEubahcj6ubhzX, rErE}rE(hTX, hUjEubj.)rE}rE(hTX$``settings.CELERY_AMQP_ROUTING_KEY``he}rE(hg]hh]hi]hj]hm]uhUjEhq]rEhzX settings.CELERY_AMQP_ROUTING_KEYrErE}rE(hTUhUjEubahcj6ubhzX, and rErE}rE(hTX, and hUjEubj.)rE}rE(hTX'``settings.CELERY_AMQP_CONSUMER_QUEUE``he}rE(hg]hh]hi]hj]hm]uhUjEhq]rEhzX#settings.CELERY_AMQP_CONSUMER_QUEUErErE}rE(hTUhUjEubahcj6ubhzX.rE}rE(hTX.hUjEubeubaubeubeubhV)rE}rE(hTUhUh\h^hahchdhe}rE(hg]hh]hi]hj]rEjahm]rEh"auhoM hphhq]rE(hs)rE}rE(hTjhUjEh^hahchwhe}rE(hj]hi]hg]hh]hm]jjuhoM hphhq]rEhzX0.1.6rErE}rE(hTjhUjEubaubj)rE}rE(hTUhUjEh^hahcjhe}rE(hg]hh]hi]hj]hm]uhoM hphhq]rEj)rE}rE(hTUhUjEh^hahcjhe}rE(hg]hh]hi]hj]hm]uhoM hphhq]rE(j)rE}rE(hTX release-daterEhe}rE(hg]hh]hi]hj]hm]uhUjEhq]rEhzX release-daterErE}rE(hTjEhUjEubahcjubj)rE}rE(hTX2009-04-28 2:13 P.M CET he}rE(hg]hh]hi]hj]hm]uhUjEhq]rEh)rE}rE(hTX2009-04-28 2:13 P.M CETrEhUjEh^hahchhe}rE(hg]hh]hi]hj]hm]uhoM hq]rEhzX2009-04-28 2:13 P.M CETrErE}rE(hTjEhUjEubaubahcjubeubaubh)rE}rE(hTUhUjEh^hahchhe}rE(j X*hj]hi]hg]hh]hm]uhoM hphhq]rE(h)rE}rE(hTXIntroducing ``TaskSet``. A set of subtasks is executed and you can find out how many, or if all them, are done (excellent for progress bars and such) hUjEh^hahchhe}rE(hg]hh]hi]hj]hm]uhoNhphhq]rEh)rE}rE(hTXIntroducing ``TaskSet``. A set of subtasks is executed and you can find out how many, or if all them, are done (excellent for progress bars and such)hUjEh^hahchhe}rE(hg]hh]hi]hj]hm]uhoM hq]rE(hzX Introducing rErE}rE(hTX Introducing hUjEubj.)rE}rF(hTX ``TaskSet``he}rF(hg]hh]hi]hj]hm]uhUjEhq]rFhzXTaskSetrFrF}rF(hTUhUjEubahcj6ubhzX~. A set of subtasks is executed and you can find out how many, or if all them, are done (excellent for progress bars and such)rFrF}rF(hTX~. A set of subtasks is executed and you can find out how many, or if all them, are done (excellent for progress bars and such)hUjEubeubaubh)r F}r F(hTXNow catches all exceptions when running ``Task.__call__``, so the daemon doesn't die. This does't happen for pure functions yet, only ``Task`` classes. hUjEh^hahchhe}r F(hg]hh]hi]hj]hm]uhoNhphhq]r Fh)r F}rF(hTXNow catches all exceptions when running ``Task.__call__``, so the daemon doesn't die. This does't happen for pure functions yet, only ``Task`` classes.hUj Fh^hahchhe}rF(hg]hh]hi]hj]hm]uhoM hq]rF(hzX(Now catches all exceptions when running rFrF}rF(hTX(Now catches all exceptions when running hUj Fubj.)rF}rF(hTX``Task.__call__``he}rF(hg]hh]hi]hj]hm]uhUj Fhq]rFhzX Task.__call__rFrF}rF(hTUhUjFubahcj6ubhzXM, so the daemon doesn't die. This does't happen for pure functions yet, only rFrF}rF(hTXM, so the daemon doesn't die. This does't happen for pure functions yet, only hUj Fubj.)rF}rF(hTX``Task``he}r F(hg]hh]hi]hj]hm]uhUj Fhq]r!FhzXTaskr"Fr#F}r$F(hTUhUjFubahcj6ubhzX classes.r%Fr&F}r'F(hTX classes.hUj Fubeubaubh)r(F}r)F(hTX/``autodiscover()`` now works with zipped eggs. hUjEh^hahchhe}r*F(hg]hh]hi]hj]hm]uhoNhphhq]r+Fh)r,F}r-F(hTX.``autodiscover()`` now works with zipped eggs.hUj(Fh^hahchhe}r.F(hg]hh]hi]hj]hm]uhoM hq]r/F(j.)r0F}r1F(hTX``autodiscover()``he}r2F(hg]hh]hi]hj]hm]uhUj,Fhq]r3FhzXautodiscover()r4Fr5F}r6F(hTUhUj0Fubahcj6ubhzX now works with zipped eggs.r7Fr8F}r9F(hTX now works with zipped eggs.hUj,Fubeubaubh)r:F}r;F(hTXMceleryd: Now adds curernt working directory to ``sys.path`` for convenience. hUjEh^hahchhe}rF}r?F(hTXLceleryd: Now adds curernt working directory to ``sys.path`` for convenience.hUj:Fh^hahchhe}r@F(hg]hh]hi]hj]hm]uhoM hq]rAF(hzX/celeryd: Now adds curernt working directory to rBFrCF}rDF(hTX/celeryd: Now adds curernt working directory to hUj>Fubj.)rEF}rFF(hTX ``sys.path``he}rGF(hg]hh]hi]hj]hm]uhUj>Fhq]rHFhzXsys.pathrIFrJF}rKF(hTUhUjEFubahcj6ubhzX for convenience.rLFrMF}rNF(hTX for convenience.hUj>Fubeubaubh)rOF}rPF(hTXfThe ``run_every`` attribute of ``PeriodicTask`` classes can now be a ``datetime.timedelta()`` object. hUjEh^hahchhe}rQF(hg]hh]hi]hj]hm]uhoNhphhq]rRFh)rSF}rTF(hTXeThe ``run_every`` attribute of ``PeriodicTask`` classes can now be a ``datetime.timedelta()`` object.hUjOFh^hahchhe}rUF(hg]hh]hi]hj]hm]uhoM hq]rVF(hzXThe rWFrXF}rYF(hTXThe hUjSFubj.)rZF}r[F(hTX ``run_every``he}r\F(hg]hh]hi]hj]hm]uhUjSFhq]r]FhzX run_everyr^Fr_F}r`F(hTUhUjZFubahcj6ubhzX attribute of raFrbF}rcF(hTX attribute of hUjSFubj.)rdF}reF(hTX``PeriodicTask``he}rfF(hg]hh]hi]hj]hm]uhUjSFhq]rgFhzX PeriodicTaskrhFriF}rjF(hTUhUjdFubahcj6ubhzX classes can now be a rkFrlF}rmF(hTX classes can now be a hUjSFubj.)rnF}roF(hTX``datetime.timedelta()``he}rpF(hg]hh]hi]hj]hm]uhUjSFhq]rqFhzXdatetime.timedelta()rrFrsF}rtF(hTUhUjnFubahcj6ubhzX object.ruFrvF}rwF(hTX object.hUjSFubeubaubh)rxF}ryF(hTXceleryd: You can now set the ``DJANGO_PROJECT_DIR`` variable for ``celeryd`` and it will add that to ``sys.path`` for easy launching. hUjEh^hahchhe}rzF(hg]hh]hi]hj]hm]uhoNhphhq]r{Fh)r|F}r}F(hTXceleryd: You can now set the ``DJANGO_PROJECT_DIR`` variable for ``celeryd`` and it will add that to ``sys.path`` for easy launching.hUjxFh^hahchhe}r~F(hg]hh]hi]hj]hm]uhoM" hq]rF(hzXceleryd: You can now set the rFrF}rF(hTXceleryd: You can now set the hUj|Fubj.)rF}rF(hTX``DJANGO_PROJECT_DIR``he}rF(hg]hh]hi]hj]hm]uhUj|Fhq]rFhzXDJANGO_PROJECT_DIRrFrF}rF(hTUhUjFubahcj6ubhzX variable for rFrF}rF(hTX variable for hUj|Fubj.)rF}rF(hTX ``celeryd``he}rF(hg]hh]hi]hj]hm]uhUj|Fhq]rFhzXcelerydrFrF}rF(hTUhUjFubahcj6ubhzX and it will add that to rFrF}rF(hTX and it will add that to hUj|Fubj.)rF}rF(hTX ``sys.path``he}rF(hg]hh]hi]hj]hm]uhUj|Fhq]rFhzXsys.pathrFrF}rF(hTUhUjFubahcj6ubhzX for easy launching.rFrF}rF(hTX for easy launching.hUj|Fubeubaubh)rF}rF(hTX;Can now check if a task has been executed or not via HTTP. hUjEh^hahchhe}rF(hg]hh]hi]hj]hm]uhoNhphhq]rFh)rF}rF(hTX:Can now check if a task has been executed or not via HTTP.rFhUjFh^hahchhe}rF(hg]hh]hi]hj]hm]uhoM% hq]rFhzX:Can now check if a task has been executed or not via HTTP.rFrF}rF(hTjFhUjFubaubaubh)rF}rF(hTXIYou can do this by including the celery ``urls.py`` into your project, >>> url(r'^celery/$', include("celery.urls")) then visiting the following url,:: http://mysite/celery/$task_id/done/ this will return a JSON dictionary like e.g: >>> {"task": {"id": $task_id, "executed": true}} hUjEh^hahchhe}rF(hg]hh]hi]hj]hm]uhoNhphhq]rF(h)rF}rF(hTXFYou can do this by including the celery ``urls.py`` into your project,rFhUjFh^hahchhe}rF(hg]hh]hi]hj]hm]uhoM' hq]rF(hzX(You can do this by including the celery rFrF}rF(hTX(You can do this by including the celery hUjFubj.)rF}rF(hTX ``urls.py``he}rF(hg]hh]hi]hj]hm]uhUjFhq]rFhzXurls.pyrFrF}rF(hTUhUjFubahcj6ubhzX into your project,rFrF}rF(hTX into your project,hUjFubeubj)rF}rF(hTX->>> url(r'^celery/$', include("celery.urls"))hUjFh^Nhcjhe}rF(jjhj]hi]hg]hh]hm]uhoNhphhq]rFhzX->>> url(r'^celery/$', include("celery.urls"))rFrF}rF(hTUhUjFubaubh)rF}rF(hTX"then visiting the following url,::rFhUjFh^hahchhe}rF(hg]hh]hi]hj]hm]uhoM+ hq]rFhzX!then visiting the following url,:rFrF}rF(hTX!then visiting the following url,:hUjFubaubj)rF}rF(hTX#http://mysite/celery/$task_id/done/hUjFhcjhe}rF(jjhj]hi]hg]hh]hm]uhoM- hq]rFhzX#http://mysite/celery/$task_id/done/rFrF}rF(hTUhUjFubaubh)rF}rF(hTX,this will return a JSON dictionary like e.g:rFhUjFh^hahchhe}rF(hg]hh]hi]hj]hm]uhoM/ hq]rFhzX,this will return a JSON dictionary like e.g:rFrF}rF(hTjFhUjFubaubj)rF}rF(hTX0>>> {"task": {"id": $task_id, "executed": true}}rFhUjFh^Nhcjhe}rF(jjhj]hi]hg]hh]hm]uhoNhphhq]rFhzX0>>> {"task": {"id": $task_id, "executed": true}}rFrF}rF(hTUhUjFubaubeubh)rF}rF(hTXB``delay_task`` now returns string id, not ``uuid.UUID`` instance. hUjEh^hahchhe}rF(hg]hh]hi]hj]hm]uhoNhphhq]rFh)rF}rF(hTXA``delay_task`` now returns string id, not ``uuid.UUID`` instance.hUjFh^hahchhe}rF(hg]hh]hi]hj]hm]uhoM3 hq]rF(j.)rF}rF(hTX``delay_task``he}rF(hg]hh]hi]hj]hm]uhUjFhq]rFhzX delay_taskrFrF}rF(hTUhUjFubahcj6ubhzX now returns string id, not rFrF}rF(hTX now returns string id, not hUjFubj.)rF}rF(hTX ``uuid.UUID``he}rF(hg]hh]hi]hj]hm]uhUjFhq]rFhzX uuid.UUIDrFrG}rG(hTUhUjFubahcj6ubhzX instance.rGrG}rG(hTX instance.hUjFubeubaubh)rG}rG(hTX@Now has ``PeriodicTasks``, to have ``cron`` like functionality. hUjEh^hahchhe}rG(hg]hh]hi]hj]hm]uhoNhphhq]rGh)r G}r G(hTX?Now has ``PeriodicTasks``, to have ``cron`` like functionality.hUjGh^hahchhe}r G(hg]hh]hi]hj]hm]uhoM5 hq]r G(hzXNow has r GrG}rG(hTXNow has hUj Gubj.)rG}rG(hTX``PeriodicTasks``he}rG(hg]hh]hi]hj]hm]uhUj Ghq]rGhzX PeriodicTasksrGrG}rG(hTUhUjGubahcj6ubhzX , to have rGrG}rG(hTX , to have hUj Gubj.)rG}rG(hTX``cron``he}rG(hg]hh]hi]hj]hm]uhUj Ghq]rGhzXcronrGrG}r G(hTUhUjGubahcj6ubhzX like functionality.r!Gr"G}r#G(hTX like functionality.hUj Gubeubaubh)r$G}r%G(hTXProject changed name from ``crunchy`` to ``celery``. The details of the name change request is in ``docs/name_change_request.txt``. hUjEh^hahchhe}r&G(hg]hh]hi]hj]hm]uhoNhphhq]r'Gh)r(G}r)G(hTXProject changed name from ``crunchy`` to ``celery``. The details of the name change request is in ``docs/name_change_request.txt``.hUj$Gh^hahchhe}r*G(hg]hh]hi]hj]hm]uhoM7 hq]r+G(hzXProject changed name from r,Gr-G}r.G(hTXProject changed name from hUj(Gubj.)r/G}r0G(hTX ``crunchy``he}r1G(hg]hh]hi]hj]hm]uhUj(Ghq]r2GhzXcrunchyr3Gr4G}r5G(hTUhUj/Gubahcj6ubhzX to r6Gr7G}r8G(hTX to hUj(Gubj.)r9G}r:G(hTX ``celery``he}r;G(hg]hh]hi]hj]hm]uhUj(Ghq]rG}r?G(hTUhUj9Gubahcj6ubhzX/. The details of the name change request is in r@GrAG}rBG(hTX/. The details of the name change request is in hUj(Gubj.)rCG}rDG(hTX ``docs/name_change_request.txt``he}rEG(hg]hh]hi]hj]hm]uhUj(Ghq]rFGhzXdocs/name_change_request.txtrGGrHG}rIG(hTUhUjCGubahcj6ubhzX.rJG}rKG(hTX.hUj(GubeubaubeubeubhV)rLG}rMG(hTUhUh\h^hahchdhe}rNG(hg]hh]hi]hj]rOGjahm]rPGhauhoM; hphhq]rQG(hs)rRG}rSG(hTjhUjLGh^hahchwhe}rTG(hj]hi]hg]hh]hm]jjuhoM; hphhq]rUGhzX0.1.0rVGrWG}rXG(hTjhUjRGubaubj)rYG}rZG(hTUhUjLGh^hahcjhe}r[G(hg]hh]hi]hj]hm]uhoM< hphhq]r\Gj)r]G}r^G(hTUhUjYGh^hahcjhe}r_G(hg]hh]hi]hj]hm]uhoM< hphhq]r`G(j)raG}rbG(hTX release-datercGhe}rdG(hg]hh]hi]hj]hm]uhUj]Ghq]reGhzX release-daterfGrgG}rhG(hTjcGhUjaGubahcjubj)riG}rjG(hTX2009-04-24 11:28 A.M CET he}rkG(hg]hh]hi]hj]hm]uhUj]Ghq]rlGh)rmG}rnG(hTX2009-04-24 11:28 A.M CETroGhUjiGh^hahchhe}rpG(hg]hh]hi]hj]hm]uhoM< hq]rqGhzX2009-04-24 11:28 A.M CETrrGrsG}rtG(hTjoGhUjmGubaubahcjubeubaubh)ruG}rvG(hTUhUjLGh^hahchhe}rwG(j X*hj]hi]hg]hh]hm]uhoM> hphhq]rxGh)ryG}rzG(hTXInitial releaser{GhUjuGh^hahchhe}r|G(hg]hh]hi]hj]hm]uhoNhphhq]r}Gh)r~G}rG(hTj{GhUjyGh^hahchhe}rG(hg]hh]hi]hj]hm]uhoM> hq]rGhzXInitial releaserGrG}rG(hTj{GhUj~Gubaubaubaubeubeubh^hahchdhe}rG(hg]hh]hi]hj]rGj ahm]rGhauhoM hphhq]rG(hs)rG}rG(hTjhUhZh^hahchwhe}rG(hj]hi]hg]hh]hm]jjuhoM hphhq]rGhzX1.0.3rGrG}rG(hTjhUjGubaubj)rG}rG(hTUhUhZh^hahcjhe}rG(hg]hh]hi]hj]hm]uhoMhphhq]rGj)rG}rG(hTUhUjGh^hahcjhe}rG(hg]hh]hi]hj]hm]uhoMhphhq]rG(j)rG}rG(hTX release-daterGhe}rG(hg]hh]hi]hj]hm]uhUjGhq]rGhzX release-daterGrG}rG(hTjGhUjGubahcjubj)rG}rG(hTX2010-05-15 03:00 P.M CEST he}rG(hg]hh]hi]hj]hm]uhUjGhq]rGh)rG}rG(hTX2010-05-15 03:00 P.M CESTrGhUjGh^hahchhe}rG(hg]hh]hi]hj]hm]uhoMhq]rGhzX2010-05-15 03:00 P.M CESTrGrG}rG(hTjGhUjGubaubahcjubeubaubhV)rG}rG(hTUhUhZh^hahchdhe}rG(hg]hh]hi]hj]rGj ahm]rGh(auhoMhphhq]rG(hs)rG}rG(hTj%hUjGh^hahchwhe}rG(hj]hi]hg]hh]hm]jjuhoMhphhq]rGhzXImportant notesrGrG}rG(hTj%hUjGubaubh)rG}rG(hTUhUjGh^hahchhe}rG(j X*hj]hi]hg]hh]hm]uhoMhphhq]rG(h)rG}rG(hTXMessages are now acked *just before* the task function is executed. This is the behavior we've wanted all along, but couldn't have because of limitations in the multiprocessing module. The previous behavior was not good, and the situation worsened with the release of 1.0.1, so this change will definitely improve reliability, performance and operations in general. For more information please see http://bit.ly/9hom6T hUjGh^hahchhe}rG(hg]hh]hi]hj]hm]uhoNhphhq]rG(h)rG}rG(hTXCMessages are now acked *just before* the task function is executed.hUjGh^hahchhe}rG(hg]hh]hi]hj]hm]uhoMhq]rG(hzXMessages are now acked rGrG}rG(hTXMessages are now acked hUjGubj )rG}rG(hTX *just before*he}rG(hg]hh]hi]hj]hm]uhUjGhq]rGhzX just beforerGrG}rG(hTUhUjGubahcj ubhzX the task function is executed.rGrG}rG(hTX the task function is executed.hUjGubeubj:)rG}rG(hTUhe}rG(hg]hh]hi]hj]hm]uhUjGhq]rG(h)rG}rG(hTX)This is the behavior we've wanted all along, but couldn't have because of limitations in the multiprocessing module. The previous behavior was not good, and the situation worsened with the release of 1.0.1, so this change will definitely improve reliability, performance and operations in general.rGhUjGh^hahchhe}rG(hg]hh]hi]hj]hm]uhoMhq]rGhzX)This is the behavior we've wanted all along, but couldn't have because of limitations in the multiprocessing module. The previous behavior was not good, and the situation worsened with the release of 1.0.1, so this change will definitely improve reliability, performance and operations in general.rGrG}rG(hTjGhUjGubaubh)rG}rG(hTX4For more information please see http://bit.ly/9hom6ThUjGh^hahchhe}rG(hg]hh]hi]hj]hm]uhoMhq]rG(hzX For more information please see rGrG}rG(hTX For more information please see hUjGubh)rG}rG(hTXhttp://bit.ly/9hom6TrGhe}rG(UrefurijGhj]hi]hg]hh]hm]uhUjGhq]rGhzXhttp://bit.ly/9hom6TrGrG}rG(hTUhUjGubahchubeubehcjPubeubh)rG}rG(hTXDatabase result backend: result now explicitly sets ``null=True`` as ``django-picklefield`` version 0.1.5 changed the default behavior right under our noses :( See: http://bit.ly/d5OwMr This means those who created their celery tables (via syncdb or celeryinit) with picklefield versions >= 0.1.5 has to alter their tables to allow the result field to be ``NULL`` manually. MySQL:: ALTER TABLE celery_taskmeta MODIFY result TEXT NULL PostgreSQL:: ALTER TABLE celery_taskmeta ALTER COLUMN result DROP NOT NULL hUjGh^hahchhe}rG(hg]hh]hi]hj]hm]uhoNhphhq]rG(h)rG}rG(hTXDatabase result backend: result now explicitly sets ``null=True`` as ``django-picklefield`` version 0.1.5 changed the default behavior right under our noses :(hUjGh^hahchhe}rG(hg]hh]hi]hj]hm]uhoMhq]rG(hzX4Database result backend: result now explicitly sets rGrG}rG(hTX4Database result backend: result now explicitly sets hUjGubj.)rG}rG(hTX ``null=True``he}rG(hg]hh]hi]hj]hm]uhUjGhq]rGhzX null=TruerGrG}rG(hTUhUjGubahcj6ubhzX as rGrH}rH(hTX as hUjGubj.)rH}rH(hTX``django-picklefield``he}rH(hg]hh]hi]hj]hm]uhUjGhq]rHhzXdjango-picklefieldrHrH}rH(hTUhUjHubahcj6ubhzXD version 0.1.5 changed the default behavior right under our noses :(r Hr H}r H(hTXD version 0.1.5 changed the default behavior right under our noses :(hUjGubeubj:)r H}r H(hTUhe}rH(hg]hh]hi]hj]hm]uhUjGhq]rH(h)rH}rH(hTXSee: http://bit.ly/d5OwMrhUj Hh^hahchhe}rH(hg]hh]hi]hj]hm]uhoM!hq]rH(hzXSee: rHrH}rH(hTXSee: hUjHubh)rH}rH(hTXhttp://bit.ly/d5OwMrrHhe}rH(UrefurijHhj]hi]hg]hh]hm]uhUjHhq]rHhzXhttp://bit.ly/d5OwMrrHrH}rH(hTUhUjHubahchubeubh)rH}r H(hTXThis means those who created their celery tables (via syncdb or celeryinit) with picklefield versions >= 0.1.5 has to alter their tables to allow the result field to be ``NULL`` manually.hUj Hh^hahchhe}r!H(hg]hh]hi]hj]hm]uhoM#hq]r"H(hzXThis means those who created their celery tables (via syncdb or celeryinit) with picklefield versions >= 0.1.5 has to alter their tables to allow the result field to be r#Hr$H}r%H(hTXThis means those who created their celery tables (via syncdb or celeryinit) with picklefield versions >= 0.1.5 has to alter their tables to allow the result field to be hUjHubj.)r&H}r'H(hTX``NULL``he}r(H(hg]hh]hi]hj]hm]uhUjHhq]r)HhzXNULLr*Hr+H}r,H(hTUhUj&Hubahcj6ubhzX manually.r-Hr.H}r/H(hTX manually.hUjHubeubh)r0H}r1H(hTXMySQL::hUj Hh^hahchhe}r2H(hg]hh]hi]hj]hm]uhoM'hq]r3HhzXMySQL:r4Hr5H}r6H(hTXMySQL:hUj0Hubaubj)r7H}r8H(hTX3ALTER TABLE celery_taskmeta MODIFY result TEXT NULLhUj Hhcjhe}r9H(jjhj]hi]hg]hh]hm]uhoM)hq]r:HhzX3ALTER TABLE celery_taskmeta MODIFY result TEXT NULLr;HrH}r?H(hTX PostgreSQL::hUj Hh^hahchhe}r@H(hg]hh]hi]hj]hm]uhoM+hq]rAHhzX PostgreSQL:rBHrCH}rDH(hTX PostgreSQL:hUj>Hubaubj)rEH}rFH(hTX=ALTER TABLE celery_taskmeta ALTER COLUMN result DROP NOT NULLhUj Hhcjhe}rGH(jjhj]hi]hg]hh]hm]uhoM-hq]rHHhzX=ALTER TABLE celery_taskmeta ALTER COLUMN result DROP NOT NULLrIHrJH}rKH(hTUhUjEHubaubehcjPubeubh)rLH}rMH(hTXoRemoved ``Task.rate_limit_queue_type``, as it was not really useful and made it harder to refactor some parts. hUjGh^hahchhe}rNH(hg]hh]hi]hj]hm]uhoNhphhq]rOHh)rPH}rQH(hTXnRemoved ``Task.rate_limit_queue_type``, as it was not really useful and made it harder to refactor some parts.hUjLHh^hahchhe}rRH(hg]hh]hi]hj]hm]uhoM/hq]rSH(hzXRemoved rTHrUH}rVH(hTXRemoved hUjPHubj.)rWH}rXH(hTX``Task.rate_limit_queue_type``he}rYH(hg]hh]hi]hj]hm]uhUjPHhq]rZHhzXTask.rate_limit_queue_typer[Hr\H}r]H(hTUhUjWHubahcj6ubhzXH, as it was not really useful and made it harder to refactor some parts.r^Hr_H}r`H(hTXH, as it was not really useful and made it harder to refactor some parts.hUjPHubeubaubh)raH}rbH(hTX Now depends on carrot >= 0.10.4 hUjGh^hahchhe}rcH(hg]hh]hi]hj]hm]uhoNhphhq]rdHh)reH}rfH(hTXNow depends on carrot >= 0.10.4rgHhUjaHh^hahchhe}rhH(hg]hh]hi]hj]hm]uhoM2hq]riHhzXNow depends on carrot >= 0.10.4rjHrkH}rlH(hTjgHhUjeHubaubaubh)rmH}rnH(hTX!Now depends on billiard >= 0.3.0 hUjGh^hahchhe}roH(hg]hh]hi]hj]hm]uhoNhphhq]rpHh)rqH}rrH(hTX Now depends on billiard >= 0.3.0rsHhUjmHh^hahchhe}rtH(hg]hh]hi]hj]hm]uhoM4hq]ruHhzX Now depends on billiard >= 0.3.0rvHrwH}rxH(hTjsHhUjqHubaubaubeubeubhWhV)ryH}rzH(hTUhUhZh^hahchdhe}r{H(hg]hh]hi]hj]r|HjFahm]r}Hh#auhoMhphhq]r~H(hs)rH}rH(hTjKhUjyHh^hahchwhe}rH(hj]hi]hg]hh]hm]jjEuhoMhphhq]rHhzXRemote control commandsrHrH}rH(hTjKhUjHubaubh)rH}rH(hTUhUjyHh^hahchhe}rH(j X*hj]hi]hg]hh]hm]uhoMhphhq]rH(h)rH}rH(hTXRemote control commands can now send replies back to the caller. Existing commands has been improved to send replies, and the client interface in ``celery.task.control`` has new keyword arguments: ``reply``, ``timeout`` and ``limit``. Where reply means it will wait for replies, timeout is the time in seconds to stop waiting for replies, and limit is the maximum number of replies to get. By default, it will wait for as many replies as possible for one second. * rate_limit(task_name, destination=all, reply=False, timeout=1, limit=0) Worker returns ``{"ok": message}`` on success, or ``{"failure": message}`` on failure. >>> from celery.task.control import rate_limit >>> rate_limit("tasks.add", "10/s", reply=True) [{'worker1': {'ok': 'new rate limit set successfully'}}, {'worker2': {'ok': 'new rate limit set successfully'}}] * ping(destination=all, reply=False, timeout=1, limit=0) Worker returns the simple message ``"pong"``. >>> from celery.task.control import ping >>> ping(reply=True) [{'worker1': 'pong'}, {'worker2': 'pong'}, * revoke(destination=all, reply=False, timeout=1, limit=0) Worker simply returns ``True``. >>> from celery.task.control import revoke >>> revoke("419e46eb-cf6a-4271-86a8-442b7124132c", reply=True) [{'worker1': True}, {'worker2'; True}] hUjHh^hahchhe}rH(hg]hh]hi]hj]hm]uhoNhphhq]rH(h)rH}rH(hTX@Remote control commands can now send replies back to the caller.rHhUjHh^hahchhe}rH(hg]hh]hi]hj]hm]uhoMhq]rHhzX@Remote control commands can now send replies back to the caller.rHrH}rH(hTjHhUjHubaubj:)rH}rH(hTUhe}rH(hg]hh]hi]hj]hm]uhUjHhq]rH(h)rH}rH(hTXDExisting commands has been improved to send replies, and the client interface in ``celery.task.control`` has new keyword arguments: ``reply``, ``timeout`` and ``limit``. Where reply means it will wait for replies, timeout is the time in seconds to stop waiting for replies, and limit is the maximum number of replies to get.hUjHh^hahchhe}rH(hg]hh]hi]hj]hm]uhoMhq]rH(hzXQExisting commands has been improved to send replies, and the client interface in rHrH}rH(hTXQExisting commands has been improved to send replies, and the client interface in hUjHubj.)rH}rH(hTX``celery.task.control``he}rH(hg]hh]hi]hj]hm]uhUjHhq]rHhzXcelery.task.controlrHrH}rH(hTUhUjHubahcj6ubhzX has new keyword arguments: rHrH}rH(hTX has new keyword arguments: hUjHubj.)rH}rH(hTX ``reply``he}rH(hg]hh]hi]hj]hm]uhUjHhq]rHhzXreplyrHrH}rH(hTUhUjHubahcj6ubhzX, rHrH}rH(hTX, hUjHubj.)rH}rH(hTX ``timeout``he}rH(hg]hh]hi]hj]hm]uhUjHhq]rHhzXtimeoutrHrH}rH(hTUhUjHubahcj6ubhzX and rHrH}rH(hTX and hUjHubj.)rH}rH(hTX ``limit``he}rH(hg]hh]hi]hj]hm]uhUjHhq]rHhzXlimitrHrH}rH(hTUhUjHubahcj6ubhzX. Where reply means it will wait for replies, timeout is the time in seconds to stop waiting for replies, and limit is the maximum number of replies to get.rHrH}rH(hTX. Where reply means it will wait for replies, timeout is the time in seconds to stop waiting for replies, and limit is the maximum number of replies to get.hUjHubeubh)rH}rH(hTXHBy default, it will wait for as many replies as possible for one second.rHhUjHh^hahchhe}rH(hg]hh]hi]hj]hm]uhoMhq]rHhzXHBy default, it will wait for as many replies as possible for one second.rHrH}rH(hTjHhUjHubaubh)rH}rH(hTUhe}rH(j X*hj]hi]hg]hh]hm]uhUjHhq]rH(h)rH}rH(hTXrate_limit(task_name, destination=all, reply=False, timeout=1, limit=0) Worker returns ``{"ok": message}`` on success, or ``{"failure": message}`` on failure. >>> from celery.task.control import rate_limit >>> rate_limit("tasks.add", "10/s", reply=True) [{'worker1': {'ok': 'new rate limit set successfully'}}, {'worker2': {'ok': 'new rate limit set successfully'}}] he}rH(hg]hh]hi]hj]hm]uhUjHhq]rH(h)rH}rH(hTXGrate_limit(task_name, destination=all, reply=False, timeout=1, limit=0)rHhUjHh^hahchhe}rH(hg]hh]hi]hj]hm]uhoMhq]rHhzXGrate_limit(task_name, destination=all, reply=False, timeout=1, limit=0)rHrH}rH(hTjHhUjHubaubj:)rH}rH(hTUhe}rH(hg]hh]hi]hj]hm]uhUjHhq]rH(h)rH}rH(hTXVWorker returns ``{"ok": message}`` on success, or ``{"failure": message}`` on failure.hUjHh^hahchhe}rH(hg]hh]hi]hj]hm]uhoMhq]rH(hzXWorker returns rHrH}rH(hTXWorker returns hUjHubj.)rH}rH(hTX``{"ok": message}``he}rH(hg]hh]hi]hj]hm]uhUjHhq]rHhzX{"ok": message}rHrH}rH(hTUhUjHubahcj6ubhzX on success, or rHrH}rH(hTX on success, or hUjHubj.)rH}rH(hTX``{"failure": message}``he}rH(hg]hh]hi]hj]hm]uhUjHhq]rHhzX{"failure": message}rHrH}rH(hTUhUjHubahcj6ubhzX on failure.rHrH}rH(hTX on failure.hUjHubeubj)rI}rI(hTX>>> from celery.task.control import rate_limit >>> rate_limit("tasks.add", "10/s", reply=True) [{'worker1': {'ok': 'new rate limit set successfully'}}, {'worker2': {'ok': 'new rate limit set successfully'}}]he}rI(jjhj]hi]hg]hh]hm]uhUjHhq]rIhzX>>> from celery.task.control import rate_limit >>> rate_limit("tasks.add", "10/s", reply=True) [{'worker1': {'ok': 'new rate limit set successfully'}}, {'worker2': {'ok': 'new rate limit set successfully'}}]rIrI}rI(hTUhUjIubahcjubehcjPubehchubh)rI}rI(hTXping(destination=all, reply=False, timeout=1, limit=0) Worker returns the simple message ``"pong"``. >>> from celery.task.control import ping >>> ping(reply=True) [{'worker1': 'pong'}, {'worker2': 'pong'}, he}r I(hg]hh]hi]hj]hm]uhUjHhq]r I(h)r I}r I(hTX6ping(destination=all, reply=False, timeout=1, limit=0)r IhUjIh^hahchhe}rI(hg]hh]hi]hj]hm]uhoMhq]rIhzX6ping(destination=all, reply=False, timeout=1, limit=0)rIrI}rI(hTj IhUj Iubaubj:)rI}rI(hTUhe}rI(hg]hh]hi]hj]hm]uhUjIhq]rI(h)rI}rI(hTX-Worker returns the simple message ``"pong"``.hUjIh^hahchhe}rI(hg]hh]hi]hj]hm]uhoMhq]rI(hzX"Worker returns the simple message rIrI}rI(hTX"Worker returns the simple message hUjIubj.)rI}rI(hTX ``"pong"``he}r I(hg]hh]hi]hj]hm]uhUjIhq]r!IhzX"pong"r"Ir#I}r$I(hTUhUjIubahcj6ubhzX.r%I}r&I(hTX.hUjIubeubj)r'I}r(I(hTXi>>> from celery.task.control import ping >>> ping(reply=True) [{'worker1': 'pong'}, {'worker2': 'pong'},he}r)I(jjhj]hi]hg]hh]hm]uhUjIhq]r*IhzXi>>> from celery.task.control import ping >>> ping(reply=True) [{'worker1': 'pong'}, {'worker2': 'pong'},r+Ir,I}r-I(hTUhUj'IubahcjubehcjPubehchubh)r.I}r/I(hTXrevoke(destination=all, reply=False, timeout=1, limit=0) Worker simply returns ``True``. >>> from celery.task.control import revoke >>> revoke("419e46eb-cf6a-4271-86a8-442b7124132c", reply=True) [{'worker1': True}, {'worker2'; True}] he}r0I(hg]hh]hi]hj]hm]uhUjHhq]r1I(h)r2I}r3I(hTX8revoke(destination=all, reply=False, timeout=1, limit=0)r4IhUj.Ih^hahchhe}r5I(hg]hh]hi]hj]hm]uhoMhq]r6IhzX8revoke(destination=all, reply=False, timeout=1, limit=0)r7Ir8I}r9I(hTj4IhUj2Iubaubj:)r:I}r;I(hTUhe}rI}r?I(hTXWorker simply returns ``True``.r@IhUj:Ih^hahchhe}rAI(hg]hh]hi]hj]hm]uhoMhq]rBI(hzXWorker simply returns rCIrDI}rEI(hTXWorker simply returns hUj>Iubj.)rFI}rGI(hTX``True``he}rHI(hg]hh]hi]hj]hm]uhUj>Ihq]rIIhzXTruerJIrKI}rLI(hTUhUjFIubahcj6ubhzX.rMI}rNI(hTX.hUj>Iubeubj)rOI}rPI(hTX>>> from celery.task.control import revoke >>> revoke("419e46eb-cf6a-4271-86a8-442b7124132c", reply=True) [{'worker1': True}, {'worker2'; True}]he}rQI(jjhj]hi]hg]hh]hm]uhUj:Ihq]rRIhzX>>> from celery.task.control import revoke >>> revoke("419e46eb-cf6a-4271-86a8-442b7124132c", reply=True) [{'worker1': True}, {'worker2'; True}]rSIrTI}rUI(hTUhUjOIubahcjubehcjPubehchubehchubehcjPubeubh)rVI}rWI(hTXYou can now add your own remote control commands! Remote control commands are functions registered in the command registry. Registering a command is done using :meth:`celery.worker.control.Panel.register`: .. code-block:: python from celery.task.control import Panel @Panel.register def reset_broker_connection(panel, **kwargs): panel.listener.reset_connection() return {"ok": "connection re-established"} With this module imported in the worker, you can launch the command using ``celery.task.control.broadcast``:: >>> from celery.task.control import broadcast >>> broadcast("reset_broker_connection", reply=True) [{'worker1': {'ok': 'connection re-established'}, {'worker2': {'ok': 'connection re-established'}}] **TIP** You can choose the worker(s) to receive the command by using the ``destination`` argument:: >>> broadcast("reset_broker_connection", destination=["worker1"]) [{'worker1': {'ok': 'connection re-established'}] hUjHh^hahchhe}rXI(hg]hh]hi]hj]hm]uhoNhphhq]rYI(h)rZI}r[I(hTX1You can now add your own remote control commands!r\IhUjVIh^hahchhe}r]I(hg]hh]hi]hj]hm]uhoMhq]r^IhzX1You can now add your own remote control commands!r_Ir`I}raI(hTj\IhUjZIubaubj:)rbI}rcI(hTUhe}rdI(hg]hh]hi]hj]hm]uhUjVIhq]reI(h)rfI}rgI(hTXRemote control commands are functions registered in the command registry. Registering a command is done using :meth:`celery.worker.control.Panel.register`:hUjbIh^hahchhe}rhI(hg]hh]hi]hj]hm]uhoMhq]riI(hzXnRemote control commands are functions registered in the command registry. Registering a command is done using rjIrkI}rlI(hTXnRemote control commands are functions registered in the command registry. Registering a command is done using hUjfIubje)rmI}rnI(hTX,:meth:`celery.worker.control.Panel.register`roIhUjfIh^hahcjihe}rpI(UreftypeXmethjkjlX$celery.worker.control.Panel.registerU refdomainXpyrqIhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMhq]rrIj.)rsI}rtI(hTjoIhe}ruI(hg]hh]rvI(jwjqIXpy-methrwIehi]hj]hm]uhUjmIhq]rxIhzX&celery.worker.control.Panel.register()ryIrzI}r{I(hTUhUjsIubahcj6ubaubhzX:r|I}r}I(hTX:hUjfIubeubj)r~I}rI(hTXfrom celery.task.control import Panel @Panel.register def reset_broker_connection(panel, **kwargs): panel.listener.reset_connection() return {"ok": "connection re-established"}hUjbIh^hahcjhe}rI(jjXpythonjjhj]hi]hg]hh]hm]uhoMhq]rIhzXfrom celery.task.control import Panel @Panel.register def reset_broker_connection(panel, **kwargs): panel.listener.reset_connection() return {"ok": "connection re-established"}rIrI}rI(hTUhUj~Iubaubh)rI}rI(hTXmWith this module imported in the worker, you can launch the command using ``celery.task.control.broadcast``::hUjbIh^hahchhe}rI(hg]hh]hi]hj]hm]uhoMhq]rI(hzXJWith this module imported in the worker, you can launch the command using rIrI}rI(hTXJWith this module imported in the worker, you can launch the command using hUjIubj.)rI}rI(hTX!``celery.task.control.broadcast``he}rI(hg]hh]hi]hj]hm]uhUjIhq]rIhzXcelery.task.control.broadcastrIrI}rI(hTUhUjIubahcj6ubhzX:rI}rI(hTX:hUjIubeubj)rI}rI(hTX>>> from celery.task.control import broadcast >>> broadcast("reset_broker_connection", reply=True) [{'worker1': {'ok': 'connection re-established'}, {'worker2': {'ok': 'connection re-established'}}]hUjbIhcjhe}rI(jjhj]hi]hg]hh]hm]uhoMhq]rIhzX>>> from celery.task.control import broadcast >>> broadcast("reset_broker_connection", reply=True) [{'worker1': {'ok': 'connection re-established'}, {'worker2': {'ok': 'connection re-established'}}]rIrI}rI(hTUhUjIubaubh)rI}rI(hTXc**TIP** You can choose the worker(s) to receive the command by using the ``destination`` argument::hUjbIh^hahchhe}rI(hg]hh]hi]hj]hm]uhoMhq]rI(j)rI}rI(hTX**TIP**he}rI(hg]hh]hi]hj]hm]uhUjIhq]rIhzXTIPrIrI}rI(hTUhUjIubahcjubhzXB You can choose the worker(s) to receive the command by using the rIrI}rI(hTXB You can choose the worker(s) to receive the command by using the hUjIubj.)rI}rI(hTX``destination``he}rI(hg]hh]hi]hj]hm]uhUjIhq]rIhzX destinationrIrI}rI(hTUhUjIubahcj6ubhzX argument:rIrI}rI(hTX argument:hUjIubeubj)rI}rI(hTXs>>> broadcast("reset_broker_connection", destination=["worker1"]) [{'worker1': {'ok': 'connection re-established'}]hUjbIhcjhe}rI(jjhj]hi]hg]hh]hm]uhoMhq]rIhzXs>>> broadcast("reset_broker_connection", destination=["worker1"]) [{'worker1': {'ok': 'connection re-established'}]rIrI}rI(hTUhUjIubaubehcjPubeubh)rI}rI(hTXNew remote control command: ``dump_reserved`` Dumps tasks reserved by the worker, waiting to be executed:: >>> from celery.task.control import broadcast >>> broadcast("dump_reserved", reply=True) [{'myworker1': []}] hUjHh^hahchhe}rI(hg]hh]hi]hj]hm]uhoNhphhq]rI(h)rI}rI(hTX-New remote control command: ``dump_reserved``hUjIh^hahchhe}rI(hg]hh]hi]hj]hm]uhoMhq]rI(hzXNew remote control command: rIrI}rI(hTXNew remote control command: hUjIubj.)rI}rI(hTX``dump_reserved``he}rI(hg]hh]hi]hj]hm]uhUjIhq]rIhzX dump_reservedrIrI}rI(hTUhUjIubahcj6ubeubj:)rI}rI(hTUhe}rI(hg]hh]hi]hj]hm]uhUjIhq]rI(h)rI}rI(hTX<Dumps tasks reserved by the worker, waiting to be executed::hUjIh^hahchhe}rI(hg]hh]hi]hj]hm]uhoMhq]rIhzX;Dumps tasks reserved by the worker, waiting to be executed:rIrI}rI(hTX;Dumps tasks reserved by the worker, waiting to be executed:hUjIubaubj)rI}rI(hTX~>>> from celery.task.control import broadcast >>> broadcast("dump_reserved", reply=True) [{'myworker1': []}]hUjIhcjhe}rI(jjhj]hi]hg]hh]hm]uhoMhq]rIhzX~>>> from celery.task.control import broadcast >>> broadcast("dump_reserved", reply=True) [{'myworker1': []}]rIrI}rI(hTUhUjIubaubehcjPubeubh)rI}rI(hTXnNew remote control command: ``dump_schedule`` Dumps the workers currently registered ETA schedule. These are tasks with an ``eta`` (or ``countdown``) argument waiting to be executed by the worker. >>> from celery.task.control import broadcast >>> broadcast("dump_schedule", reply=True) [{'w1': []}, {'w3': []}, {'w2': ['0. 2010-05-12 11:06:00 pri0 ,)", kwargs:"{'page': 2}"}>']}, {'w4': ['0. 2010-05-12 11:00:00 pri0 ,)", kwargs:"{\'page\': 1}"}>', '1. 2010-05-12 11:12:00 pri0 ,)", kwargs:"{\'page\': 3}"}>']}] hUjHh^hahchhe}rI(hg]hh]hi]hj]hm]uhoNhphhq]rI(h)rI}rI(hTX-New remote control command: ``dump_schedule``hUjIh^hahchhe}rI(hg]hh]hi]hj]hm]uhoMhq]rI(hzXNew remote control command: rIrI}rI(hTXNew remote control command: hUjIubj.)rI}rI(hTX``dump_schedule``he}rI(hg]hh]hi]hj]hm]uhUjIhq]rIhzX dump_schedulerIrI}rI(hTUhUjIubahcj6ubeubj:)rI}rI(hTUhe}rI(hg]hh]hi]hj]hm]uhUjIhq]rI(h)rI}rI(hTXDumps the workers currently registered ETA schedule. These are tasks with an ``eta`` (or ``countdown``) argument waiting to be executed by the worker.hUjIh^hahchhe}rI(hg]hh]hi]hj]hm]uhoMhq]rI(hzXMDumps the workers currently registered ETA schedule. These are tasks with an rIrI}rI(hTXMDumps the workers currently registered ETA schedule. These are tasks with an hUjIubj.)rI}rI(hTX``eta``he}rI(hg]hh]hi]hj]hm]uhUjIhq]rIhzXetarJrJ}rJ(hTUhUjIubahcj6ubhzX (or rJrJ}rJ(hTX (or hUjIubj.)rJ}rJ(hTX ``countdown``he}rJ(hg]hh]hi]hj]hm]uhUjIhq]r JhzX countdownr Jr J}r J(hTUhUjJubahcj6ubhzX0) argument waiting to be executed by the worker.r JrJ}rJ(hTX0) argument waiting to be executed by the worker.hUjIubeubj)rJ}rJ(hTX>>> from celery.task.control import broadcast >>> broadcast("dump_schedule", reply=True) [{'w1': []}, {'w3': []}, {'w2': ['0. 2010-05-12 11:06:00 pri0 ,)", kwargs:"{'page': 2}"}>']}, {'w4': ['0. 2010-05-12 11:00:00 pri0 ,)", kwargs:"{\'page\': 1}"}>', '1. 2010-05-12 11:12:00 pri0 ,)", kwargs:"{\'page\': 3}"}>']}]he}rJ(jjhj]hi]hg]hh]hm]uhUjIhq]rJhzX>>> from celery.task.control import broadcast >>> broadcast("dump_schedule", reply=True) [{'w1': []}, {'w3': []}, {'w2': ['0. 2010-05-12 11:06:00 pri0 ,)", kwargs:"{'page': 2}"}>']}, {'w4': ['0. 2010-05-12 11:00:00 pri0 ,)", kwargs:"{\'page\': 1}"}>', '1. 2010-05-12 11:12:00 pri0 ,)", kwargs:"{\'page\': 3}"}>']}]rJrJ}rJ(hTUhUjJubahcjubehcjPubeubeubeubhV)rJ}rJ(hTUhYKhUhZh^hahchdhe}rJ(hg]rJjahh]hi]hj]rJjYahm]uhoMhphhq]rJ(hs)rJ}rJ(hTj^hUjJh^hahchwhe}rJ(hj]hi]hg]hh]hm]jjXuhoMhphhq]r JhzXFixesr!Jr"J}r#J(hTj^hUjJubaubh)r$J}r%J(hTUhUjJh^hahchhe}r&J(j X*hj]hi]hg]hh]hm]uhoMhphhq]r'J(h)r(J}r)J(hTXMediator thread no longer blocks for more than 1 second. With rate limits enabled and when there was a lot of remaining time, the mediator thread could block shutdown (and potentially block other jobs from coming in). hUj$Jh^hahchhe}r*J(hg]hh]hi]hj]hm]uhoNhphhq]r+J(h)r,J}r-J(hTX8Mediator thread no longer blocks for more than 1 second.r.JhUj(Jh^hahchhe}r/J(hg]hh]hi]hj]hm]uhoMhq]r0JhzX8Mediator thread no longer blocks for more than 1 second.r1Jr2J}r3J(hTj.JhUj,Jubaubj:)r4J}r5J(hTUhe}r6J(hg]hh]hi]hj]hm]uhUj(Jhq]r7Jh)r8J}r9J(hTXWith rate limits enabled and when there was a lot of remaining time, the mediator thread could block shutdown (and potentially block other jobs from coming in).r:JhUj4Jh^hahchhe}r;J(hg]hh]hi]hj]hm]uhoMhq]rJ}r?J(hTj:JhUj8JubaubahcjPubeubh)r@J}rAJ(hTX[Remote rate limits was not properly applied (http://github.com/ask/celery/issues/issue/98) hUj$Jh^hahchhe}rBJ(hg]hh]hi]hj]hm]uhoNhphhq]rCJh)rDJ}rEJ(hTXZRemote rate limits was not properly applied (http://github.com/ask/celery/issues/issue/98)hUj@Jh^hahchhe}rFJ(hg]hh]hi]hj]hm]uhoMhq]rGJ(hzX-Remote rate limits was not properly applied (rHJrIJ}rJJ(hTX-Remote rate limits was not properly applied (hUjDJubh)rKJ}rLJ(hTX,http://github.com/ask/celery/issues/issue/98rMJhe}rNJ(UrefurijMJhj]hi]hg]hh]hm]uhUjDJhq]rOJhzX,http://github.com/ask/celery/issues/issue/98rPJrQJ}rRJ(hTUhUjKJubahchubhzX)rSJ}rTJ(hTX)hUjDJubeubaubh)rUJ}rVJ(hTXVNow handles exceptions with unicode messages correctly in ``TaskRequest.on_failure``. hUj$Jh^hahchhe}rWJ(hg]hh]hi]hj]hm]uhoNhphhq]rXJh)rYJ}rZJ(hTXUNow handles exceptions with unicode messages correctly in ``TaskRequest.on_failure``.hUjUJh^hahchhe}r[J(hg]hh]hi]hj]hm]uhoMhq]r\J(hzX:Now handles exceptions with unicode messages correctly in r]Jr^J}r_J(hTX:Now handles exceptions with unicode messages correctly in hUjYJubj.)r`J}raJ(hTX``TaskRequest.on_failure``he}rbJ(hg]hh]hi]hj]hm]uhUjYJhq]rcJhzXTaskRequest.on_failurerdJreJ}rfJ(hTUhUj`Jubahcj6ubhzX.rgJ}rhJ(hTX.hUjYJubeubaubh)riJ}rjJ(hTXZDatabase backend: ``TaskMeta.result``: default value should be ``None`` not empty string. hUj$Jh^hahchhe}rkJ(hg]hh]hi]hj]hm]uhoNhphhq]rlJh)rmJ}rnJ(hTXYDatabase backend: ``TaskMeta.result``: default value should be ``None`` not empty string.hUjiJh^hahchhe}roJ(hg]hh]hi]hj]hm]uhoMhq]rpJ(hzXDatabase backend: rqJrrJ}rsJ(hTXDatabase backend: hUjmJubj.)rtJ}ruJ(hTX``TaskMeta.result``he}rvJ(hg]hh]hi]hj]hm]uhUjmJhq]rwJhzXTaskMeta.resultrxJryJ}rzJ(hTUhUjtJubahcj6ubhzX: default value should be r{Jr|J}r}J(hTX: default value should be hUjmJubj.)r~J}rJ(hTX``None``he}rJ(hg]hh]hi]hj]hm]uhUjmJhq]rJhzXNonerJrJ}rJ(hTUhUj~Jubahcj6ubhzX not empty string.rJrJ}rJ(hTX not empty string.hUjmJubeubaubeubeubeubh^hahchdhe}rJ(hg]rJjDahh]hi]hj]rJj3ahm]uhoM7hphhq]rJ(hs)rJ}rJ(hTj8hUhWh^hahchwhe}rJ(hj]hi]hg]hh]hm]jj2uhoM7hphhq]rJhzXNewsrJrJ}rJ(hTj8hUjJubaubh)rJ}rJ(hTUhUhWh^hahchhe}rJ(j X*hj]hi]hg]hh]hm]uhoM9hphhq]rJ(h)rJ}rJ(hTXNAMQP backend: Added timeout support for ``result.get()`` / ``result.wait()``. hUjJh^hahchhe}rJ(hg]hh]hi]hj]hm]uhoNhphhq]rJh)rJ}rJ(hTXMAMQP backend: Added timeout support for ``result.get()`` / ``result.wait()``.hUjJh^hahchhe}rJ(hg]hh]hi]hj]hm]uhoM9hq]rJ(hzX(AMQP backend: Added timeout support for rJrJ}rJ(hTX(AMQP backend: Added timeout support for hUjJubj.)rJ}rJ(hTX``result.get()``he}rJ(hg]hh]hi]hj]hm]uhUjJhq]rJhzX result.get()rJrJ}rJ(hTUhUjJubahcj6ubhzX / rJrJ}rJ(hTX / hUjJubj.)rJ}rJ(hTX``result.wait()``he}rJ(hg]hh]hi]hj]hm]uhUjJhq]rJhzX result.wait()rJrJ}rJ(hTUhUjJubahcj6ubhzX.rJ}rJ(hTX.hUjJubeubaubh)rJ}rJ(hTXNew task option: ``Task.acks_late`` (default: ``CELERY_ACKS_LATE``) Late ack means the task messages will be acknowledged **after** the task has been executed, not *just before*, which is the default behavior. Note that this means the tasks may be executed twice if the worker crashes in the middle of their execution. Not acceptable for most applications, but desirable for others. hUjJh^hahchhe}rJ(hg]hh]hi]hj]hm]uhoNhphhq]rJ(h)rJ}rJ(hTXCNew task option: ``Task.acks_late`` (default: ``CELERY_ACKS_LATE``)hUjJh^hahchhe}rJ(hg]hh]hi]hj]hm]uhoM<hq]rJ(hzXNew task option: rJrJ}rJ(hTXNew task option: hUjJubj.)rJ}rJ(hTX``Task.acks_late``he}rJ(hg]hh]hi]hj]hm]uhUjJhq]rJhzXTask.acks_laterJrJ}rJ(hTUhUjJubahcj6ubhzX (default: rJrJ}rJ(hTX (default: hUjJubj.)rJ}rJ(hTX``CELERY_ACKS_LATE``he}rJ(hg]hh]hi]hj]hm]uhUjJhq]rJhzXCELERY_ACKS_LATErJrJ}rJ(hTUhUjJubahcj6ubhzX)rJ}rJ(hTX)hUjJubeubj:)rJ}rJ(hTUhe}rJ(hg]hh]hi]hj]hm]uhUjJhq]rJ(h)rJ}rJ(hTXLate ack means the task messages will be acknowledged **after** the task has been executed, not *just before*, which is the default behavior.hUjJh^hahchhe}rJ(hg]hh]hi]hj]hm]uhoM>hq]rJ(hzX6Late ack means the task messages will be acknowledged rJrJ}rJ(hTX6Late ack means the task messages will be acknowledged hUjJubj)rJ}rJ(hTX **after**he}rJ(hg]hh]hi]hj]hm]uhUjJhq]rJhzXafterrJrJ}rJ(hTUhUjJubahcjubhzX! the task has been executed, not rJrJ}rJ(hTX! the task has been executed, not hUjJubj )rJ}rJ(hTX *just before*he}rJ(hg]hh]hi]hj]hm]uhUjJhq]rJhzX just beforerJrJ}rJ(hTUhUjJubahcj ubhzX , which is the default behavior.rJrJ}rJ(hTX , which is the default behavior.hUjJubeubh)rJ}rJ(hTXNote that this means the tasks may be executed twice if the worker crashes in the middle of their execution. Not acceptable for most applications, but desirable for others.rJhUjJh^hahchhe}rJ(hg]hh]hi]hj]hm]uhoMAhq]rJhzXNote that this means the tasks may be executed twice if the worker crashes in the middle of their execution. Not acceptable for most applications, but desirable for others.rJrJ}rJ(hTjJhUjJubaubehcjPubeubh)rJ}rJ(hTXAdded crontab-like scheduling to periodic tasks. Like a cron job, you can specify units of time of when you would like the task to execute. While not a full implementation of cron's features, it should provide a fair degree of common scheduling needs. You can specify a minute (0-59), an hour (0-23), and/or a day of the week (0-6 where 0 is Sunday, or by names: sun, mon, tue, wed, thu, fri, sat). Examples: .. code-block:: python from celery.task.schedules import crontab from celery.decorators import periodic_task @periodic_task(run_every=crontab(hour=7, minute=30)) def every_morning(): print("Runs every morning at 7:30a.m") @periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon")) def every_monday_morning(): print("Run every monday morning at 7:30a.m") @periodic_task(run_every=crontab(minutes=30)) def every_hour(): print("Runs every hour on the clock. e.g. 1:30, 2:30, 3:30 etc.") Note that this a late addition. While we have unittests, due to the nature of this feature we haven't been able to completely test this in practice, so consider this experimental. hUjJh^hahchhe}rJ(hg]hh]hi]hj]hm]uhoNhphhq]rJ(h)rJ}rJ(hTX0Added crontab-like scheduling to periodic tasks.rKhUjJh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMEhq]rKhzX0Added crontab-like scheduling to periodic tasks.rKrK}rK(hTjKhUjJubaubj:)rK}rK(hTUhe}rK(hg]hh]hi]hj]hm]uhUjJhq]r K(h)r K}r K(hTXLike a cron job, you can specify units of time of when you would like the task to execute. While not a full implementation of cron's features, it should provide a fair degree of common scheduling needs.r KhUjKh^hahchhe}r K(hg]hh]hi]hj]hm]uhoMGhq]rKhzXLike a cron job, you can specify units of time of when you would like the task to execute. While not a full implementation of cron's features, it should provide a fair degree of common scheduling needs.rKrK}rK(hTj KhUj Kubaubh)rK}rK(hTXYou can specify a minute (0-59), an hour (0-23), and/or a day of the week (0-6 where 0 is Sunday, or by names: sun, mon, tue, wed, thu, fri, sat).rKhUjKh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMLhq]rKhzXYou can specify a minute (0-59), an hour (0-23), and/or a day of the week (0-6 where 0 is Sunday, or by names: sun, mon, tue, wed, thu, fri, sat).rKrK}rK(hTjKhUjKubaubh)rK}rK(hTX Examples:rKhUjKh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMPhq]rKhzX Examples:rKr K}r!K(hTjKhUjKubaubj)r"K}r#K(hTXfrom celery.task.schedules import crontab from celery.decorators import periodic_task @periodic_task(run_every=crontab(hour=7, minute=30)) def every_morning(): print("Runs every morning at 7:30a.m") @periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon")) def every_monday_morning(): print("Run every monday morning at 7:30a.m") @periodic_task(run_every=crontab(minutes=30)) def every_hour(): print("Runs every hour on the clock. e.g. 1:30, 2:30, 3:30 etc.")hUjKh^hahcjhe}r$K(jjXpythonjjhj]hi]hg]hh]hm]uhoMRhq]r%KhzXfrom celery.task.schedules import crontab from celery.decorators import periodic_task @periodic_task(run_every=crontab(hour=7, minute=30)) def every_morning(): print("Runs every morning at 7:30a.m") @periodic_task(run_every=crontab(hour=7, minute=30, day_of_week="mon")) def every_monday_morning(): print("Run every monday morning at 7:30a.m") @periodic_task(run_every=crontab(minutes=30)) def every_hour(): print("Runs every hour on the clock. e.g. 1:30, 2:30, 3:30 etc.")r&Kr'K}r(K(hTUhUj"Kubaubh)r)K}r*K(hTXNote that this a late addition. While we have unittests, due to the nature of this feature we haven't been able to completely test this in practice, so consider this experimental.r+KhUjKh^hahchhe}r,K(hg]hh]hi]hj]hm]uhoMchq]r-KhzXNote that this a late addition. While we have unittests, due to the nature of this feature we haven't been able to completely test this in practice, so consider this experimental.r.Kr/K}r0K(hTj+KhUj)KubaubehcjPubeubh)r1K}r2K(hTXI``TaskPool.apply_async``: Now supports the ``accept_callback`` argument. hUjJh^hahchhe}r3K(hg]hh]hi]hj]hm]uhoNhphhq]r4Kh)r5K}r6K(hTXH``TaskPool.apply_async``: Now supports the ``accept_callback`` argument.hUj1Kh^hahchhe}r7K(hg]hh]hi]hj]hm]uhoMghq]r8K(j.)r9K}r:K(hTX``TaskPool.apply_async``he}r;K(hg]hh]hi]hj]hm]uhUj5Khq]rK}r?K(hTUhUj9Kubahcj6ubhzX: Now supports the r@KrAK}rBK(hTX: Now supports the hUj5Kubj.)rCK}rDK(hTX``accept_callback``he}rEK(hg]hh]hi]hj]hm]uhUj5Khq]rFKhzXaccept_callbackrGKrHK}rIK(hTUhUjCKubahcj6ubhzX argument.rJKrKK}rLK(hTX argument.hUj5Kubeubaubh)rMK}rNK(hTX``apply_async``: Now raises :exc:`ValueError` if task args is not a list, or kwargs is not a tuple (http://github.com/ask/celery/issues/issue/95). hUjJh^hahchhe}rOK(hg]hh]hi]hj]hm]uhoNhphhq]rPKh)rQK}rRK(hTX``apply_async``: Now raises :exc:`ValueError` if task args is not a list, or kwargs is not a tuple (http://github.com/ask/celery/issues/issue/95).hUjMKh^hahchhe}rSK(hg]hh]hi]hj]hm]uhoMihq]rTK(j.)rUK}rVK(hTX``apply_async``he}rWK(hg]hh]hi]hj]hm]uhUjQKhq]rXKhzX apply_asyncrYKrZK}r[K(hTUhUjUKubahcj6ubhzX : Now raises r\Kr]K}r^K(hTX : Now raises hUjQKubje)r_K}r`K(hTX:exc:`ValueError`raKhUjQKh^hahcjihe}rbK(UreftypeXexcjkjlX ValueErrorU refdomainXpyrcKhj]hi]U refexplicithg]hh]hm]jnjojpNjqNuhoMihq]rdKj.)reK}rfK(hTjaKhe}rgK(hg]hh]rhK(jwjcKXpy-excriKehi]hj]hm]uhUj_Khq]rjKhzX ValueErrorrkKrlK}rmK(hTUhUjeKubahcj6ubaubhzX7 if task args is not a list, or kwargs is not a tuple (rnKroK}rpK(hTX7 if task args is not a list, or kwargs is not a tuple (hUjQKubh)rqK}rrK(hTX,http://github.com/ask/celery/issues/issue/95rsKhe}rtK(UrefurijsKhj]hi]hg]hh]hm]uhUjQKhq]ruKhzX,http://github.com/ask/celery/issues/issue/95rvKrwK}rxK(hTUhUjqKubahchubhzX).ryKrzK}r{K(hTX).hUjQKubeubaubh)r|K}r}K(hTXM``Task.max_retries`` can now be ``None``, which means it will retry forever. hUjJh^hahchhe}r~K(hg]hh]hi]hj]hm]uhoNhphhq]rKh)rK}rK(hTXL``Task.max_retries`` can now be ``None``, which means it will retry forever.hUj|Kh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMlhq]rK(j.)rK}rK(hTX``Task.max_retries``he}rK(hg]hh]hi]hj]hm]uhUjKhq]rKhzXTask.max_retriesrKrK}rK(hTUhUjKubahcj6ubhzX can now be rKrK}rK(hTX can now be hUjKubj.)rK}rK(hTX``None``he}rK(hg]hh]hi]hj]hm]uhUjKhq]rKhzXNonerKrK}rK(hTUhUjKubahcj6ubhzX$, which means it will retry forever.rKrK}rK(hTX$, which means it will retry forever.hUjKubeubaubh)rK}rK(hTXPCelerybeat: Now reuses the same connection when publishing large sets of tasks. hUjJh^hahchhe}rK(hg]hh]hi]hj]hm]uhoNhphhq]rKh)rK}rK(hTXOCelerybeat: Now reuses the same connection when publishing large sets of tasks.rKhUjKh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMnhq]rKhzXOCelerybeat: Now reuses the same connection when publishing large sets of tasks.rKrK}rK(hTjKhUjKubaubaubh)rK}rK(hTX`Modified the task locking example in the documentation to use ``cache.add`` for atomic locking. hUjJh^hahchhe}rK(hg]hh]hi]hj]hm]uhoNhphhq]rKh)rK}rK(hTX_Modified the task locking example in the documentation to use ``cache.add`` for atomic locking.hUjKh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMqhq]rK(hzX>Modified the task locking example in the documentation to use rKrK}rK(hTX>Modified the task locking example in the documentation to use hUjKubj.)rK}rK(hTX ``cache.add``he}rK(hg]hh]hi]hj]hm]uhUjKhq]rKhzX cache.addrKrK}rK(hTUhUjKubahcj6ubhzX for atomic locking.rKrK}rK(hTX for atomic locking.hUjKubeubaubh)rK}rK(hTXFAdded experimental support for a *started* status on tasks. If ``Task.track_started`` is enabled the task will report its status as "started" when the task is executed by a worker. The default value is ``False`` as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a "started" status can be useful for when there are long running tasks and there is a need to report which task is currently running. The global default can be overridden by the ``CELERY_TRACK_STARTED`` setting. hUjJh^hahchhe}rK(hg]hh]hi]hj]hm]uhoNhphhq]rK(h)rK}rK(hTX;Added experimental support for a *started* status on tasks.hUjKh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMthq]rK(hzX!Added experimental support for a rKrK}rK(hTX!Added experimental support for a hUjKubj )rK}rK(hTX *started*he}rK(hg]hh]hi]hj]hm]uhUjKhq]rKhzXstartedrKrK}rK(hTUhUjKubahcj ubhzX status on tasks.rKrK}rK(hTX status on tasks.hUjKubeubj:)rK}rK(hTUhe}rK(hg]hh]hi]hj]hm]uhUjKhq]rK(h)rK}rK(hTXxIf ``Task.track_started`` is enabled the task will report its status as "started" when the task is executed by a worker.hUjKh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMvhq]rK(hzXIf rKrK}rK(hTXIf hUjKubj.)rK}rK(hTX``Task.track_started``he}rK(hg]hh]hi]hj]hm]uhUjKhq]rKhzXTask.track_startedrKrK}rK(hTUhUjKubahcj6ubhzX_ is enabled the task will report its status as "started" when the task is executed by a worker.rKrK}rK(hTX_ is enabled the task will report its status as "started" when the task is executed by a worker.hUjKubeubh)rK}rK(hTX-The default value is ``False`` as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a "started" status can be useful for when there are long running tasks and there is a need to report which task is currently running.hUjKh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMyhq]rK(hzXThe default value is rKrK}rK(hTXThe default value is hUjKubj.)rK}rK(hTX ``False``he}rK(hg]hh]hi]hj]hm]uhUjKhq]rKhzXFalserKrK}rK(hTUhUjKubahcj6ubhzX as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a "started" status can be useful for when there are long running tasks and there is a need to report which task is currently running.rKrK}rK(hTX as the normal behaviour is to not report that level of granularity. Tasks are either pending, finished, or waiting to be retried. Having a "started" status can be useful for when there are long running tasks and there is a need to report which task is currently running.hUjKubeubh)rK}rK(hTXMThe global default can be overridden by the ``CELERY_TRACK_STARTED`` setting.hUjKh^hahchhe}rK(hg]hh]hi]hj]hm]uhoMhq]rK(hzX,The global default can be overridden by the rKrK}rK(hTX,The global default can be overridden by the hUjKubj.)rK}rK(hTX``CELERY_TRACK_STARTED``he}rK(hg]hh]hi]hj]hm]uhUjKhq]rKhzXCELERY_TRACK_STARTEDrKrL}rL(hTUhUjKubahcj6ubhzX setting.rLrL}rL(hTX setting.hUjKubeubehcjPubeubh)rL}rL(hTXOUser Guide: New section ``Tips and Best Practices``. Contributions welcome! hUjJh^hahchhe}rL(hg]hh]hi]hj]hm]uhoNhphhq]rL(h)r L}r L(hTX4User Guide: New section ``Tips and Best Practices``.hUjLh^hahchhe}r L(hg]hh]hi]hj]hm]uhoMhq]r L(hzXUser Guide: New section r LrL}rL(hTXUser Guide: New section hUj Lubj.)rL}rL(hTX``Tips and Best Practices``he}rL(hg]hh]hi]hj]hm]uhUj Lhq]rLhzXTips and Best PracticesrLrL}rL(hTUhUjLubahcj6ubhzX.rL}rL(hTX.hUj Lubeubj:)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLh)rL}rL(hTXContributions welcome!rLhUjLh^hahchhe}r L(hg]hh]hi]hj]hm]uhoMhq]r!LhzXContributions welcome!r"Lr#L}r$L(hTjLhUjLubaubahcjPubeubeubeubh^hahcUsystem_messager%Lhe}r&L(hg]UlevelKhj]hi]r'Lj3aUsourcehahh]hm]UlineM7UtypeUINFOr(LuhoM7hphhq]r)Lh)r*L}r+L(hTUhe}r,L(hg]hh]hi]hj]hm]uhUhRhq]r-LhzX'Duplicate implicit target name: "news".r.Lr/L}r0L(hTUhUj*LubahchubaubhQ)r1L}r2L(hTUhUjJh^hahcj%Lhe}r3L(hg]UlevelKhj]hi]r4LjYaUsourcehahh]hm]UlineMUtypej(LuhoMhphhq]r5Lh)r6L}r7L(hTUhe}r8L(hg]hh]hi]hj]hm]uhUj1Lhq]r9LhzX(Duplicate implicit target name: "fixes".r:Lr;L}rL(hTUhe}r?L(hg]UlevelKhj]hi]Usourcehahh]hm]UlineMUtypej(LuhUjh hq]r@Lh)rAL}rBL(hTUhe}rCL(hg]hh]hi]hj]hm]uhUj=Lhq]rDLhzX`Blank line missing before literal block (after the "::")? Interpreted as a definition list item.rELrFL}rGL(hTUhUjALubahchubahcj%LubhQ)rHL}rIL(hTUhUj7&h^hahcj%Lhe}rJL(hg]UlevelKhj]hi]rKLjaUsourcehahh]hm]UlineMUtypej(LuhoMhphhq]rLLh)rML}rNL(hTUhe}rOL(hg]hh]hi]hj]hm]uhUjHLhq]rPLhzX@Duplicate implicit target name: "backward incompatible changes".rQLrRL}rSL(hTUhUjMLubahchubaubhQ)rTL}rUL(hTUhUj*h^hahcj%Lhe}rVL(hg]UlevelKhj]hi]rWLjaUsourcehahh]hm]UlineMUtypej(LuhoMhphhq]rXLh)rYL}rZL(hTUhe}r[L(hg]hh]hi]hj]hm]uhUjTLhq]r\LhzX'Duplicate implicit target name: "news".r]Lr^L}r_L(hTUhUjYLubahchubaubhQ)r`L}raL(hTUhUjH,h^hahcj%Lhe}rbL(hg]UlevelKhj]hi]rcLjaUsourcehahh]hm]UlineMUtypej(LuhoMhphhq]rdLh)reL}rfL(hTUhe}rgL(hg]hh]hi]hj]hm]uhUj`Lhq]rhLhzX*Duplicate implicit target name: "changes".riLrjL}rkL(hTUhUjeLubahchubaubhQ)rlL}rmL(hTUhUj[.h^hahcj%Lhe}rnL(hg]UlevelKhj]hi]roLjaUsourcehahh]hm]UlineM%Utypej(LuhoM%hphhq]rpLh)rqL}rrL(hTUhe}rsL(hg]hh]hi]hj]hm]uhUjlLhq]rtLhzX0Duplicate implicit target name: "documentation".ruLrvL}rwL(hTUhUjqLubahchubaubhQ)rxL}ryL(hTUhUj 0h^hahcj%Lhe}rzL(hg]UlevelKhj]hi]r{LjaUsourcehahh]hm]UlineM~Utypej(LuhoM~hphhq]r|Lh)r}L}r~L(hTUhe}rL(hg]hh]hi]hj]hm]uhUjxLhq]rLhzX*Duplicate implicit target name: "changes".rLrL}rL(hTUhUj}LubahchubaubhQ)rL}rL(hTUhUj0h^hahcj%Lhe}rL(hg]UlevelKhj]hi]rLjaUsourcehahh]hm]UlineMUtypej(LuhoMhphhq]rLh)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLhzX@Duplicate implicit target name: "backward incompatible changes".rLrL}rL(hTUhUjLubahchubaubhQ)rL}rL(hTUhUj{1h^hahcj%Lhe}rL(hg]UlevelKhj]hi]rLjaUsourcehahh]hm]UlineMUtypej(LuhoMhphhq]rLh)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLhzX4Duplicate implicit target name: "important changes".rLrL}rL(hTUhUjLubahchubaubhQ)rL}rL(hTUhUj3h^hahcj%Lhe}rL(hg]UlevelKhj]hi]rLjaUsourcehahh]hm]UlineMUtypej(LuhoMhphhq]rLh)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLhzX'Duplicate implicit target name: "news".rLrL}rL(hTUhUjLubahchubaubhQ)rL}rL(hTUhUj6h^hahcj%Lhe}rL(hg]UlevelKhj]hi]rLj aUsourcehahh]hm]UlineM(Utypej(LuhoM(hphhq]rLh)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLhzX4Duplicate implicit target name: "important changes".rLrL}rL(hTUhUjLubahchubaubhQ)rL}rL(hTUhUj7h^hahcj%Lhe}rL(hg]UlevelKhj]hi]rLjaUsourcehahh]hm]UlineM;Utypej(LuhoM;hphhq]rLh)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLhzX'Duplicate implicit target name: "news".rLrL}rL(hTUhUjLubahchubaubeUcurrent_sourcerLNU decorationrLNUautofootnote_startrLKUnameidsrL}rL(hjhjhjh jh hh hh hh jhNhjYhj@hjhjhjhNhjhhhjShjhjlhjWhjhj}hjhj hj_h jjh!jh"jh#jFh$j1h%jh&jh'jh(j h)jmh*jh+jMh,jh-j;h.jh/jkh0jTh1jCh2j.h3jZh4j@h5j0h6jDh7Nh8jAh9j1h:j1h;jNhjah?j(h@jhANhBNhCjhDj;hEjhFjhGjhHjhIjhJjhKNhLhluhq]rLh\ahTUU transformerrLNU footnote_refsrL}rLUrefnamesrL}rL(X sqlalchemy]rLjaX can i use celery without django?]rLj1aXsqlalchemy connection string]rLj aXfaq]rLjw@aXsqlalchemy connection strings]rLj&aX+can i send some tasks to only some servers?]rLjl@aXdeprecation timeline]rL(j:jhj}ej]rLjaj]rLjaj-]rL(j)jtjjeXcookbook: retrying tasks]rLj1aXsupported databases]rLjauUsymbol_footnotesrL]rLUautofootnote_refsrL]rLUsymbol_footnote_refsrL]rLU citationsrL]rLhphU current_linerLNUtransform_messagesrL]rL(hQ)rL}rL(hTUhe}rL(hg]UlevelKhj]hi]Usourcehahh]hm]UlineMUtypej(Luhq]rLh)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLhzX-Hyperlink target "index-0" is not referenced.rLrL}rL(hTUhUjLubahchubahcj%LubhQ)rL}rL(hTUhe}rL(hg]UlevelKhj]hi]Usourcehahh]hm]UlineMMUtypej(Luhq]rLh)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLhzX*Hyperlink target "news" is not referenced.rLrL}rL(hTUhUjLubahchubahcj%LubhQ)rL}rL(hTUhe}rL(hg]UlevelKhj]hi]Usourcehahh]hm]UlineMUtypej(Luhq]rLh)rL}rL(hTUhe}rL(hg]hh]hi]hj]hm]uhUjLhq]rLhzX-Hyperlink target "index-1" is not referenced.rMrM}rM(hTUhUjLubahchubahcj%LubeUreporterrMNUid_startrMKvU autofootnotesrM]rMU citation_refsrM}rMUindirect_targetsr M]r MUsettingsr M(cdocutils.frontend Values r Mor M}rM(Ufootnote_backlinksrMKUrecord_dependenciesrMNU rfc_base_urlrMUhttp://tools.ietf.org/html/rMU tracebackrMUpep_referencesrMNUstrip_commentsrMNU toc_backlinksrMjU language_coderMUenrMU datestamprMNU report_levelrMKU _destinationrMNU halt_levelrMKU strip_classesrMNhwNUerror_encoding_error_handlerrMUbackslashreplacerMUdebugr MNUembed_stylesheetr!MUoutput_encoding_error_handlerr"MUstrictr#MU sectnum_xformr$MKUdump_transformsr%MNU docinfo_xformr&MKUwarning_streamr'MNUpep_file_url_templater(MUpep-%04dr)MUexit_status_levelr*MKUconfigr+MNUstrict_visitorr,MNUcloak_email_addressesr-MUtrim_footnote_reference_spacer.MUenvr/MNUdump_pseudo_xmlr0MNUexpose_internalsr1MNUsectsubtitle_xformr2MU source_linkr3MNUrfc_referencesr4MNUoutput_encodingr5MUutf-8r6MU source_urlr7MNUinput_encodingr8MU utf-8-sigr9MU_disable_configr:MNU id_prefixr;MUU tab_widthrMU_sourcer?MUG/var/build/user_builds/celery/checkouts/2.0-archived/docs/changelog.rstr@MUgettext_compactrAMU generatorrBMNUdump_internalsrCMNU smart_quotesrDMU pep_base_urlrEMUhttp://www.python.org/dev/peps/rFMUsyntax_highlightrGMUlongrHMUinput_encoding_error_handlerrIMj#MUauto_id_prefixrJMUidrKMUdoctitle_xformrLMUstrip_elements_with_classesrMMNU _config_filesrNM]Ufile_insertion_enabledrOMU raw_enabledrPMKU dump_settingsrQMNubUsymbol_footnote_startrRMKUidsrSM}rTM(jjjjjjLGjjEjj5EjjDjtjDjajGDjNjCj;j.Cj(jBjjBjjjjjjjXjTjkjgj2j.j@j@j0j_jjj~jzjjjYjUj~j/jSjOhjjmjajjj'j#jjjjj hZjjljjjj jFj>hj hj jjhjjjjtjyjjjjj jGjjjVjRjijejjjj>jjjjj jjjj0j,jCj?j`j\jsjoj:j6jMjIjjjjjjjjjjjjjjjjjj{jljhjjjjj;j7jjjjj1j1jjjjjjjjj-j)jjjjjjj}jyjjjfjSjOj@j<jj*j3hWjYjJjljjj0"jj&jCjjj*jjH,jj[.jjx.jZjjj7&jMjIjjj1j1jkjp/j@j@jj-BjjAjjAjjjjhhjjj_j[hlh\jj[?jjQAjj>jj>jjjH<j}jN>jDj^9jWj9jj7j1j8jEjAjBj>jYjUhhjjjjj/j+hhhhhhhhjjjFjyHjjhjxjj>.j j6jjk6j|jxjAj/j.j.jj 0jTjG/jj0jj0jj3jj{1uUsubstitution_namesrUM}rVMhchphe}rWM(hg]hj]hi]Usourcehahh]hm]uU footnotesrXM]rYMUrefidsrZM}r[Mj]r\Mj;asub.PKHDDvDZ5celery-2.0-archived/.doctrees/internals/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qX internalsqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU internalsqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXM/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX Internalsq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X Internalsq3q4}q5(hh.hh,ubaubcdocutils.nodes field_list q6)q7}q8(hUhhhhhU field_listq9h}q:(h!]h"]h#]h$]h&]uh(Kh)hh]q;(cdocutils.nodes field q<)q=}q>(hUhh7hhhUfieldq?h}q@(h!]h"]h#]h$]h&]uh(Kh)hh]qA(cdocutils.nodes field_name qB)qC}qD(hXReleaseqEh}qF(h!]h"]h#]h$]h&]uhh=h]qGh2XReleaseqHqI}qJ(hhEhhCubahU field_nameqKubcdocutils.nodes field_body qL)qM}qN(hX |version|qOh}qP(h!]h"]h#]h$]h&]uhh=h]qQcdocutils.nodes paragraph qR)qS}qT(hhOhhMhhhU paragraphqUh}qV(h!]h"]h#]h$]h&]uh(Kh]qWh2X2.0qXqY}qZ(hU2.0q[hhSubaubahU field_bodyq\ubeubh<)q]}q^(hUhh7hhhh?h}q_(h!]h"]h#]h$]h&]uh(Kh)hh]q`(hB)qa}qb(hXDateqch}qd(h!]h"]h#]h$]h&]uhh]h]qeh2XDateqfqg}qh(hhchhaubahhKubhL)qi}qj(hX|today| h}qk(h!]h"]h#]h$]h&]uhh]h]qlhR)qm}qn(hX|today|qohhihhhhUh}qp(h!]h"]h#]h$]h&]uh(Kh]qqh2XFebruary 04, 2014qrqs}qt(hXFebruary 04, 2014hhmubaubahh\ubeubeubcdocutils.nodes compound qu)qv}qw(hUhhhhhUcompoundqxh}qy(h!]h"]qzUtoctree-wrapperq{ah#]h$]h&]uh(Nh)hh]q|csphinx.addnodes toctree q})q~}q(hUhhvhhhUtoctreeqh}q(UnumberedqKU includehiddenqhXinternals/indexqU titlesonlyqUglobqh$]h#]h!]h"]h&]Uentriesq]q(NXinternals/deprecationqqNXinternals/workerqqNXinternals/protocolqqNXinternals/eventsqqNXinternals/moduleindexqqNXinternals/reference/indexqqeUhiddenqU includefilesq]q(hhhhhheUmaxdepthqKuh(Kh]ubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqȉUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqԈUtrim_footnote_reference_spaceqՉUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqىU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUM/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]rUrefidsr}rub.PKHDDM%BB8celery-2.0-archived/.doctrees/internals/protocol.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xmessage formatqNX serializationqNXtask message protocolqNXexample messageq NUcontentsq NuUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUmessage-formatqhU serializationqhUtask-message-protocolqh Uexample-messageqh UcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceq cdocutils.nodes reprunicode q!XP/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/protocol.rstq"q#}q$bUtagnameq%Usectionq&U attributesq'}q((Udupnamesq)]Uclassesq*]Ubackrefsq+]Uidsq,]q-haUnamesq.]q/hauUlineq0KUdocumentq1hh]q2(cdocutils.nodes title q3)q4}q5(hXTask Message Protocolq6hhh h#h%Utitleq7h'}q8(h)]h*]h+]h,]h.]uh0Kh1hh]q9cdocutils.nodes Text q:XTask Message Protocolq;q<}q=(hh6hh4ubaubcdocutils.nodes topic q>)q?}q@(hUhhh h#h%UtopicqAh'}qB(h)]h*]qC(UcontentsqDUlocalqEeh+]h,]qFhah.]qGh auh0Kh1hh]qHcdocutils.nodes bullet_list qI)qJ}qK(hUhh?h Nh%U bullet_listqLh'}qM(h)]h*]h+]h,]h.]uh0Nh1hh]qN(cdocutils.nodes list_item qO)qP}qQ(hUh'}qR(h)]h*]h+]h,]h.]uhhJh]qScdocutils.nodes paragraph qT)qU}qV(hUh'}qW(h)]h*]h+]h,]h.]uhhPh]qXcdocutils.nodes reference qY)qZ}q[(hUh'}q\(h,]q]Uid1q^ah+]h)]h*]h.]UrefidhuhhUh]q_h:XMessage formatq`qa}qb(hXMessage formatqchhZubah%U referenceqdubah%U paragraphqeubah%U list_itemqfubhO)qg}qh(hUh'}qi(h)]h*]h+]h,]h.]uhhJh]qjhT)qk}ql(hUh'}qm(h)]h*]h+]h,]h.]uhhgh]qnhY)qo}qp(hUh'}qq(h,]qrUid2qsah+]h)]h*]h.]Urefidhuhhkh]qth:XExample messagequqv}qw(hXExample messageqxhhoubah%hdubah%heubah%hfubhO)qy}qz(hUh'}q{(h)]h*]h+]h,]h.]uhhJh]q|hT)q}}q~(hUh'}q(h)]h*]h+]h,]h.]uhhyh]qhY)q}q(hUh'}q(h,]qUid3qah+]h)]h*]h.]Urefidhuhh}h]qh:X Serializationqq}q(hX Serializationqhhubah%hdubah%heubah%hfubeubaubh)q}q(hUhhh h#h%h&h'}q(h)]h*]h+]h,]qhah.]qhauh0K h1hh]q(h3)q}q(hhchhh h#h%h7h'}q(h,]h+]h)]h*]h.]Urefidqh^uh0K h1hh]qh:XMessage formatqq}q(hhchhubaubhI)q}q(hUhhh h#h%hLh'}q(UbulletqX*h,]h+]h)]h*]h.]uh0K h1hh]q(hO)q}q(hX4task ``string`` Name of the task. **required** hhh Nh%hfh'}q(h)]h*]h+]h,]h.]uh0Nh1hh]qcdocutils.nodes definition_list q)q}q(hUh'}q(h)]h*]h+]h,]h.]uhhh]qcdocutils.nodes definition_list_item q)q}q(hX0task ``string`` Name of the task. **required** hhh h#h%Udefinition_list_itemqh'}q(h)]h*]h+]h,]h.]uh0Kh]q(cdocutils.nodes term q)q}q(hXtaskqhhh h#h%Utermqh'}q(h)]h*]h+]h,]h.]uh0Kh]qh:Xtaskqq}q(hhhhubaubcdocutils.nodes definition q)q}q(hUh'}q(h)]h*]h+]h,]h.]uhhh]q(hT)q}q(hX ``string``qhhh h#h%heh'}q(h)]h*]h+]h,]h.]uh0K h]qcdocutils.nodes literal q)q}q(hhh'}q(h)]h*]h+]h,]h.]uhhh]qh:Xstringqƅq}q(hUhhubah%UliteralqubaubhT)q}q(hXName of the task. **required**hhh h#h%heh'}q(h)]h*]h+]h,]h.]uh0Kh]q(h:XName of the task. q΅q}q(hXName of the task. hhubcdocutils.nodes strong q)q}q(hX **required**h'}q(h)]h*]h+]h,]h.]uhhh]qh:Xrequiredqօq}q(hUhhubah%Ustrongqubeubeh%U definitionqubeubah%Udefinition_listqubaubhO)q}q(hX>id ``string`` Unique id of the task (UUID). **required** hhh Nh%hfh'}q(h)]h*]h+]h,]h.]uh0Nh1hh]qh)q}q(hUh'}q(h)]h*]h+]h,]h.]uhhh]qh)q}q(hX:id ``string`` Unique id of the task (UUID). **required** hhh h#h%hh'}q(h)]h*]h+]h,]h.]uh0Kh]q(h)q}q(hXidqhhh h#h%hh'}q(h)]h*]h+]h,]h.]uh0Kh]qh:Xidq텁q}q(hhhhubaubh)q}q(hUh'}q(h)]h*]h+]h,]h.]uhhh]q(hT)q}q(hX ``string``qhhh h#h%heh'}q(h)]h*]h+]h,]h.]uh0Kh]qh)q}q(hhh'}q(h)]h*]h+]h,]h.]uhhh]qh:Xstringqq}q(hUhhubah%hubaubhT)r}r(hX*Unique id of the task (UUID). **required**hhh h#h%heh'}r(h)]h*]h+]h,]h.]uh0Kh]r(h:XUnique id of the task (UUID). rr}r(hXUnique id of the task (UUID). hjubh)r}r(hX **required**h'}r (h)]h*]h+]h,]h.]uhjh]r h:Xrequiredr r }r (hUhjubah%hubeubeh%hubeubah%hubaubhO)r}r(hXMargs ``list`` List of arguments. Will be an empty list if not provided. hhh Nh%hfh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]rh)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rh)r}r(hXIargs ``list`` List of arguments. Will be an empty list if not provided. hjh h#h%hh'}r(h)]h*]h+]h,]h.]uh0Kh]r(h)r}r(hXargsrhjh h#h%hh'}r(h)]h*]h+]h,]h.]uh0Kh]rh:Xargsrr }r!(hjhjubaubh)r"}r#(hUh'}r$(h)]h*]h+]h,]h.]uhjh]r%(hT)r&}r'(hX``list``r(hj"h h#h%heh'}r)(h)]h*]h+]h,]h.]uh0Kh]r*h)r+}r,(hj(h'}r-(h)]h*]h+]h,]h.]uhj&h]r.h:Xlistr/r0}r1(hUhj+ubah%hubaubhT)r2}r3(hX9List of arguments. Will be an empty list if not provided.r4hj"h h#h%heh'}r5(h)]h*]h+]h,]h.]uh0Kh]r6h:X9List of arguments. Will be an empty list if not provided.r7r8}r9(hj4hj2ubaubeh%hubeubah%hubaubhO)r:}r;(hXkkwargs ``dictionary`` Dictionary of keyword arguments. Will be an empty dictionary if not provided. hhh Nh%hfh'}r<(h)]h*]h+]h,]h.]uh0Nh1hh]r=h)r>}r?(hUh'}r@(h)]h*]h+]h,]h.]uhj:h]rAh)rB}rC(hXekwargs ``dictionary`` Dictionary of keyword arguments. Will be an empty dictionary if not provided. hj>h h#h%hh'}rD(h)]h*]h+]h,]h.]uh0Kh]rE(h)rF}rG(hXkwargsrHhjBh h#h%hh'}rI(h)]h*]h+]h,]h.]uh0Kh]rJh:XkwargsrKrL}rM(hjHhjFubaubh)rN}rO(hUh'}rP(h)]h*]h+]h,]h.]uhjBh]rQ(hT)rR}rS(hX``dictionary``rThjNh h#h%heh'}rU(h)]h*]h+]h,]h.]uh0Kh]rVh)rW}rX(hjTh'}rY(h)]h*]h+]h,]h.]uhjRh]rZh:X dictionaryr[r\}r](hUhjWubah%hubaubhT)r^}r_(hXMDictionary of keyword arguments. Will be an empty dictionary if not provided.r`hjNh h#h%heh'}ra(h)]h*]h+]h,]h.]uh0Kh]rbh:XMDictionary of keyword arguments. Will be an empty dictionary if not provided.rcrd}re(hj`hj^ubaubeh%hubeubah%hubaubhO)rf}rg(hXoretries ``int`` Current number of times this task has been retried. Defaults to ``0`` if not specified. hhh Nh%hfh'}rh(h)]h*]h+]h,]h.]uh0Nh1hh]rih)rj}rk(hUh'}rl(h)]h*]h+]h,]h.]uhjfh]rmh)rn}ro(hXiretries ``int`` Current number of times this task has been retried. Defaults to ``0`` if not specified. hjjh h#h%hh'}rp(h)]h*]h+]h,]h.]uh0K$h]rq(h)rr}rs(hXretriesrthjnh h#h%hh'}ru(h)]h*]h+]h,]h.]uh0K$h]rvh:Xretriesrwrx}ry(hjthjrubaubh)rz}r{(hUh'}r|(h)]h*]h+]h,]h.]uhjnh]r}(hT)r~}r(hX``int``rhjzh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K!h]rh)r}r(hjh'}r(h)]h*]h+]h,]h.]uhj~h]rh:Xintrr}r(hUhjubah%hubaubhT)r}r(hXWCurrent number of times this task has been retried. Defaults to ``0`` if not specified.hjzh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K#h]r(h:X@Current number of times this task has been retried. Defaults to rr}r(hX@Current number of times this task has been retried. Defaults to hjubh)r}r(hX``0``h'}r(h)]h*]h+]h,]h.]uhjh]rh:X0r}r(hUhjubah%hubh:X if not specified.rr}r(hX if not specified.hjubeubeh%hubeubah%hubaubhO)r}r(hXeta ``string`` (ISO 8601) Estimated time of arrival. This is the date and time in ISO 8601 format. If not provided the message is not scheduled, but will be executed asap. hhh Nh%hfh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]rh)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rh)r}r(hXeta ``string`` (ISO 8601) Estimated time of arrival. This is the date and time in ISO 8601 format. If not provided the message is not scheduled, but will be executed asap. hjh h#h%hh'}r(h)]h*]h+]h,]h.]uh0K+h]r(h)r}r(hXetarhjh h#h%hh'}r(h)]h*]h+]h,]h.]uh0K+h]rh:Xetarr}r(hjhjubaubh)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(hT)r}r(hX``string`` (ISO 8601)hjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K'h]r(h)r}r(hX ``string``h'}r(h)]h*]h+]h,]h.]uhjh]rh:Xstringrr}r(hUhjubah%hubh:X (ISO 8601)rr}r(hX (ISO 8601)hjubeubhT)r}r(hXEstimated time of arrival. This is the date and time in ISO 8601 format. If not provided the message is not scheduled, but will be executed asap.rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K)h]rh:XEstimated time of arrival. This is the date and time in ISO 8601 format. If not provided the message is not scheduled, but will be executed asap.rr}r(hjhjubaubeh%hubeubah%hubaubeubeubh)r}r(hUhhh h#h%h&h'}r(h)]h*]h+]h,]rhah.]rh auh0K.h1hh]r(h3)r}r(hhxhjh h#h%h7h'}r(h,]h+]h)]h*]h.]hhsuh0K.h1hh]rh:XExample messagerr}r(hhxhjubaubhT)r}r(hXRThis is an example invocation of the ``celery.task.PingTask`` task in JSON format:hjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K0h1hh]r(h:X%This is an example invocation of the rr}r(hX%This is an example invocation of the hjubh)r}r(hX``celery.task.PingTask``h'}r(h)]h*]h+]h,]h.]uhjh]rh:Xcelery.task.PingTaskrr}r(hUhjubah%hubh:X task in JSON format:rr}r(hX task in JSON format:hjubeubcdocutils.nodes literal_block r)r}r(hXq{"task": "celery.task.PingTask", "args": [], "kwargs": {}, "retries": 0, "eta": "2009-11-17T12:30:56.527191"}hjh h#h%U literal_blockrh'}r(UlinenosrUlanguagerX javascriptU xml:spacerUpreserverh,]h+]h)]h*]h.]uh0K3h1hh]rh:Xq{"task": "celery.task.PingTask", "args": [], "kwargs": {}, "retries": 0, "eta": "2009-11-17T12:30:56.527191"}rr}r(hUhjubaubeubh)r}r(hUhhh h#h%h&h'}r(h)]h*]h+]h,]rhah.]rhauh0Kh1hh]r(h:X>The protocol supports several serialization formats using the rr}r(hX>The protocol supports several serialization formats using the hjubh)r}r(hX``content_type``h'}r (h)]h*]h+]h,]h.]uhjh]r h:X content_typer r }r (hUhjubah%hubh:X message header.rr}r(hX message header.hjubeubhT)r}r(hXEThe MIME-types supported by default are shown in the following table.rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KAh1hh]rh:XEThe MIME-types supported by default are shown in the following table.rr}r(hjhjubaubcdocutils.nodes block_quote r)r}r(hUhjh h#h%U block_quoterh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]rcdocutils.nodes table r)r }r!(hUh'}r"(h)]h*]h+]h,]h.]uhjh]r#cdocutils.nodes tgroup r$)r%}r&(hUh'}r'(h,]h+]h)]h*]h.]UcolsKuhj h]r((cdocutils.nodes colspec r))r*}r+(hUh'}r,(h,]h+]h)]h*]h.]UcolwidthKuhj%h]h%Ucolspecr-ubj))r.}r/(hUh'}r0(h,]h+]h)]h*]h.]UcolwidthK!uhj%h]h%j-ubcdocutils.nodes thead r1)r2}r3(hUh'}r4(h)]h*]h+]h,]h.]uhj%h]r5cdocutils.nodes row r6)r7}r8(hUh'}r9(h)]h*]h+]h,]h.]uhj2h]r:(cdocutils.nodes entry r;)r<}r=(hUh'}r>(h)]h*]h+]h,]h.]uhj7h]r?hT)r@}rA(hXSchemerBhj<h h#h%heh'}rC(h)]h*]h+]h,]h.]uh0KDh]rDh:XSchemerErF}rG(hjBhj@ubaubah%UentryrHubj;)rI}rJ(hUh'}rK(h)]h*]h+]h,]h.]uhj7h]rLhT)rM}rN(hX MIME TyperOhjIh h#h%heh'}rP(h)]h*]h+]h,]h.]uh0KDh]rQh:X MIME TyperRrS}rT(hjOhjMubaubah%jHubeh%UrowrUubah%UtheadrVubcdocutils.nodes tbody rW)rX}rY(hUh'}rZ(h)]h*]h+]h,]h.]uhj%h]r[(j6)r\}r](hUh'}r^(h)]h*]h+]h,]h.]uhjXh]r_(j;)r`}ra(hUh'}rb(h)]h*]h+]h,]h.]uhj\h]rchT)rd}re(hXjsonrfhj`h h#h%heh'}rg(h)]h*]h+]h,]h.]uh0KFh]rhh:Xjsonrirj}rk(hjfhjdubaubah%jHubj;)rl}rm(hUh'}rn(h)]h*]h+]h,]h.]uhj\h]rohT)rp}rq(hXapplication/jsonrrhjlh h#h%heh'}rs(h)]h*]h+]h,]h.]uh0KFh]rth:Xapplication/jsonrurv}rw(hjrhjpubaubah%jHubeh%jUubj6)rx}ry(hUh'}rz(h)]h*]h+]h,]h.]uhjXh]r{(j;)r|}r}(hUh'}r~(h)]h*]h+]h,]h.]uhjxh]rhT)r}r(hXyamlrhj|h h#h%heh'}r(h)]h*]h+]h,]h.]uh0KGh]rh:Xyamlrr}r(hjhjubaubah%jHubj;)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjxh]rhT)r}r(hXapplication/x-yamlrhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KGh]rh:Xapplication/x-yamlrr}r(hjhjubaubah%jHubeh%jUubj6)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjXh]r(j;)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXpicklerhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KHh]rh:Xpicklerr}r(hjhjubaubah%jHubj;)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXapplication/x-python-serializerhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KHh]rh:Xapplication/x-python-serializerr}r(hjhjubaubah%jHubeh%jUubj6)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjXh]r(j;)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXmsgpackrhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KIh]rh:Xmsgpackrr}r(hjhjubaubah%jHubj;)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXapplication/x-msgpackrhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KIh]rh:Xapplication/x-msgpackrr}r(hjhjubaubah%jHubeh%jUubeh%Utbodyrubeh%Utgrouprubah%UtablerubaubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh1hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrjHU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh7NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesr Utrim_footnote_reference_spacer Uenvr NUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUP/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/protocol.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesr U pep_base_urlr!Uhttp://www.python.org/dev/peps/r"Usyntax_highlightr#Ulongr$Uinput_encoding_error_handlerr%jUauto_id_prefixr&Uidr'Udoctitle_xformr(Ustrip_elements_with_classesr)NU _config_filesr*]r+Ufile_insertion_enabledr,U raw_enabledr-KU dump_settingsr.NubUsymbol_footnote_startr/KUidsr0}r1(hshohhh^hZhhhjhhhh?hjuUsubstitution_namesr2}r3h%h1h'}r4(h)]h,]h+]Usourceh#h*]h.]uU footnotesr5]r6Urefidsr7}r8ub.PKHDD^7İ88;celery-2.0-archived/.doctrees/internals/deprecation.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery deprecation timelineqNXremovals for version 2.0qNUcontentsqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUcelery-deprecation-timelineqhUremovals-for-version-2-0qhUcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXS/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/deprecation.rstqq}q bUtagnameq!Usectionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]q)haUnamesq*]q+hauUlineq,KUdocumentq-hh]q.(cdocutils.nodes title q/)q0}q1(hXCelery Deprecation Timelineq2hhhhh!Utitleq3h#}q4(h%]h&]h']h(]h*]uh,Kh-hh]q5cdocutils.nodes Text q6XCelery Deprecation Timelineq7q8}q9(hh2hh0ubaubcdocutils.nodes topic q:)q;}q<(hUhhhhh!Utopicq=h#}q>(h%]h&]q?(Ucontentsq@UlocalqAeh']h(]qBhah*]qChauh,Kh-hh]qDcdocutils.nodes bullet_list qE)qF}qG(hUhh;hNh!U bullet_listqHh#}qI(h%]h&]h']h(]h*]uh,Nh-hh]qJcdocutils.nodes list_item qK)qL}qM(hUh#}qN(h%]h&]h']h(]h*]uhhFh]qOcdocutils.nodes paragraph qP)qQ}qR(hUh#}qS(h%]h&]h']h(]h*]uhhLh]qTcdocutils.nodes reference qU)qV}qW(hUh#}qX(h(]qYUid1qZah']h%]h&]h*]UrefidhuhhQh]q[h6XRemovals for version 2.0q\q]}q^(hXRemovals for version 2.0q_hhVubah!U referenceq`ubah!U paragraphqaubah!U list_itemqbubaubaubh)qc}qd(hUhhhhh!h"h#}qe(h%]h&]h']h(]qfhah*]qghauh,K h-hh]qh(h/)qi}qj(hh_hhchhh!h3h#}qk(h(]h']h%]h&]h*]UrefidqlhZuh,K h-hh]qmh6XRemovals for version 2.0qnqo}qp(hh_hhiubaubhE)qq}qr(hUhhchhh!hHh#}qs(UbulletqtX*h(]h']h%]h&]h*]uh,K h-hh]qu(hK)qv}qw(hXThe following settings will be removed: ===================================== ===================================== **Setting name** **Replace with** ===================================== ===================================== ``CELERY_AMQP_CONSUMER_QUEUES`` ``CELERY_QUEUES`` ``CELERY_AMQP_CONSUMER_QUEUES`` ``CELERY_QUEUES`` ``CELERY_AMQP_EXCHANGE`` ``CELERY_DEFAULT_EXCHANGE`` ``CELERY_AMQP_EXCHANGE_TYPE`` ``CELERY_DEFAULT_AMQP_EXCHANGE_TYPE`` ``CELERY_AMQP_CONSUMER_ROUTING_KEY`` ``CELERY_QUEUES`` ``CELERY_AMQP_PUBLISHER_ROUTING_KEY`` ``CELERY_DEFAULT_ROUTING_KEY`` ===================================== ===================================== hhqhhh!hbh#}qx(h%]h&]h']h(]h*]uh,Nh-hh]qy(hP)qz}q{(hX'The following settings will be removed:q|hhvhhh!hah#}q}(h%]h&]h']h(]h*]uh,K h]q~h6X'The following settings will be removed:qq}q(hh|hhzubaubcdocutils.nodes block_quote q)q}q(hUh#}q(h%]h&]h']h(]h*]uhhvh]qcdocutils.nodes table q)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]qcdocutils.nodes tgroup q)q}q(hUh#}q(h(]h']h%]h&]h*]UcolsKuhhh]q(cdocutils.nodes colspec q)q}q(hUh#}q(h(]h']h%]h&]h*]UcolwidthK%uhhh]h!Ucolspecqubh)q}q(hUh#}q(h(]h']h%]h&]h*]UcolwidthK%uhhh]h!hubcdocutils.nodes thead q)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]qcdocutils.nodes row q)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]q(cdocutils.nodes entry q)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]qhP)q}q(hX**Setting name**qhhhhh!hah#}q(h%]h&]h']h(]h*]uh,Kh]qcdocutils.nodes strong q)q}q(hhh#}q(h%]h&]h']h(]h*]uhhh]qh6X Setting nameqq}q(hUhhubah!Ustrongqubaubah!Uentryqubh)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]qhP)q}q(hX**Replace with**qhhhhh!hah#}q(h%]h&]h']h(]h*]uh,Kh]qh)q}q(hhh#}q(h%]h&]h']h(]h*]uhhh]qh6X Replace withqąq}q(hUhhubah!hubaubah!hubeh!Urowqubah!Utheadqubcdocutils.nodes tbody q)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]q(h)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]q(h)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]qhP)q}q(hX``CELERY_AMQP_CONSUMER_QUEUES``qhhhhh!hah#}q(h%]h&]h']h(]h*]uh,Kh]qcdocutils.nodes literal q)q}q(hhh#}q(h%]h&]h']h(]h*]uhhh]qh6XCELERY_AMQP_CONSUMER_QUEUESqq}q(hUhhubah!Uliteralqubaubah!hubh)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]qhP)q}q(hX``CELERY_QUEUES``qhhhhh!hah#}q(h%]h&]h']h(]h*]uh,Kh]qh)q}q(hhh#}q(h%]h&]h']h(]h*]uhhh]qh6X CELERY_QUEUESqq}q(hUhhubah!hubaubah!hubeh!hubh)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]q(h)q}q(hUh#}q(h%]h&]h']h(]h*]uhhh]qhP)q}q(hX``CELERY_AMQP_CONSUMER_QUEUES``qhhhhh!hah#}q(h%]h&]h']h(]h*]uh,Kh]rh)r}r(hhh#}r(h%]h&]h']h(]h*]uhhh]rh6XCELERY_AMQP_CONSUMER_QUEUESrr}r(hUhjubah!hubaubah!hubh)r}r (hUh#}r (h%]h&]h']h(]h*]uhhh]r hP)r }r (hX``CELERY_QUEUES``rhjhhh!hah#}r(h%]h&]h']h(]h*]uh,Kh]rh)r}r(hjh#}r(h%]h&]h']h(]h*]uhj h]rh6X CELERY_QUEUESrr}r(hUhjubah!hubaubah!hubeh!hubh)r}r(hUh#}r(h%]h&]h']h(]h*]uhhh]r(h)r}r(hUh#}r(h%]h&]h']h(]h*]uhjh]rhP)r }r!(hX``CELERY_AMQP_EXCHANGE``r"hjhhh!hah#}r#(h%]h&]h']h(]h*]uh,Kh]r$h)r%}r&(hj"h#}r'(h%]h&]h']h(]h*]uhj h]r(h6XCELERY_AMQP_EXCHANGEr)r*}r+(hUhj%ubah!hubaubah!hubh)r,}r-(hUh#}r.(h%]h&]h']h(]h*]uhjh]r/hP)r0}r1(hX``CELERY_DEFAULT_EXCHANGE``r2hj,hhh!hah#}r3(h%]h&]h']h(]h*]uh,Kh]r4h)r5}r6(hj2h#}r7(h%]h&]h']h(]h*]uhj0h]r8h6XCELERY_DEFAULT_EXCHANGEr9r:}r;(hUhj5ubah!hubaubah!hubeh!hubh)r<}r=(hUh#}r>(h%]h&]h']h(]h*]uhhh]r?(h)r@}rA(hUh#}rB(h%]h&]h']h(]h*]uhj<h]rChP)rD}rE(hX``CELERY_AMQP_EXCHANGE_TYPE``rFhj@hhh!hah#}rG(h%]h&]h']h(]h*]uh,Kh]rHh)rI}rJ(hjFh#}rK(h%]h&]h']h(]h*]uhjDh]rLh6XCELERY_AMQP_EXCHANGE_TYPErMrN}rO(hUhjIubah!hubaubah!hubh)rP}rQ(hUh#}rR(h%]h&]h']h(]h*]uhj<h]rShP)rT}rU(hX%``CELERY_DEFAULT_AMQP_EXCHANGE_TYPE``rVhjPhhh!hah#}rW(h%]h&]h']h(]h*]uh,Kh]rXh)rY}rZ(hjVh#}r[(h%]h&]h']h(]h*]uhjTh]r\h6X!CELERY_DEFAULT_AMQP_EXCHANGE_TYPEr]r^}r_(hUhjYubah!hubaubah!hubeh!hubh)r`}ra(hUh#}rb(h%]h&]h']h(]h*]uhhh]rc(h)rd}re(hUh#}rf(h%]h&]h']h(]h*]uhj`h]rghP)rh}ri(hX$``CELERY_AMQP_CONSUMER_ROUTING_KEY``rjhjdhhh!hah#}rk(h%]h&]h']h(]h*]uh,Kh]rlh)rm}rn(hjjh#}ro(h%]h&]h']h(]h*]uhjhh]rph6X CELERY_AMQP_CONSUMER_ROUTING_KEYrqrr}rs(hUhjmubah!hubaubah!hubh)rt}ru(hUh#}rv(h%]h&]h']h(]h*]uhj`h]rwhP)rx}ry(hX``CELERY_QUEUES``rzhjthhh!hah#}r{(h%]h&]h']h(]h*]uh,Kh]r|h)r}}r~(hjzh#}r(h%]h&]h']h(]h*]uhjxh]rh6X CELERY_QUEUESrr}r(hUhj}ubah!hubaubah!hubeh!hubh)r}r(hUh#}r(h%]h&]h']h(]h*]uhhh]r(h)r}r(hUh#}r(h%]h&]h']h(]h*]uhjh]rhP)r}r(hX%``CELERY_AMQP_PUBLISHER_ROUTING_KEY``rhjhhh!hah#}r(h%]h&]h']h(]h*]uh,Kh]rh)r}r(hjh#}r(h%]h&]h']h(]h*]uhjh]rh6X!CELERY_AMQP_PUBLISHER_ROUTING_KEYrr}r(hUhjubah!hubaubah!hubh)r}r(hUh#}r(h%]h&]h']h(]h*]uhjh]rhP)r}r(hX``CELERY_DEFAULT_ROUTING_KEY``rhjhhh!hah#}r(h%]h&]h']h(]h*]uh,Kh]rh)r}r(hjh#}r(h%]h&]h']h(]h*]uhjh]rh6XCELERY_DEFAULT_ROUTING_KEYrr}r(hUhjubah!hubaubah!hubeh!hubeh!Utbodyrubeh!Utgrouprubah!Utablerubah!U block_quoterubeubhK)r}r(hX``CELERY_LOADER`` definitions without class name. E.g. ``celery.loaders.default``, needs to include the class name: ``celery.loaders.default.Loader``. hhqhhh!hbh#}r(h%]h&]h']h(]h*]uh,Nh-hh]r(hP)r}r(hX1``CELERY_LOADER`` definitions without class name.hjhhh!hah#}r(h%]h&]h']h(]h*]uh,Kh]r(h)r}r(hX``CELERY_LOADER``h#}r(h%]h&]h']h(]h*]uhjh]rh6X CELERY_LOADERrr}r(hUhjubah!hubh6X definitions without class name.rr}r(hX definitions without class name.hjubeubh)r}r(hUh#}r(h%]h&]h']h(]h*]uhjh]rhP)r}r(hXdE.g. ``celery.loaders.default``, needs to include the class name: ``celery.loaders.default.Loader``.hjhhh!hah#}r(h%]h&]h']h(]h*]uh,Kh]r(h6XE.g. rr}r(hXE.g. hjubh)r}r(hX``celery.loaders.default``h#}r(h%]h&]h']h(]h*]uhjh]rh6Xcelery.loaders.defaultrr}r(hUhjubah!hubh6X#, needs to include the class name: rr}r(hX#, needs to include the class name: hjubh)r}r(hX!``celery.loaders.default.Loader``h#}r(h%]h&]h']h(]h*]uhjh]rh6Xcelery.loaders.default.Loaderrr}r(hUhjubah!hubh6X.r}r(hX.hjubeubah!jubeubhK)r}r(hXQ:meth:`TaskSet.run`. Use :meth:`celery.task.base.TaskSet.apply_async` instead. hhqhNh!hbh#}r(h%]h&]h']h(]h*]uh,Nh-hh]rcdocutils.nodes definition_list r)r}r(hUh#}r(h%]h&]h']h(]h*]uhjh]rcdocutils.nodes definition_list_item r)r}r(hXO:meth:`TaskSet.run`. Use :meth:`celery.task.base.TaskSet.apply_async` instead. hjhhh!Udefinition_list_itemrh#}r(h%]h&]h']h(]h*]uh,Kh]r(cdocutils.nodes term r)r}r(hXE:meth:`TaskSet.run`. Use :meth:`celery.task.base.TaskSet.apply_async`rhjhhh!Utermrh#}r(h%]h&]h']h(]h*]uh,Kh]r(csphinx.addnodes pending_xref r)r}r(hX:meth:`TaskSet.run`rhjhhh!U pending_xrefrh#}r(UreftypeXmethUrefwarnrU reftargetrX TaskSet.runU refdomainXpyrh(]h']U refexplicith%]h&]h*]UrefdocrXinternals/deprecationrUpy:classrNU py:modulerNuh,Kh]rh)r}r(hjh#}r(h%]h&]r(UxrefrjXpy-methreh']h(]h*]uhjh]rh6X TaskSet.run()rr}r (hUhjubah!hubaubh6X. Use r r }r (hX. Use hjubj)r }r(hX,:meth:`celery.task.base.TaskSet.apply_async`rhjhhh!jh#}r(UreftypeXmethjjX$celery.task.base.TaskSet.apply_asyncU refdomainXpyrh(]h']U refexplicith%]h&]h*]jjjNjNuh,Kh]rh)r}r(hjh#}r(h%]h&]r(jjXpy-methreh']h(]h*]uhj h]rh6X&celery.task.base.TaskSet.apply_async()rr}r(hUhjubah!hubaubeubcdocutils.nodes definition r)r}r(hUh#}r(h%]h&]h']h(]h*]uhjh]r hP)r!}r"(hXinstead.r#hjhhh!hah#}r$(h%]h&]h']h(]h*]uh,Kh]r%h6Xinstead.r&r'}r((hj#hj!ubaubah!U definitionr)ubeubah!Udefinition_listr*ubaubhK)r+}r,(hXHThe module :mod:`celery.task.rest`; use :mod:`celery.task.http` instead.r-hhqhhh!hbh#}r.(h%]h&]h']h(]h*]uh,Nh-hh]r/hP)r0}r1(hj-hj+hhh!hah#}r2(h%]h&]h']h(]h*]uh,K h]r3(h6X The module r4r5}r6(hX The module hj0ubj)r7}r8(hX:mod:`celery.task.rest`r9hj0hhh!jh#}r:(UreftypeXmodjjXcelery.task.restU refdomainXpyr;h(]h']U refexplicith%]h&]h*]jjjNjNuh,K h]r<h)r=}r>(hj9h#}r?(h%]h&]r@(jj;Xpy-modrAeh']h(]h*]uhj7h]rBh6Xcelery.task.restrCrD}rE(hUhj=ubah!hubaubh6X; use rFrG}rH(hX; use hj0ubj)rI}rJ(hX:mod:`celery.task.http`rKhj0hhh!jh#}rL(UreftypeXmodjjXcelery.task.httpU refdomainXpyrMh(]h']U refexplicith%]h&]h*]jjjNjNuh,K h]rNh)rO}rP(hjKh#}rQ(h%]h&]rR(jjMXpy-modrSeh']h(]h*]uhjIh]rTh6Xcelery.task.httprUrV}rW(hUhjOubah!hubaubh6X instead.rXrY}rZ(hX instead.hj0ubeubaubeubeubeubahUU transformerr[NU footnote_refsr\}r]Urefnamesr^}r_Usymbol_footnotesr`]raUautofootnote_refsrb]rcUsymbol_footnote_refsrd]reU citationsrf]rgh-hU current_linerhNUtransform_messagesri]rjUreporterrkNUid_startrlKU autofootnotesrm]rnU citation_refsro}rpUindirect_targetsrq]rrUsettingsrs(cdocutils.frontend Values rtoru}rv(Ufootnote_backlinksrwKUrecord_dependenciesrxNU rfc_base_urlryUhttp://tools.ietf.org/html/rzU tracebackr{Upep_referencesr|NUstrip_commentsr}NU toc_backlinksr~hU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh3NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUS/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/deprecation.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]rUfile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhhchh;hZhVuUsubstitution_namesr}rh!h-h#}r(h%]h(]h']Usourcehh&]h*]uU footnotesr]rUrefidsr}rub.PKHDD)i-i-6celery-2.0-archived/.doctrees/internals/events.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X worker eventsqNX task eventsqNUcontentsqNXlist of worker eventsq NuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU worker-eventsqhU task-eventsqhUcontentsqh Ulist-of-worker-eventsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXN/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/events.rstq q!}q"bUtagnameq#Usectionq$U attributesq%}q&(Udupnamesq']Uclassesq(]Ubackrefsq)]Uidsq*]q+haUnamesq,]q-h auUlineq.KUdocumentq/hh]q0(cdocutils.nodes title q1)q2}q3(hXList of Worker Eventsq4hhhh!h#Utitleq5h%}q6(h']h(]h)]h*]h,]uh.Kh/hh]q7cdocutils.nodes Text q8XList of Worker Eventsq9q:}q;(hh4hh2ubaubcdocutils.nodes paragraph q<)q=}q>(hXlThis is the list of events sent by the worker. The monitor uses these to visualize the state of the cluster.q?hhhh!h#U paragraphq@h%}qA(h']h(]h)]h*]h,]uh.Kh/hh]qBh8XlThis is the list of events sent by the worker. The monitor uses these to visualize the state of the cluster.qCqD}qE(hh?hh=ubaubcdocutils.nodes topic qF)qG}qH(hUhhhh!h#UtopicqIh%}qJ(h']h(]qK(UcontentsqLUlocalqMeh)]h*]qNhah,]qOhauh.K h/hh]qPcdocutils.nodes bullet_list qQ)qR}qS(hUhhGhNh#U bullet_listqTh%}qU(h']h(]h)]h*]h,]uh.Nh/hh]qV(cdocutils.nodes list_item qW)qX}qY(hUh%}qZ(h']h(]h)]h*]h,]uhhRh]q[h<)q\}q](hUh%}q^(h']h(]h)]h*]h,]uhhXh]q_cdocutils.nodes reference q`)qa}qb(hUh%}qc(h*]qdUid1qeah)]h']h(]h,]Urefidhuhh\h]qfh8X Task Eventsqgqh}qi(hX Task Eventsqjhhaubah#U referenceqkubah#h@ubah#U list_itemqlubhW)qm}qn(hUh%}qo(h']h(]h)]h*]h,]uhhRh]qph<)qq}qr(hUh%}qs(h']h(]h)]h*]h,]uhhmh]qth`)qu}qv(hUh%}qw(h*]qxUid2qyah)]h']h(]h,]Urefidhuhhqh]qzh8X Worker Eventsq{q|}q}(hX Worker Eventsq~hhuubah#hkubah#h@ubah#hlubeubaubh)q}q(hUhhhh!h#h$h%}q(h']h(]h)]h*]qhah,]qhauh.K h/hh]q(h1)q}q(hhjhhhh!h#h5h%}q(h*]h)]h']h(]h,]Urefidqheuh.K h/hh]qh8X Task Eventsqq}q(hhjhhubaubhQ)q}q(hUhhhh!h#hTh%}q(UbulletqX*h*]h)]h']h(]h,]uh.Kh/hh]q(hW)q}q(hXttask-received(uuid, name, args, kwargs, retries, eta, hostname, timestamp) Sent when the worker receives a task. hhhh!h#hlh%}q(h']h(]h)]h*]h,]uh.Nh/hh]q(h<)q}q(hXJtask-received(uuid, name, args, kwargs, retries, eta, hostname, timestamp)qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh]qh8XJtask-received(uuid, name, args, kwargs, retries, eta, hostname, timestamp)qq}q(hhhhubaubcdocutils.nodes block_quote q)q}q(hUh%}q(h']h(]h)]h*]h,]uhhh]qh<)q}q(hX%Sent when the worker receives a task.qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh]qh8X%Sent when the worker receives a task.qq}q(hhhhubaubah#U block_quotequbeubhW)q}q(hXZtask-started(uuid, hostname, timestamp) Sent just before the worker executes the task. hhhh!h#hlh%}q(h']h(]h)]h*]h,]uh.Nh/hh]q(h<)q}q(hX'task-started(uuid, hostname, timestamp)qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh]qh8X'task-started(uuid, hostname, timestamp)qq}q(hhhhubaubh)q}q(hUh%}q(h']h(]h)]h*]h,]uhhh]qh<)q}q(hX.Sent just before the worker executes the task.qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh]qh8X.Sent just before the worker executes the task.qq}q(hhhhubaubah#hubeubhW)q}q(hXtask-succeeded(uuid, result, runtime, hostname, timestamp) Sent if the task executed successfully. Runtime is the time it took to execute the task using the pool. (Time starting from the task is sent to the pool, and ending when the pool result handlers callback is called). hhhh!h#hlh%}q(h']h(]h)]h*]h,]uh.Nh/hh]q(h<)q}q(hX:task-succeeded(uuid, result, runtime, hostname, timestamp)qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh]qh8X:task-succeeded(uuid, result, runtime, hostname, timestamp)qͅq}q(hhhhubaubh)q}q(hUh%}q(h']h(]h)]h*]h,]uhhh]qh<)q}q(hXSent if the task executed successfully. Runtime is the time it took to execute the task using the pool. (Time starting from the task is sent to the pool, and ending when the pool result handlers callback is called).qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh]qh8XSent if the task executed successfully. Runtime is the time it took to execute the task using the pool. (Time starting from the task is sent to the pool, and ending when the pool result handlers callback is called).qمq}q(hhhhubaubah#hubeubhW)q}q(hXjtask-failed(uuid, exception, traceback, hostname, timestamp) Sent if the execution of the task failed. hhhh!h#hlh%}q(h']h(]h)]h*]h,]uh.Nh/hh]q(h<)q}q(hX<task-failed(uuid, exception, traceback, hostname, timestamp)qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.Kh]qh8X<task-failed(uuid, exception, traceback, hostname, timestamp)q允q}q(hhhhubaubh)q}q(hUh%}q(h']h(]h)]h*]h,]uhhh]qh<)q}q(hX)Sent if the execution of the task failed.qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.K h]qh8X)Sent if the execution of the task failed.qq}q(hhhhubaubah#hubeubhW)q}q(hXxtask-revoked(uuid) Sent if the task has been revoked (Note that this is likely to be sent by more than one worker) hhhh!h#hlh%}q(h']h(]h)]h*]h,]uh.Nh/hh]q(h<)q}q(hXtask-revoked(uuid)qhhhh!h#h@h%}q(h']h(]h)]h*]h,]uh.K"h]qh8Xtask-revoked(uuid)qq}q(hhhhubaubh)r}r(hUh%}r(h']h(]h)]h*]h,]uhhh]rh<)r}r(hX_Sent if the task has been revoked (Note that this is likely to be sent by more than one worker)rhjhh!h#h@h%}r(h']h(]h)]h*]h,]uh.K$h]rh8X_Sent if the task has been revoked (Note that this is likely to be sent by more than one worker)r r }r (hjhjubaubah#hubeubhW)r }r (hXtask-retried(uuid, exception, traceback, hostname, delay, timestamp) Sent if the task failed, but will be retried in the future. (**NOT IMPLEMENTED**) hhhh!h#hlh%}r(h']h(]h)]h*]h,]uh.Nh/hh]r(h<)r}r(hXDtask-retried(uuid, exception, traceback, hostname, delay, timestamp)rhj hh!h#h@h%}r(h']h(]h)]h*]h,]uh.K'h]rh8XDtask-retried(uuid, exception, traceback, hostname, delay, timestamp)rr}r(hjhjubaubh)r}r(hUh%}r(h']h(]h)]h*]h,]uhj h]rh<)r}r(hXQSent if the task failed, but will be retried in the future. (**NOT IMPLEMENTED**)hjhh!h#h@h%}r(h']h(]h)]h*]h,]uh.K)h]r(h8X=Sent if the task failed, but will be retried in the future. (r r!}r"(hX=Sent if the task failed, but will be retried in the future. (hjubcdocutils.nodes strong r#)r$}r%(hX**NOT IMPLEMENTED**h%}r&(h']h(]h)]h*]h,]uhjh]r'h8XNOT IMPLEMENTEDr(r)}r*(hUhj$ubah#Ustrongr+ubh8X)r,}r-(hX)hjubeubah#hubeubeubeubh)r.}r/(hUhhhh!h#h$h%}r0(h']h(]h)]h*]r1hah,]r2hauh.K-h/hh]r3(h1)r4}r5(hh~hj.hh!h#h5h%}r6(h*]h)]h']h(]h,]hhyuh.K-h/hh]r7h8X Worker Eventsr8r9}r:(hh~hj4ubaubhQ)r;}r<(hUhj.hh!h#hTh%}r=(hX*h*]h)]h']h(]h,]uh.K/h/hh]r>(hW)r?}r@(hX\worker-online(hostname, timestamp) The worker has connected to the broker and is online. hj;hh!h#hlh%}rA(h']h(]h)]h*]h,]uh.Nh/hh]rB(h<)rC}rD(hX"worker-online(hostname, timestamp)rEhj?hh!h#h@h%}rF(h']h(]h)]h*]h,]uh.K/h]rGh8X"worker-online(hostname, timestamp)rHrI}rJ(hjEhjCubaubh)rK}rL(hUh%}rM(h']h(]h)]h*]h,]uhj?h]rNh<)rO}rP(hX5The worker has connected to the broker and is online.rQhjKhh!h#h@h%}rR(h']h(]h)]h*]h,]uh.K1h]rSh8X5The worker has connected to the broker and is online.rTrU}rV(hjQhjOubaubah#hubeubhW)rW}rX(hXworker-heartbeat(hostname, timestamp) Sent every minute, if the worker has not sent a heartbeat in 2 minutes, it's considered to be offline. hj;hh!h#hlh%}rY(h']h(]h)]h*]h,]uh.Nh/hh]rZ(h<)r[}r\(hX%worker-heartbeat(hostname, timestamp)r]hjWhh!h#h@h%}r^(h']h(]h)]h*]h,]uh.K3h]r_h8X%worker-heartbeat(hostname, timestamp)r`ra}rb(hj]hj[ubaubh)rc}rd(hUh%}re(h']h(]h)]h*]h,]uhjWh]rfh<)rg}rh(hXfSent every minute, if the worker has not sent a heartbeat in 2 minutes, it's considered to be offline.rihjchh!h#h@h%}rj(h']h(]h)]h*]h,]uh.K5h]rkh8XfSent every minute, if the worker has not sent a heartbeat in 2 minutes, it's considered to be offline.rlrm}rn(hjihjgubaubah#hubeubhW)ro}rp(hXSworker-offline(hostname, timestamp) The worker has disconnected from the broker.hj;hh!h#hlh%}rq(h']h(]h)]h*]h,]uh.Nh/hh]rr(h<)rs}rt(hX#worker-offline(hostname, timestamp)ruhjohh!h#h@h%}rv(h']h(]h)]h*]h,]uh.K8h]rwh8X#worker-offline(hostname, timestamp)rxry}rz(hjuhjsubaubh)r{}r|(hUh%}r}(h']h(]h)]h*]h,]uhjoh]r~h<)r}r(hX,The worker has disconnected from the broker.rhj{hh!h#h@h%}r(h']h(]h)]h*]h,]uh.K:h]rh8X,The worker has disconnected from the broker.rr}r(hjhjubaubah#hubeubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh/hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh5NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUN/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/events.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhhhyhuhehahj.hhGuUsubstitution_namesr}rh#h/h%}r(h']h*]h)]Usourceh!h(]h,]uU footnotesr]rUrefidsr}rub.PKHDDP~ > >6celery-2.0-archived/.doctrees/internals/worker.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X eta_scheduleqNX ready_queueqNXschedulecontrollerqNX introductionq NXtaskpoolq NXmediatorq NXinternals: the workerq NXdata structuresq NX componentsqNXcarrotlistenerqNUcontentsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU eta-scheduleqhU ready-queueqhUschedulecontrollerqh U introductionqh Utaskpoolqh Umediatorqh Uinternals-the-workerq h Udata-structuresq!hU componentsq"hUcarrotlistenerq#hUcontentsq$uUchildrenq%]q&cdocutils.nodes section q')q(}q)(U rawsourceq*UUparentq+hUsourceq,cdocutils.nodes reprunicode q-XN/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/worker.rstq.q/}q0bUtagnameq1Usectionq2U attributesq3}q4(Udupnamesq5]Uclassesq6]Ubackrefsq7]Uidsq8]q9h aUnamesq:]q;h auUlineq(cdocutils.nodes title q?)q@}qA(h*XInternals: The workerqBh+h(h,h/h1UtitleqCh3}qD(h5]h6]h7]h8]h:]uh(h8]h7]h5]h6]h:]jhuh(h*Uh+jh,h/h1h2h3}r?(h5]h6]h7]h8]r@hah:]rAh auhUcurrent_sourceq?NU decorationq@NUautofootnote_startqAKUnameidsqB}qC(hUtasksqDhUcelery-backends-baseqEhUcelery-executeqFh Ucelery-worker-revokeqGh U celerybeatqHh Ucelery-utils-infoqIh UcontentsqJh Ucelery-task-builtinsqKhU celery-eventsqLhU configurationqMhUcelery-worker-bucketsqNhU'celery-loaders-base-loader-base-classesqOhUloadersqPhU celery-logqQhUcelery-backends-databaseqRhU celery-utilsqShUcelery-worker-heartbeatqThUeventsqUhUcelery-backendsqVhUcelery-task-controlqWhUcelery-worker-listenerqXhU celery-workerqYhUcelery-worker-poolqZhUcelery-datastructuresq[hUcelery-messagingq\hUcelery-decoratorsq]h Uworkerq^h!U miscellaneousq_h"Ucelery-backends-amqpq`h#Ucelery-task-httpqah$Ucelery-task-baseqbh%Ucelery-loadersqch&Ucelery-exceptionsqdh'Uloggingqeh(U executionqfh)Ucelery-worker-controlqgh*U celery-taskqhh+U module-indexqih,Ucelery-worker-jobqjh-Ucelery-platformqkh.Ucelery-utils-patchqlh/U celery-confqmh0Ucelery-registryqnh1U celery-resultqoh2U celery-beatqph3Ucelery-worker-schedulerqqh4Uresult-backendsqrh5Ucelery-worker-controllersqsh6U celery-statesqth7Ucelery-execute-tracequh8U messagingqvh9U)celery-loaders-default-the-default-loaderqwh:Ucelery-utils-compatqxuUchildrenqy]qzcdocutils.nodes section q{)q|}q}(U rawsourceq~UUparentqhUsourceqcdocutils.nodes reprunicode qXS/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/moduleindex.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq]qhiaUnamesq]qh+auUlineqKUdocumentqhhy]q(cdocutils.nodes title q)q}q(h~X Module Indexqhh|hhhUtitleqh}q(h]h]h]h]h]uhKhhhy]qcdocutils.nodes Text qX Module Indexqq}q(h~hhhubaubcdocutils.nodes topic q)q}q(h~Uhh|hhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h]qhJah]qh auhKhhhy]qcdocutils.nodes bullet_list q)q}q(h~UhhhNhU bullet_listqh}q(h]h]h]h]h]uhNhhhy]q(cdocutils.nodes list_item q)q}q(h~Uh}q(h]h]h]h]h]uhhhy]q(cdocutils.nodes paragraph q)q}q(h~Uh}q(h]h]h]h]h]uhhhy]qcdocutils.nodes reference q)q}q(h~Uh}q(h]qUid1qah]h]h]h]Urefidh^uhhhy]qhXWorkerqq}q(h~XWorkerqhhubahU referencequbahU paragraphqubh)q}q(h~Uh}q(h]h]h]h]h]uhhhy]q(h)q}q(h~Uh}q(h]h]h]h]h]uhhhy]qh)q}q(h~Uh}q(h]h]h]h]h]uhhhy]qh)q}q(h~Uh}q(h]qUid2qah]h]h]h]UrefidhYuhhhy]qhX celery.workerq؅q}q(h~X celery.workerqhhubahhubahhubahU list_itemqubh)q}q(h~Uh}q(h]h]h]h]h]uhhhy]qh)q}q(h~Uh}q(h]h]h]h]h]uhhhy]qh)q}q(h~Uh}q(h]qUid3qah]h]h]h]Urefidhjuhhhy]qhXcelery.worker.jobq녁q}q(h~Xcelery.worker.jobqhhubahhubahhubahhubh)q}q(h~Uh}q(h]h]h]h]h]uhhhy]qh)q}q(h~Uh}q(h]h]h]h]h]uhhhy]qh)q}q(h~Uh}q(h]qUid4qah]h]h]h]UrefidhZuhhhy]qhXcelery.worker.poolqq}q(h~Xcelery.worker.poolrhhubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r }r (h~Uh}r (h]r Uid5r ah]h]h]h]UrefidhXuhjhy]rhXcelery.worker.listenerrr}r(h~Xcelery.worker.listenerrhj ubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid6rah]h]h]h]Urefidhsuhjhy]r hXcelery.worker.controllersr!r"}r#(h~Xcelery.worker.controllersr$hjubahhubahhubahhubh)r%}r&(h~Uh}r'(h]h]h]h]h]uhhhy]r(h)r)}r*(h~Uh}r+(h]h]h]h]h]uhj%hy]r,h)r-}r.(h~Uh}r/(h]r0Uid7r1ah]h]h]h]Urefidhquhj)hy]r2hXcelery.worker.schedulerr3r4}r5(h~Xcelery.worker.schedulerr6hj-ubahhubahhubahhubh)r7}r8(h~Uh}r9(h]h]h]h]h]uhhhy]r:h)r;}r<(h~Uh}r=(h]h]h]h]h]uhj7hy]r>h)r?}r@(h~Uh}rA(h]rBUid8rCah]h]h]h]UrefidhNuhj;hy]rDhXcelery.worker.bucketsrErF}rG(h~Xcelery.worker.bucketsrHhj?ubahhubahhubahhubh)rI}rJ(h~Uh}rK(h]h]h]h]h]uhhhy]rLh)rM}rN(h~Uh}rO(h]h]h]h]h]uhjIhy]rPh)rQ}rR(h~Uh}rS(h]rTUid9rUah]h]h]h]UrefidhTuhjMhy]rVhXcelery.worker.heartbeatrWrX}rY(h~Xcelery.worker.heartbeatrZhjQubahhubahhubahhubh)r[}r\(h~Uh}r](h]h]h]h]h]uhhhy]r^h)r_}r`(h~Uh}ra(h]h]h]h]h]uhj[hy]rbh)rc}rd(h~Uh}re(h]rfUid10rgah]h]h]h]UrefidhGuhj_hy]rhhXcelery.worker.revokerirj}rk(h~Xcelery.worker.revokerlhjcubahhubahhubahhubh)rm}rn(h~Uh}ro(h]h]h]h]h]uhhhy]rph)rq}rr(h~Uh}rs(h]h]h]h]h]uhjmhy]rth)ru}rv(h~Uh}rw(h]rxUid11ryah]h]h]h]Urefidhguhjqhy]rzhXcelery.worker.controlr{r|}r}(h~Xcelery.worker.controlr~hjuubahhubahhubahhubehhubehhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid12rah]h]h]h]UrefidhDuhjhy]rhXTasksrr}r(h~XTasksrhjubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid13rah]h]h]h]Urefidh]uhjhy]rhXcelery.decoratorsrr}r(h~Xcelery.decoratorsrhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid14rah]h]h]h]Urefidhnuhjhy]rhXcelery.registryrr}r(h~Xcelery.registryrhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid15rah]h]h]h]Urefidhhuhjhy]rhX celery.taskrr}r(h~X celery.taskrhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid16rah]h]h]h]Urefidhbuhjhy]rhXcelery.task.baserr}r(h~Xcelery.task.baserhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid17rah]h]h]h]Urefidhauhjhy]rhXcelery.task.httprr}r(h~Xcelery.task.httprhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid18rah]h]h]h]UrefidhWuhjhy]rhXcelery.task.controlrr}r(h~Xcelery.task.controlrhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r }r (h~Uh}r (h]r Uid19r ah]h]h]h]UrefidhKuhjhy]rhXcelery.task.builtinsrr}r(h~Xcelery.task.builtinsrhj ubahhubahhubahhubehhubehhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid20rah]h]h]h]Urefidhfuhjhy]r hX Executionr!r"}r#(h~X Executionr$hjubahhubahhubh)r%}r&(h~Uh}r'(h]h]h]h]h]uhjhy]r((h)r)}r*(h~Uh}r+(h]h]h]h]h]uhj%hy]r,h)r-}r.(h~Uh}r/(h]h]h]h]h]uhj)hy]r0h)r1}r2(h~Uh}r3(h]r4Uid21r5ah]h]h]h]UrefidhFuhj-hy]r6hXcelery.executer7r8}r9(h~Xcelery.executer:hj1ubahhubahhubahhubh)r;}r<(h~Uh}r=(h]h]h]h]h]uhj%hy]r>h)r?}r@(h~Uh}rA(h]h]h]h]h]uhj;hy]rBh)rC}rD(h~Uh}rE(h]rFUid22rGah]h]h]h]Urefidhuuhj?hy]rHhXcelery.execute.tracerIrJ}rK(h~Xcelery.execute.tracerLhjCubahhubahhubahhubh)rM}rN(h~Uh}rO(h]h]h]h]h]uhj%hy]rPh)rQ}rR(h~Uh}rS(h]h]h]h]h]uhjMhy]rTh)rU}rV(h~Uh}rW(h]rXUid23rYah]h]h]h]UrefidhouhjQhy]rZhX celery.resultr[r\}r](h~X celery.resultr^hjUubahhubahhubahhubh)r_}r`(h~Uh}ra(h]h]h]h]h]uhj%hy]rbh)rc}rd(h~Uh}re(h]h]h]h]h]uhj_hy]rfh)rg}rh(h~Uh}ri(h]rjUid24rkah]h]h]h]Urefidhtuhjchy]rlhX celery.statesrmrn}ro(h~X celery.statesrphjgubahhubahhubahhubehhubehhubh)rq}rr(h~Uh}rs(h]h]h]h]h]uhhhy]rt(h)ru}rv(h~Uh}rw(h]h]h]h]h]uhjqhy]rxh)ry}rz(h~Uh}r{(h]r|Uid25r}ah]h]h]h]Urefidhvuhjuhy]r~hX Messagingrr}r(h~X Messagingrhjyubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjqhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid26rah]h]h]h]Urefidh\uhjhy]rhXcelery.messagingrr}r(h~Xcelery.messagingrhjubahhubahhubahhubahhubehhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid27rah]h]h]h]Urefidhruhjhy]rhXResult backendsrr}r(h~XResult backendsrhjubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid28rah]h]h]h]UrefidhVuhjhy]rhXcelery.backendsrr}r(h~Xcelery.backendsrhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid29rah]h]h]h]UrefidhEuhjhy]rhXcelery.backends.baserr}r(h~Xcelery.backends.baserhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid30rah]h]h]h]Urefidh`uhjhy]rhXcelery.backends.amqprr}r(h~Xcelery.backends.amqprhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid31rah]h]h]h]UrefidhRuhjhy]rhXcelery.backends.databaserr}r(h~Xcelery.backends.databaserhjubahhubahhubahhubehhubehhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid32rah]h]h]h]UrefidhPuhjhy]rhXLoadersrr}r(h~XLoadersrhjubahhubahhubh)r }r (h~Uh}r (h]h]h]h]h]uhjhy]r (h)r }r(h~Uh}r(h]h]h]h]h]uhj hy]rh)r}r(h~Uh}r(h]h]h]h]h]uhj hy]rh)r}r(h~Uh}r(h]rUid33rah]h]h]h]Urefidhcuhjhy]rhXcelery.loadersrr}r(h~Xcelery.loadersrhjubahhubahhubahhubh)r}r (h~Uh}r!(h]h]h]h]h]uhj hy]r"h)r#}r$(h~Uh}r%(h]h]h]h]h]uhjhy]r&h)r'}r((h~Uh}r)(h]r*Uid34r+ah]h]h]h]UrefidhOuhj#hy]r,hX)celery.loaders.base - Loader base classesr-r.}r/(h~X)celery.loaders.base - Loader base classesr0hj'ubahhubahhubahhubh)r1}r2(h~Uh}r3(h]h]h]h]h]uhj hy]r4h)r5}r6(h~Uh}r7(h]h]h]h]h]uhj1hy]r8h)r9}r:(h~Uh}r;(h]r<Uid35r=ah]h]h]h]Urefidhwuhj5hy]r>hX+celery.loaders.default - The default loaderr?r@}rA(h~X+celery.loaders.default - The default loaderrBhj9ubahhubahhubahhubehhubehhubh)rC}rD(h~Uh}rE(h]h]h]h]h]uhhhy]rF(h)rG}rH(h~Uh}rI(h]h]h]h]h]uhjChy]rJh)rK}rL(h~Uh}rM(h]rNUid36rOah]h]h]h]UrefidhHuhjGhy]rPhX CeleryBeatrQrR}rS(h~X CeleryBeatrThjKubahhubahhubh)rU}rV(h~Uh}rW(h]h]h]h]h]uhjChy]rXh)rY}rZ(h~Uh}r[(h]h]h]h]h]uhjUhy]r\h)r]}r^(h~Uh}r_(h]h]h]h]h]uhjYhy]r`h)ra}rb(h~Uh}rc(h]rdUid37reah]h]h]h]Urefidhpuhj]hy]rfhX celery.beatrgrh}ri(h~X celery.beatrjhjaubahhubahhubahhubahhubehhubh)rk}rl(h~Uh}rm(h]h]h]h]h]uhhhy]rn(h)ro}rp(h~Uh}rq(h]h]h]h]h]uhjkhy]rrh)rs}rt(h~Uh}ru(h]rvUid38rwah]h]h]h]UrefidhUuhjohy]rxhXEventsryrz}r{(h~XEventsr|hjsubahhubahhubh)r}}r~(h~Uh}r(h]h]h]h]h]uhjkhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhj}hy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid39rah]h]h]h]UrefidhLuhjhy]rhX celery.eventsrr}r(h~X celery.eventsrhjubahhubahhubahhubahhubehhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid40rah]h]h]h]Urefidheuhjhy]rhXLoggingrr}r(h~XLoggingrhjubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid41rah]h]h]h]UrefidhQuhjhy]rhX celery.logrr}r(h~X celery.logrhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid42rah]h]h]h]Urefidhluhjhy]rhXcelery.utils.patchrr}r(h~Xcelery.utils.patchrhjubahhubahhubahhubehhubehhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid43rah]h]h]h]UrefidhMuhjhy]rhX Configurationrr}r(h~X Configurationrhjubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid44rah]h]h]h]Urefidhmuhjhy]rhX celery.confrr}r(h~X celery.confrhjubahhubahhubahhubahhubehhubh)r}r(h~Uh}r(h]h]h]h]h]uhhhy]r(h)r}r(h~Uh}r(h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]rUid45rah]h]h]h]Urefidh_uhjhy]rhX Miscellaneousrr}r(h~X Miscellaneousrhjubahhubahhubh)r}r(h~Uh}r (h]h]h]h]h]uhjhy]r (h)r }r (h~Uh}r (h]h]h]h]h]uhjhy]rh)r}r(h~Uh}r(h]h]h]h]h]uhj hy]rh)r}r(h~Uh}r(h]rUid46rah]h]h]h]Urefidh[uhjhy]rhXcelery.datastructuresrr}r(h~Xcelery.datastructuresrhjubahhubahhubahhubh)r}r(h~Uh}r(h]h]h]h]h]uhjhy]r h)r!}r"(h~Uh}r#(h]h]h]h]h]uhjhy]r$h)r%}r&(h~Uh}r'(h]r(Uid47r)ah]h]h]h]Urefidhduhj!hy]r*hXcelery.exceptionsr+r,}r-(h~Xcelery.exceptionsr.hj%ubahhubahhubahhubh)r/}r0(h~Uh}r1(h]h]h]h]h]uhjhy]r2h)r3}r4(h~Uh}r5(h]h]h]h]h]uhj/hy]r6h)r7}r8(h~Uh}r9(h]r:Uid48r;ah]h]h]h]Urefidhkuhj3hy]r<hXcelery.platformr=r>}r?(h~Xcelery.platformr@hj7ubahhubahhubahhubh)rA}rB(h~Uh}rC(h]h]h]h]h]uhjhy]rDh)rE}rF(h~Uh}rG(h]h]h]h]h]uhjAhy]rHh)rI}rJ(h~Uh}rK(h]rLUid49rMah]h]h]h]UrefidhSuhjEhy]rNhX celery.utilsrOrP}rQ(h~X celery.utilsrRhjIubahhubahhubahhubh)rS}rT(h~Uh}rU(h]h]h]h]h]uhjhy]rVh)rW}rX(h~Uh}rY(h]h]h]h]h]uhjShy]rZh)r[}r\(h~Uh}r](h]r^Uid50r_ah]h]h]h]UrefidhIuhjWhy]r`hXcelery.utils.inforarb}rc(h~Xcelery.utils.infordhj[ubahhubahhubahhubh)re}rf(h~Uh}rg(h]h]h]h]h]uhjhy]rhh)ri}rj(h~Uh}rk(h]h]h]h]h]uhjehy]rlh)rm}rn(h~Uh}ro(h]rpUid51rqah]h]h]h]Urefidhxuhjihy]rrhXcelery.utils.compatrsrt}ru(h~Xcelery.utils.compatrvhjmubahhubahhubahhubehhubehhubeubaubh{)rw}rx(h~Uhh|hhhhh}ry(h]h]h]h]rzh^ah]r{h auhK hhhy]r|(h)r}}r~(h~hhjwhhhhh}r(h]h]h]h]h]UrefidrhuhK hhhy]rhXWorkerrr}r(h~hhj}ubaubh{)r}r(h~Uhjwhhhhh}r(h]h]h]h]rhYah]rhauhK hhhy]r(h)r}r(h~hhjhhhhh}r(h]h]h]h]h]jhuhK hhhy]rhX celery.workerrr}r(h~hhjubaubh)r}r(h~Uhjhhhhh}r(UbulletrX*h]h]h]h]h]uhKhhhy]rh)r}r(h~X':class:`~celery.worker.WorkController` hjhhhhh}r(h]h]h]h]h]uhNhhhy]rh)r}r(h~X&:class:`~celery.worker.WorkController`rhjhhhhh}r(h]h]h]h]h]uhKhy]rcsphinx.addnodes pending_xref r)r}r(h~jhjhhhU pending_xrefrh}r(UreftypeXclassUrefwarnrU reftargetrXcelery.worker.WorkControllerU refdomainXpyrh]h]U refexplicith]h]h]UrefdocrXinternals/moduleindexrUpy:classrNU py:modulerNuhKhy]rcdocutils.nodes literal r)r}r(h~jh}r(h]h]r(UxrefrjXpy-classreh]h]h]uhjhy]rhXWorkControllerrr}r(h~UhjubahUliteralrubaubaubaubaubh)r}r(h~XThis is the worker's main process. It starts and stops all the components required by the worker: Pool, Mediator, Scheduler, ClockService, and Listener.rhjhhhhh}r(h]h]h]h]h]uhKhhhy]rhXThis is the worker's main process. It starts and stops all the components required by the worker: Pool, Mediator, Scheduler, ClockService, and Listener.rr}r(h~jhjubaubh)r}r(h~Uhjhhhhh}r(jX*h]h]h]h]h]uhKhhhy]rh)r}r(h~X+:func:`~celery.worker.process_initializer` hjhhhhh}r(h]h]h]h]h]uhNhhhy]rh)r}r(h~X*:func:`~celery.worker.process_initializer`rhjhhhhh}r(h]h]h]h]h]uhKhy]rj)r}r(h~jhjhhhjh}r(UreftypeXfuncjjX!celery.worker.process_initializerU refdomainXpyrh]h]U refexplicith]h]h]jjjNjNuhKhy]rj)r}r(h~jh}r(h]h]r(jjXpy-funcreh]h]h]uhjhy]rhXprocess_initializer()rr}r(h~Uhjubahjubaubaubaubaubh)r}r(h~XrThis is the function used to initialize pool processes. It sets up loggers and imports required task modules, etc.rhjhhhhh}r(h]h]h]h]h]uhKhhhy]rhXrThis is the function used to initialize pool processes. It sets up loggers and imports required task modules, etc.rr}r(h~jhjubaubeubh{)r}r(h~Uhjwhhhhh}r(h]h]h]h]rhjah]rh,auhKhhhy]r(h)r}r(h~hhjhhhhh}r(h]h]h]h]h]jhuhKhhhy]rhXcelery.worker.jobrr}r(h~hhjubaubh)r}r(h~Uhjhhhhh}r(jX*h]h]h]h]h]uhKhhhy]rh)r}r(h~X(:class:`~celery.worker.job.TaskRequest` hjhhhhh}r(h]h]h]h]h]uhNhhhy]rh)r}r(h~X':class:`~celery.worker.job.TaskRequest`rhjhhhhh}r(h]h]h]h]h]uhKhy]rj)r}r(h~jhjhhhjh}r(UreftypeXclassjjXcelery.worker.job.TaskRequestU refdomainXpyrh]h]U refexplicith]h]h]jjjNjNuhKhy]rj)r}r(h~jh}r(h]h]r(jjXpy-classreh]h]h]uhjhy]rhX TaskRequestr r }r (h~Uhjubahjubaubaubaubaubh)r }r (h~XA request to execute a task. Contains the task name, id, args and kwargs. Handles acknowledgement, execution, writing results to backends and error handling (including error e-mails)rhjhhhhh}r(h]h]h]h]h]uhKhhhy]rhXA request to execute a task. Contains the task name, id, args and kwargs. Handles acknowledgement, execution, writing results to backends and error handling (including error e-mails)rr}r(h~jhj ubaubeubh{)r}r(h~Uhjwhhhhh}r(h]h]h]h]rhZah]rhauhK"hhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jhuhK"hhhy]rhXcelery.worker.poolrr}r (h~jhjubaubaubh{)r!}r"(h~Uhjwhhhhh}r#(h]h]h]h]r$hXah]r%hauhK%hhhy]r&h)r'}r((h~jhj!hhhhh}r)(h]h]h]h]h]jj uhK%hhhy]r*hXcelery.worker.listenerr+r,}r-(h~jhj'ubaubaubh{)r.}r/(h~Uhjwhhhhh}r0(h]h]h]h]r1hsah]r2h5auhK(hhhy]r3h)r4}r5(h~j$hj.hhhhh}r6(h]h]h]h]h]jjuhK(hhhy]r7hXcelery.worker.controllersr8r9}r:(h~j$hj4ubaubaubh{)r;}r<(h~Uhjwhhhhh}r=(h]h]h]h]r>hqah]r?h3auhK+hhhy]r@h)rA}rB(h~j6hj;hhhhh}rC(h]h]h]h]h]jj1uhK+hhhy]rDhXcelery.worker.schedulerrErF}rG(h~j6hjAubaubaubh{)rH}rI(h~Uhjwhhhhh}rJ(h]h]h]h]rKhNah]rLhauhK.hhhy]rMh)rN}rO(h~jHhjHhhhhh}rP(h]h]h]h]h]jjCuhK.hhhy]rQhXcelery.worker.bucketsrRrS}rT(h~jHhjNubaubaubh{)rU}rV(h~Uhjwhhhhh}rW(h]h]h]h]rXhTah]rYhauhK1hhhy]rZh)r[}r\(h~jZhjUhhhhh}r](h]h]h]h]h]jjUuhK1hhhy]r^hXcelery.worker.heartbeatr_r`}ra(h~jZhj[ubaubaubh{)rb}rc(h~Uhjwhhhhh}rd(h]h]h]h]rehGah]rfh auhK4hhhy]rgh)rh}ri(h~jlhjbhhhhh}rj(h]h]h]h]h]jjguhK4hhhy]rkhXcelery.worker.revokerlrm}rn(h~jlhjhubaubaubh{)ro}rp(h~Uhjwhhhhh}rq(h]h]h]h]rrhgah]rsh)auhK7hhhy]rt(h)ru}rv(h~j~hjohhhhh}rw(h]h]h]h]h]jjyuhK7hhhy]rxhXcelery.worker.controlryrz}r{(h~j~hjuubaubh)r|}r}(h~Uhjohhhhh}r~(jX*h]h]h]h]h]uhK9hhhy]r(h)r}r(h~Xcelery.worker.registry hj|hhhhh}r(h]h]h]h]h]uhNhhhy]rh)r}r(h~Xcelery.worker.registryrhjhhhhh}r(h]h]h]h]h]uhK9hy]rhXcelery.worker.registryrr}r(h~jhjubaubaubh)r}r(h~Xcelery.worker.builtins hj|hhhhh}r(h]h]h]h]h]uhNhhhy]rh)r}r(h~Xcelery.worker.builtinsrhjhhhhh}r(h]h]h]h]h]uhK;hy]rhXcelery.worker.builtinsrr}r(h~jhjubaubaubeubeubeubh{)r}r(h~Uhh|hhhhh}r(h]h]h]h]rhDah]rhauhK?hhhy]r(h)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhK?hhhy]rhXTasksrr}r(h~jhjubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rh]ah]rhauhKBhhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKBhhhy]rhXcelery.decoratorsrr}r(h~jhjubaubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhnah]rh0auhKEhhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKEhhhy]rhXcelery.registryrr}r(h~jhjubaubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhhah]rh*auhKHhhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKHhhhy]rhX celery.taskrr}r(h~jhjubaubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhbah]rh$auhKKhhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKKhhhy]rhXcelery.task.baserr}r(h~jhjubaubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhaah]rh#auhKNhhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKNhhhy]rhXcelery.task.httprr}r(h~jhjubaubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhWah]rhauhKQhhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKQhhhy]rhXcelery.task.controlrr}r(h~jhjubaubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhKah]rh auhKThhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jj uhKThhhy]rhXcelery.task.builtinsrr}r(h~jhjubaubaubeubh{)r}r(h~Uhh|hhhhh}r(h]h]h]h]rhfah]rh(auhKWhhhy]r(h)r}r(h~j$hjhhhhh}r(h]h]h]h]h]jjuhKWhhhy]r hX Executionr r }r (h~j$hjubaubh{)r }r(h~Uhjhhhhh}r(h]h]h]h]rhFah]rhauhKZhhhy]rh)r}r(h~j:hj hhhhh}r(h]h]h]h]h]jj5uhKZhhhy]rhXcelery.executerr}r(h~j:hjubaubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhuah]rh7auhK]hhhy]rh)r }r!(h~jLhjhhhhh}r"(h]h]h]h]h]jjGuhK]hhhy]r#hXcelery.execute.tracer$r%}r&(h~jLhj ubaubaubh{)r'}r((h~Uhjhhhhh}r)(h]h]h]h]r*hoah]r+h1auhK`hhhy]r,h)r-}r.(h~j^hj'hhhhh}r/(h]h]h]h]h]jjYuhK`hhhy]r0hX celery.resultr1r2}r3(h~j^hj-ubaubaubh{)r4}r5(h~Uhjhhhhh}r6(h]h]h]h]r7htah]r8h6auhKchhhy]r9(h)r:}r;(h~jphj4hhhhh}r<(h]h]h]h]h]jjkuhKchhhy]r=hX celery.statesr>r?}r@(h~jphj:ubaubh)rA}rB(h~Xcelery.signalsrChj4hhhhh}rD(h]h]h]h]h]uhKehhhy]rEhXcelery.signalsrFrG}rH(h~jChjAubaubeubeubh{)rI}rJ(h~Uhh|hhhhh}rK(h]h]h]h]rLhvah]rMh8auhKhhhhy]rN(h)rO}rP(h~jhjIhhhhh}rQ(h]h]h]h]h]jj}uhKhhhhy]rRhX MessagingrSrT}rU(h~jhjOubaubh{)rV}rW(h~UhjIhhhhh}rX(h]h]h]h]rYh\ah]rZhauhKkhhhy]r[h)r\}r](h~jhjVhhhhh}r^(h]h]h]h]h]jjuhKkhhhy]r_hXcelery.messagingr`ra}rb(h~jhj\ubaubaubeubh{)rc}rd(h~Uhh|hhhhh}re(h]h]h]h]rfhrah]rgh4auhKnhhhy]rh(h)ri}rj(h~jhjchhhhh}rk(h]h]h]h]h]jjuhKnhhhy]rlhXResult backendsrmrn}ro(h~jhjiubaubh{)rp}rq(h~Uhjchhhhh}rr(h]h]h]h]rshVah]rthauhKqhhhy]ruh)rv}rw(h~jhjphhhhh}rx(h]h]h]h]h]jjuhKqhhhy]ryhXcelery.backendsrzr{}r|(h~jhjvubaubaubh{)r}}r~(h~Uhjchhhhh}r(h]h]h]h]rhEah]rhauhKthhhy]rh)r}r(h~jhj}hhhhh}r(h]h]h]h]h]jjuhKthhhy]rhXcelery.backends.baserr}r(h~jhjubaubaubh{)r}r(h~Uhjchhhhh}r(h]h]h]h]rh`ah]rh"auhKwhhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKwhhhy]rhXcelery.backends.amqprr}r(h~jhjubaubaubh{)r}r(h~Uhjchhhhh}r(h]h]h]h]rhRah]rhauhKzhhhy]rh)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKzhhhy]rhXcelery.backends.databaserr}r(h~jhjubaubaubeubh{)r}r(h~Uhh|hhhhh}r(h]h]h]h]rhPah]rhauhK}hhhy]r(h)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhK}hhhy]rhXLoadersrr}r(h~jhjubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhcah]rh%auhKhhhy]r(h)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKhhhy]rhXcelery.loadersrr}r(h~jhjubaubh)r}r(h~XELoader autodetection, and working with the currently selected loader.rhjhhhhh}r(h]h]h]h]h]uhKhhhy]rhXELoader autodetection, and working with the currently selected loader.rr}r(h~jhjubaubeubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhOah]rhauhKhhhy]rh)r}r(h~j0hjhhhhh}r(h]h]h]h]h]jj+uhKhhhy]rhX)celery.loaders.base - Loader base classesrr}r(h~j0hjubaubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhwah]rh9auhKhhhy]rh)r}r(h~jBhjhhhhh}r(h]h]h]h]h]jj=uhKhhhy]rhX+celery.loaders.default - The default loaderrr}r(h~jBhjubaubaubeubh{)r}r(h~Uhh|hhhhh}r(h]h]h]h]rhHah]rh auhKhhhy]r(h)r}r(h~jThjhhhhh}r(h]h]h]h]h]jjOuhKhhhy]rhX CeleryBeatrr}r(h~jThjubaubh{)r}r(h~Uhjhhhhh}r(h]h]h]h]rhpah]rh2auhKhhhy]rh)r}r(h~jjhjhhhhh}r(h]h]h]h]h]jjeuhKhhhy]rhX celery.beatrr}r(h~jjhjubaubaubeubh{)r}r(h~Uhh|hhhhh}r(h]h]h]h]rhUah]rhauhKhhhy]r(h)r}r(h~j|hjhhhhh}r(h]h]h]h]h]jjwuhKhhhy]rhXEventsrr}r(h~j|hjubaubh{)r}r(h~Uhjhhhhh}r (h]h]h]h]r hLah]r hauhKhhhy]r h)r }r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKhhhy]rhX celery.eventsrr}r(h~jhj ubaubaubeubh{)r}r(h~Uhh|hhhhh}r(h]h]h]h]rheah]rh'auhKhhhy]r(h)r}r(h~jhjhhhhh}r(h]h]h]h]h]jjuhKhhhy]rhXLoggingrr}r (h~jhjubaubh{)r!}r"(h~Uhjhhhhh}r#(h]h]h]h]r$hQah]r%hauhKhhhy]r&h)r'}r((h~jhj!hhhhh}r)(h]h]h]h]h]jjuhKhhhy]r*hX celery.logr+r,}r-(h~jhj'ubaubaubh{)r.}r/(h~Uhjhhhhh}r0(h]h]h]h]r1hlah]r2h.auhKhhhy]r3h)r4}r5(h~jhj.hhhhh}r6(h]h]h]h]h]jjuhKhhhy]r7hXcelery.utils.patchr8r9}r:(h~jhj4ubaubaubeubh{)r;}r<(h~Uhh|hhhhh}r=(h]h]h]h]r>hMah]r?hauhKhhhy]r@(h)rA}rB(h~jhj;hhhhh}rC(h]h]h]h]h]jjuhKhhhy]rDhX ConfigurationrErF}rG(h~jhjAubaubh{)rH}rI(h~Uhj;hhhhh}rJ(h]h]h]h]rKhmah]rLh/auhKhhhy]rMh)rN}rO(h~jhjHhhhhh}rP(h]h]h]h]h]jjuhKhhhy]rQhX celery.confrRrS}rT(h~jhjNubaubaubeubh{)rU}rV(h~Uhh|hhhhh}rW(h]h]h]h]rXh_ah]rYh!auhKhhhy]rZ(h)r[}r\(h~jhjUhhhhh}r](h]h]h]h]h]jjuhKhhhy]r^hX Miscellaneousr_r`}ra(h~jhj[ubaubh{)rb}rc(h~UhjUhhhhh}rd(h]h]h]h]reh[ah]rfhauhKhhhy]rgh)rh}ri(h~jhjbhhhhh}rj(h]h]h]h]h]jjuhKhhhy]rkhXcelery.datastructuresrlrm}rn(h~jhjhubaubaubh{)ro}rp(h~UhjUhhhhh}rq(h]h]h]h]rrhdah]rsh&auhKhhhy]rth)ru}rv(h~j.hjohhhhh}rw(h]h]h]h]h]jj)uhKhhhy]rxhXcelery.exceptionsryrz}r{(h~j.hjuubaubaubh{)r|}r}(h~UhjUhhhhh}r~(h]h]h]h]rhkah]rh-auhKhhhy]rh)r}r(h~j@hj|hhhhh}r(h]h]h]h]h]jj;uhKhhhy]rhXcelery.platformrr}r(h~j@hjubaubaubh{)r}r(h~UhjUhhhhh}r(h]h]h]h]rhSah]rhauhKhhhy]rh)r}r(h~jRhjhhhhh}r(h]h]h]h]h]jjMuhKhhhy]rhX celery.utilsrr}r(h~jRhjubaubaubh{)r}r(h~UhjUhhhhh}r(h]h]h]h]rhIah]rh auhKhhhy]rh)r}r(h~jdhjhhhhh}r(h]h]h]h]h]jj_uhKhhhy]rhXcelery.utils.inforr}r(h~jdhjubaubaubh{)r}r(h~UhjUhhhhh}r(h]h]h]h]rhxah]rh:auhKhhhy]rh)r}r(h~jvhjhhhhh}r(h]h]h]h]h]jjquhKhhhy]rhXcelery.utils.compatrr}r(h~jvhjubaubaubeubeubah~UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhhU current_linerNUtransform_messagesr]rUreporterrNUid_startrK4U autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhNUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUS/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/moduleindex.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledr U raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(jMjIj;j7j)j%jjjjjjhdjojjhSjjjhNjHhWjjjhgjojjhfjhFj hwjhUjh[jbjCj?jUjQjjj1j-hhj j hhhhhhh`jhOjhGjbhRjjqjmh]jhrjchMj;hjjhejh\jVhvjIhDjhqj;hcjhnjhmjHhtj4hIjhHjhLjjjhPjjgjcjyjuhbjjjjjjjjjjjjjhTjUh^jwhoj'hkj|hxjhKjhQj!hsj.hYjhEj}hih|hJhhXj!jwjsjjjOjKjejaj+j'j=j9jjjjjjjjhhjhVjpj_j[h_jUhpjhZjhajhujj j jjjjhlj.j5j1jjjYjUjGjCj}jyjkjgjjjjuUsubstitution_namesr}rhhh}r(h]h]h]Usourcehh]h]uU footnotesr]rUrefidsr}rub.PKHDD#yuuVcelery-2.0-archived/.doctrees/internals/reference/celery.utils.dispatch.signal.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X.celery.utils.dispatch.signal.Signal.disconnectqX-celery.utils.dispatch.signal.Signal.receiversqX/celery.utils.dispatch.signal.Signal.send_robustqX#celery.utils.dispatch.signal.Signalq X2signals: dispatcher - celery.utils.dispatch.signalq NX+celery.utils.dispatch.signal.Signal.connectq X(celery.utils.dispatch.signal.Signal.sendq Ucontentsq NuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h U/signals-dispatcher-celery-utils-dispatch-signalqh h h h h UcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceq cdocutils.nodes reprunicode q!Xn/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.dispatch.signal.rstq"q#}q$bUtagnameq%Usectionq&U attributesq'}q((Udupnamesq)]Uclassesq*]Ubackrefsq+]Uidsq,]q-haUnamesq.]q/h auUlineq0KUdocumentq1hh]q2(cdocutils.nodes title q3)q4}q5(hX2Signals: Dispatcher - celery.utils.dispatch.signalq6hhh h#h%Utitleq7h'}q8(h)]h*]h+]h,]h.]uh0Kh1hh]q9cdocutils.nodes Text q:X2Signals: Dispatcher - celery.utils.dispatch.signalq;q<}q=(hh6hh4ubaubcdocutils.nodes target q>)q?}q@(hUhhh U qAh%UtargetqBh'}qC(h)]h,]qDX#module-celery.utils.dispatch.signalqEah+]Uismodh*]h.]uh0Kh1hh]ubcsphinx.addnodes index qF)qG}qH(hUhhh hAh%UindexqIh'}qJ(h,]h+]h)]h*]h.]Uentries]qK(UsingleqLX%celery.utils.dispatch.signal (module)X#module-celery.utils.dispatch.signalUtqMauh0Kh1hh]ubcdocutils.nodes paragraph qN)qO}qP(hX Signal class.qQhhh X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/signal.py:docstring of celery.utils.dispatch.signalqRh%U paragraphqSh'}qT(h)]h*]h+]h,]h.]uh0Kh1hh]qUh:X Signal class.qVqW}qX(hhQhhOubaubhF)qY}qZ(hUhhh Nh%hIh'}q[(h,]h+]h)]h*]h.]Uentries]q\(hLX.Signal (class in celery.utils.dispatch.signal)h Utq]auh0Nh1hh]ubcsphinx.addnodes desc q^)q_}q`(hUhhh Nh%Udescqah'}qb(UnoindexqcUdomainqdXpyh,]h+]h)]h*]h.]UobjtypeqeXclassqfUdesctypeqghfuh0Nh1hh]qh(csphinx.addnodes desc_signature qi)qj}qk(hXSignal(providing_args=None)qlhh_h U qmh%Udesc_signatureqnh'}qo(h,]qph aUmoduleqqh!Xcelery.utils.dispatch.signalqrqs}qtbh+]h)]h*]h.]quh aUfullnameqvXSignalqwUclassqxUUfirstqyuh0Nh1hh]qz(csphinx.addnodes desc_annotation q{)q|}q}(hXclass hhjh hmh%Udesc_annotationq~h'}q(h)]h*]h+]h,]h.]uh0Nh1hh]qh:Xclass qq}q(hUhh|ubaubcsphinx.addnodes desc_addname q)q}q(hXcelery.utils.dispatch.signal.hhjh hmh%U desc_addnameqh'}q(h)]h*]h+]h,]h.]uh0Nh1hh]qh:Xcelery.utils.dispatch.signal.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhwhhjh hmh%U desc_nameqh'}q(h)]h*]h+]h,]h.]uh0Nh1hh]qh:XSignalqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhjh hmh%Udesc_parameterlistqh'}q(h)]h*]h+]h,]h.]uh0Nh1hh]qcsphinx.addnodes desc_parameter q)q}q(hXproviding_args=Noneh'}q(h)]h*]h+]h,]h.]uhhh]qh:Xproviding_args=Noneqq}q(hUhhubah%Udesc_parameterqubaubeubcsphinx.addnodes desc_content q)q}q(hUhh_h hmh%U desc_contentqh'}q(h)]h*]h+]h,]h.]uh0Nh1hh]q(hN)q}q(hXBase class for all signalsqhhh X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/signal.py:docstring of celery.utils.dispatch.signal.Signalqh%hSh'}q(h)]h*]h+]h,]h.]uh0Kh1hh]qh:XBase class for all signalsqq}q(hhhhubaubhF)q}q(hUhhh Nh%hIh'}q(h,]h+]h)]h*]h.]Uentries]q(hLX9receivers (celery.utils.dispatch.signal.Signal attribute)hUtqauh0Nh1hh]ubh^)q}q(hUhhh Nh%hah'}q(hchdXpyh,]h+]h)]h*]h.]heX attributeqhghuh0Nh1hh]q(hi)q}q(hX receiversqhhh hAh%hnh'}q(h,]qhahqXcelery.utils.dispatch.signalqh+]h)]h*]h.]qhahvXSignal.receivershxhwhyuh0Kh1hh]qh)q}q(hhhhh hAh%hh'}q(h)]h*]h+]h,]h.]uh0Kh1hh]qh:X receiversqʅq}q(hUhhubaubaubhi)q}q(hX)Internal attribute, holds a dictionary ofqhhh hAh%hnh'}q(h,]h+]h)]h*]h.]hyuh0Kh1hh]qh)q}q(hhhhh hAh%hh'}q(h)]h*]h+]h,]h.]uh0Kh1hh]qh:X)Internal attribute, holds a dictionary ofqօq}q(hUhhubaubaubhi)q}q(hX4``{receriverkey (id): weakref(receiver)}`` mappings.qhhh hAh%hnh'}q(h,]h+]h)]h*]h.]hyuh0Kh1hh]qh)q}q(hhhhh hAh%hh'}q(h)]h*]h+]h,]h.]uh0Kh1hh]qh:X4``{receriverkey (id): weakref(receiver)}`` mappings.q⅁q}q(hUhhubaubaubh)q}q(hUhhh hAh%hh'}q(h)]h*]h+]h,]h.]uh0Kh1hh]ubeubhF)q}q(hUhhh Nh%hIh'}q(h,]h+]h)]h*]h.]Uentries]q(hLX6connect() (celery.utils.dispatch.signal.Signal method)h Utqauh0Nh1hh]ubh^)q}q(hUhhh Nh%hah'}q(hchdXpyh,]h+]h)]h*]h.]heXmethodqhghuh0Nh1hh]q(hi)q}q(hXCSignal.connect(receiver, sender=None, weak=True, dispatch_uid=None)hhh hmh%hnh'}q(h,]qh ahqh!Xcelery.utils.dispatch.signalqq}qbh+]h)]h*]h.]qh ahvXSignal.connecthxhwhyuh0Nh1hh]q(h)q}q(hXconnecthhh hmh%hh'}q(h)]h*]h+]h,]h.]uh0Nh1hh]qh:Xconnectqr}r(hUhhubaubh)r}r(hUhhh hmh%hh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]r(h)r}r(hXreceiverh'}r(h)]h*]h+]h,]h.]uhjh]r h:Xreceiverr r }r (hUhjubah%hubh)r }r(hX sender=Noneh'}r(h)]h*]h+]h,]h.]uhjh]rh:X sender=Nonerr}r(hUhj ubah%hubh)r}r(hX weak=Trueh'}r(h)]h*]h+]h,]h.]uhjh]rh:X weak=Truerr}r(hUhjubah%hubh)r}r(hXdispatch_uid=Noneh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xdispatch_uid=Nonerr }r!(hUhjubah%hubeubeubh)r"}r#(hUhhh hmh%hh'}r$(h)]h*]h+]h,]h.]uh0Nh1hh]r%(hN)r&}r'(hX&Connect receiver to sender for signal.r(hj"h X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/signal.py:docstring of celery.utils.dispatch.signal.Signal.connectr)h%hSh'}r*(h)]h*]h+]h,]h.]uh0Kh1hh]r+h:X&Connect receiver to sender for signal.r,r-}r.(hj(hj&ubaubcdocutils.nodes field_list r/)r0}r1(hUhj"h Nh%U field_listr2h'}r3(h)]h*]h+]h,]h.]uh0Nh1hh]r4cdocutils.nodes field r5)r6}r7(hUh'}r8(h)]h*]h+]h,]h.]uhj0h]r9(cdocutils.nodes field_name r:)r;}r<(hUh'}r=(h)]h*]h+]h,]h.]uhj6h]r>h:X Parametersr?r@}rA(hUhj;ubah%U field_namerBubcdocutils.nodes field_body rC)rD}rE(hUh'}rF(h)]h*]h+]h,]h.]uhj6h]rGcdocutils.nodes bullet_list rH)rI}rJ(hUh'}rK(h)]h*]h+]h,]h.]uhjDh]rL(cdocutils.nodes list_item rM)rN}rO(hUh'}rP(h)]h*]h+]h,]h.]uhjIh]rQhN)rR}rS(hUh'}rT(h)]h*]h+]h,]h.]uhjNh]rU(cdocutils.nodes strong rV)rW}rX(hXreceiverh'}rY(h)]h*]h+]h,]h.]uhjRh]rZh:Xreceiverr[r\}r](hUhjWubah%Ustrongr^ubh:X -- r_r`}ra(hUhjRubhN)rb}rc(hXaA function or an instance method which is to receive signals. Receivers must be hashable objects.rdhjRh j)h%hSh'}re(h)]h*]h+]h,]h.]uh0Kh]rfh:XaA function or an instance method which is to receive signals. Receivers must be hashable objects.rgrh}ri(hjdhjbubaubhN)rj}rk(hXif weak is ``True``, then receiver must be weak-referencable (more precisely :func:`saferef.safe_ref()` must be able to create a reference to the receiver).hjRh j)h%hSh'}rl(h)]h*]h+]h,]h.]uh0Kh]rm(h:X if weak is rnro}rp(hX if weak is hjjubcdocutils.nodes literal rq)rr}rs(hX``True``h'}rt(h)]h*]h+]h,]h.]uhjjh]ruh:XTruervrw}rx(hUhjrubah%Uliteralryubh:X:, then receiver must be weak-referencable (more precisely rzr{}r|(hX:, then receiver must be weak-referencable (more precisely hjjubcsphinx.addnodes pending_xref r})r~}r(hX:func:`saferef.safe_ref()`rhjjh Nh%U pending_xrefrh'}r(UreftypeXfuncUrefwarnrU reftargetrXsaferef.safe_refU refdomainXpyrh,]h+]U refexplicith)]h*]h.]UrefdocrX0internals/reference/celery.utils.dispatch.signalrUpy:classrhwU py:modulerhuh0Nh]rjq)r}r(hjh'}r(h)]h*]r(UxrefrjXpy-funcreh+]h,]h.]uhj~h]rh:Xsaferef.safe_ref()rr}r(hUhjubah%jyubaubh:X5 must be able to create a reference to the receiver).rr}r(hX5 must be able to create a reference to the receiver).hjjubeubhN)r}r(hX3Receivers must be able to accept keyword arguments.rhjRh j)h%hSh'}r(h)]h*]h+]h,]h.]uh0K h]rh:X3Receivers must be able to accept keyword arguments.rr}r(hjhjubaubhN)r}r(hXIf receivers have a ``dispatch_uid`` attribute, the receiver will not be added if another receiver already exists with that ``dispatch_uid``.hjRh j)h%hSh'}r(h)]h*]h+]h,]h.]uh0K h]r(h:XIf receivers have a rr}r(hXIf receivers have a hjubjq)r}r(hX``dispatch_uid``h'}r(h)]h*]h+]h,]h.]uhjh]rh:X dispatch_uidrr}r(hUhjubah%jyubh:XX attribute, the receiver will not be added if another receiver already exists with that rr}r(hXX attribute, the receiver will not be added if another receiver already exists with that hjubjq)r}r(hX``dispatch_uid``h'}r(h)]h*]h+]h,]h.]uhjh]rh:X dispatch_uidrr}r(hUhjubah%jyubh:X.r}r(hX.hjubeubeh%hSubah%U list_itemrubjM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjIh]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jV)r}r(hXsenderh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xsenderrr}r(hUhjubah%j^ubh:X -- rr}r(hUhjubh:XHThe sender to which the receiver should respond. Must either be of type rr}r(hXHThe sender to which the receiver should respond. Must either be of type hjubj})r}r(hX:class:`Signal`rhjh Nh%jh'}r(UreftypeXclassjjXSignalU refdomainXpyrh,]h+]U refexplicith)]h*]h.]jjjhwjhuh0Nh]rjq)r}r(hjh'}r(h)]h*]r(jjXpy-classreh+]h,]h.]uhjh]rh:XSignalrr}r(hUhjubah%jyubaubh:X, or rr}r(hX, or hjubjq)r}r(hX``None``h'}r(h)]h*]h+]h,]h.]uhjh]rh:XNonerr}r(hUhjubah%jyubh:X# to receive events from any sender.rr}r(hX# to receive events from any sender.hjubeh%hSubah%jubjM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjIh]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jV)r}r(hXweakh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xweakrr}r(hUhjubah%j^ubh:X -- rr}r(hUhjubh:XWhether to use weak references to the receiver. By default, the module will attempt to use weak references to the receiver objects. If this parameter is false, then strong references will be used.rr}r(hXWhether to use weak references to the receiver. By default, the module will attempt to use weak references to the receiver objects. If this parameter is false, then strong references will be used.rhjubeh%hSubah%jubjM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjIh]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r (jV)r }r (hX dispatch_uidh'}r (h)]h*]h+]h,]h.]uhjh]r h:X dispatch_uidrr}r(hUhj ubah%j^ubh:X -- rr}r(hUhjubh:XAn identifier used to uniquely identify a particular instance of a receiver. This will usually be a string, though it may be anything hashable.rr}r(hXAn identifier used to uniquely identify a particular instance of a receiver. This will usually be a string, though it may be anything hashable.rhjubeh%hSubah%jubeh%U bullet_listrubah%U field_bodyrubeh%UfieldrubaubeubeubhF)r}r(hUhhh Nh%hIh'}r(h,]h+]h)]h*]h.]Uentries]r(hLX9disconnect() (celery.utils.dispatch.signal.Signal method)hUtrauh0Nh1hh]ubh^)r }r!(hUhhh Nh%hah'}r"(hchdXpyh,]h+]h)]h*]h.]heXmethodr#hgj#uh0Nh1hh]r$(hi)r%}r&(hXKSignal.disconnect(receiver=None, sender=None, weak=True, dispatch_uid=None)hj h hmh%hnh'}r'(h,]r(hahqh!Xcelery.utils.dispatch.signalr)r*}r+bh+]h)]h*]h.]r,hahvXSignal.disconnecthxhwhyuh0Nh1hh]r-(h)r.}r/(hX disconnecthj%h hmh%hh'}r0(h)]h*]h+]h,]h.]uh0Nh1hh]r1h:X disconnectr2r3}r4(hUhj.ubaubh)r5}r6(hUhj%h hmh%hh'}r7(h)]h*]h+]h,]h.]uh0Nh1hh]r8(h)r9}r:(hX receiver=Noneh'}r;(h)]h*]h+]h,]h.]uhj5h]r<h:X receiver=Noner=r>}r?(hUhj9ubah%hubh)r@}rA(hX sender=Noneh'}rB(h)]h*]h+]h,]h.]uhj5h]rCh:X sender=NonerDrE}rF(hUhj@ubah%hubh)rG}rH(hX weak=Trueh'}rI(h)]h*]h+]h,]h.]uhj5h]rJh:X weak=TruerKrL}rM(hUhjGubah%hubh)rN}rO(hXdispatch_uid=Noneh'}rP(h)]h*]h+]h,]h.]uhj5h]rQh:Xdispatch_uid=NonerRrS}rT(hUhjNubah%hubeubeubh)rU}rV(hUhj h hmh%hh'}rW(h)]h*]h+]h,]h.]uh0Nh1hh]rX(hN)rY}rZ(hX+Disconnect receiver from sender for signal.r[hjUh X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/signal.py:docstring of celery.utils.dispatch.signal.Signal.disconnectr\h%hSh'}r](h)]h*]h+]h,]h.]uh0Kh1hh]r^h:X+Disconnect receiver from sender for signal.r_r`}ra(hj[hjYubaubhN)rb}rc(hXuIf weak references are used, disconnect need not be called. The receiver will be removed from dispatch automatically.rdhjUh j\h%hSh'}re(h)]h*]h+]h,]h.]uh0Kh1hh]rfh:XuIf weak references are used, disconnect need not be called. The receiver will be removed from dispatch automatically.rgrh}ri(hjdhjbubaubj/)rj}rk(hUhjUh Nh%j2h'}rl(h)]h*]h+]h,]h.]uh0Nh1hh]rmj5)rn}ro(hUh'}rp(h)]h*]h+]h,]h.]uhjjh]rq(j:)rr}rs(hUh'}rt(h)]h*]h+]h,]h.]uhjnh]ruh:X Parametersrvrw}rx(hUhjrubah%jBubjC)ry}rz(hUh'}r{(h)]h*]h+]h,]h.]uhjnh]r|jH)r}}r~(hUh'}r(h)]h*]h+]h,]h.]uhjyh]r(jM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhj}h]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jV)r}r(hXreceiverh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xreceiverrr}r(hUhjubah%j^ubh:X -- rr}r(hUhjubh:X6The registered receiver to disconnect. May be none if rr}r(hX6The registered receiver to disconnect. May be none if hjubjq)r}r(hX``dispatch_uid``h'}r(h)]h*]h+]h,]h.]uhjh]rh:X dispatch_uidrr}r(hUhjubah%jyubh:X is specified.rr}r(hX is specified.hjubeh%hSubah%jubjM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhj}h]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jV)r}r(hXsenderh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xsenderrr}r(hUhjubah%j^ubh:X -- rr}r(hUhjubh:X$The registered sender to disconnect.rr}r(hX$The registered sender to disconnect.rhjubeh%hSubah%jubjM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhj}h]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jV)r}r(hXweakh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xweakrr}r(hUhjubah%j^ubh:X -- rr}r(hUhjubh:X The weakref state to disconnect.rr}r(hX The weakref state to disconnect.rhjubeh%hSubah%jubjM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhj}h]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jV)r}r(hX dispatch_uidh'}r(h)]h*]h+]h,]h.]uhjh]rh:X dispatch_uidrr}r(hUhjubah%j^ubh:X -- rr}r(hUhjubh:X3the unique identifier of the receiver to disconnectrr}r(hX3the unique identifier of the receiver to disconnectrhjubeh%hSubah%jubeh%jubah%jubeh%jubaubeubeubhF)r}r(hUhhh Nh%hIh'}r(h,]h+]h)]h*]h.]Uentries]r(hLX3send() (celery.utils.dispatch.signal.Signal method)h Utrauh0Nh1hh]ubh^)r}r(hUhhh Nh%hah'}r(hchdXpyh,]h+]h)]h*]h.]heXmethodrhgjuh0Nh1hh]r(hi)r}r(hXSignal.send(sender, **named)hjh hmh%hnh'}r(h,]rh ahqh!Xcelery.utils.dispatch.signalrr}rbh+]h)]h*]h.]rh ahvX Signal.sendhxhwhyuh0Nh1hh]r(h)r}r(hXsendhjh hmh%hh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]rh:Xsendrr}r(hUhjubaubh)r}r(hUhjh hmh%hh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]r(h)r}r(hXsenderh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xsenderrr}r(hUhjubah%hubh)r}r(hX**namedh'}r (h)]h*]h+]h,]h.]uhjh]r h:X**namedr r }r (hUhjubah%hubeubeubh)r}r(hUhjh hmh%hh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]r(hN)r}r(hX3Send signal from sender to all connected receivers.rhjh X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/signal.py:docstring of celery.utils.dispatch.signal.Signal.sendrh%hSh'}r(h)]h*]h+]h,]h.]uh0Kh1hh]rh:X3Send signal from sender to all connected receivers.rr}r(hjhjubaubhN)r}r(hXIf any receiver raises an error, the error propagates back through send, terminating the dispatch loop, so it is quite possible to not have all receivers called if a raises an error.rhjh jh%hSh'}r(h)]h*]h+]h,]h.]uh0Kh1hh]rh:XIf any receiver raises an error, the error propagates back through send, terminating the dispatch loop, so it is quite possible to not have all receivers called if a raises an error.r r!}r"(hjhjubaubj/)r#}r$(hUhjh Nh%j2h'}r%(h)]h*]h+]h,]h.]uh0Nh1hh]r&(j5)r'}r((hUh'}r)(h)]h*]h+]h,]h.]uhj#h]r*(j:)r+}r,(hUh'}r-(h)]h*]h+]h,]h.]uhj'h]r.h:X Parametersr/r0}r1(hUhj+ubah%jBubjC)r2}r3(hUh'}r4(h)]h*]h+]h,]h.]uhj'h]r5jH)r6}r7(hUh'}r8(h)]h*]h+]h,]h.]uhj2h]r9(jM)r:}r;(hUh'}r<(h)]h*]h+]h,]h.]uhj6h]r=hN)r>}r?(hUh'}r@(h)]h*]h+]h,]h.]uhj:h]rA(jV)rB}rC(hXsenderh'}rD(h)]h*]h+]h,]h.]uhj>h]rEh:XsenderrFrG}rH(hUhjBubah%j^ubh:X -- rIrJ}rK(hUhj>ubh:X6The sender of the signal. Either a specific object or rLrM}rN(hX6The sender of the signal. Either a specific object or hj>ubjq)rO}rP(hX``None``h'}rQ(h)]h*]h+]h,]h.]uhj>h]rRh:XNonerSrT}rU(hUhjOubah%jyubh:X.rV}rW(hX.hj>ubeh%hSubah%jubjM)rX}rY(hUh'}rZ(h)]h*]h+]h,]h.]uhj6h]r[hN)r\}r](hUh'}r^(h)]h*]h+]h,]h.]uhjXh]r_(jV)r`}ra(hX**namedh'}rb(h)]h*]h+]h,]h.]uhj\h]rch:X**namedrdre}rf(hUhj`ubah%j^ubh:X -- rgrh}ri(hUhj\ubh:X2Named arguments which will be passed to receivers.rjrk}rl(hX2Named arguments which will be passed to receivers.rmhj\ubeh%hSubah%jubeh%jubah%jubeh%jubj5)rn}ro(hUh'}rp(h)]h*]h+]h,]h.]uhj#h]rq(j:)rr}rs(hUh'}rt(h)]h*]h+]h,]h.]uhjnh]ruh:XReturnsrvrw}rx(hUhjrubah%jBubjC)ry}rz(hUh'}r{(h)]h*]h+]h,]h.]uhjnh]r|hN)r}}r~(hUh'}r(h)]h*]h+]h,]h.]uhjyh]r(h:Xa list of tuple pairs: rr}r(hXa list of tuple pairs: hj}ubjq)r}r(hX ``[(receiver, response), ... ]``h'}r(h)]h*]h+]h,]h.]uhj}h]rh:X[(receiver, response), ... ]rr}r(hUhjubah%jyubh:X.r}r(hX.hj}ubeh%hSubah%jubeh%jubeubeubeubhF)r}r(hUhhh X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/signal.py:docstring of celery.utils.dispatch.signal.Signal.send_robustrh%hIh'}r(h,]h+]h)]h*]h.]Uentries]r(hLX:send_robust() (celery.utils.dispatch.signal.Signal method)hUtrauh0Nh1hh]ubh^)r}r(hUhhh jh%hah'}r(hchdXpyrh,]h+]h)]h*]h.]heXmethodrhgjuh0Nh1hh]r(hi)r}r(hX#Signal.send_robust(sender, **named)hjh hmh%hnh'}r(h,]rhahqh!Xcelery.utils.dispatch.signalrr}rbh+]h)]h*]h.]rhahvXSignal.send_robusthxhwhyuh0Nh1hh]r(h)r}r(hX send_robusthjh hmh%hh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]rh:X send_robustrr}r(hUhjubaubh)r}r(hUhjh hmh%hh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]r(h)r}r(hXsenderh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xsenderrr}r(hUhjubah%hubh)r}r(hX**namedh'}r(h)]h*]h+]h,]h.]uhjh]rh:X**namedrr}r(hUhjubah%hubeubeubh)r}r(hUhjh hmh%hh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]r(hN)r}r(hXCSend signal from sender to all connected receivers catching errors.rhjh jh%hSh'}r(h)]h*]h+]h,]h.]uh0Kh1hh]rh:XCSend signal from sender to all connected receivers catching errors.rr}r(hjhjubaubj/)r}r(hUhjh jh%j2h'}r(h)]h*]h+]h,]h.]uh0Nh1hh]r(j5)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(j:)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rh:X Parametersrr}r(hUhjubah%jBubjC)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rjH)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jV)r}r(hXsenderh'}r(h)]h*]h+]h,]h.]uhjh]rh:Xsenderrr}r(hUhjubah%j^ubh:X -- rr}r(hUhjubh:XThe sender of the signal. Can be any python object (normally one registered with a connect if you actually want something to occur).rr}r(hXThe sender of the signal. Can be any python object (normally one registered with a connect if you actually want something to occur).rhjubeh%hSubah%jubjM)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(jV)r}r(hX**namedh'}r(h)]h*]h+]h,]h.]uhjh]rh:X**namedrr}r(hUhjubah%j^ubh:X -- rr}r(hUhjubh:XuNamed arguments which will be passed to receivers. These arguments must be a subset of the argument names defined in rr}r(hXuNamed arguments which will be passed to receivers. These arguments must be a subset of the argument names defined in hjubj})r }r (hX:attr:`providing_args`r hjh Nh%jh'}r (UreftypeXattrjjXproviding_argsU refdomainXpyr h,]h+]U refexplicith)]h*]h.]jjjhwjhuh0Nh]rjq)r}r(hj h'}r(h)]h*]r(jj Xpy-attrreh+]h,]h.]uhj h]rh:Xproviding_argsrr}r(hUhjubah%jyubaubh:X.r}r(hX.hjubeh%hSubah%jubeh%jubah%jubeh%jubj5)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(j:)r}r(hUh'}r (h)]h*]h+]h,]h.]uhjh]r!h:XReturnsr"r#}r$(hUhjubah%jBubjC)r%}r&(hUh'}r'(h)]h*]h+]h,]h.]uhjh]r(hN)r)}r*(hUh'}r+(h)]h*]h+]h,]h.]uhj%h]r,(h:Xa list of tuple pairs: r-r.}r/(hXa list of tuple pairs: hj)ubjq)r0}r1(hX ``[(receiver, response), ... ]``h'}r2(h)]h*]h+]h,]h.]uhj)h]r3h:X[(receiver, response), ... ]r4r5}r6(hUhj0ubah%jyubh:X.r7}r8(hX.hj)ubeh%hSubah%jubeh%jubj5)r9}r:(hUh'}r;(h)]h*]h+]h,]h.]uhjh]r<(j:)r=}r>(hUh'}r?(h)]h*]h+]h,]h.]uhj9h]r@(h:XRaisesrArB}rC(hUhj=ubh:X rD}rE(hUhj=ubj})rF}rG(hUh'}rH(UreftypeUexcrIU reftargetXDispatcherKeyErrorrJU refdomainjh,]h+]U refexplicith)]h*]h.]uhj=h]rKh:XDispatcherKeyErrorrLrM}rN(hjJhjFubah%jubeh%jBubjC)rO}rP(hUh'}rQ(h)]h*]h+]h,]h.]uhj9h]rRhN)rS}rT(hUh'}rU(h)]h*]h+]h,]h.]uhjOh]h%hSubah%jubeh%jubeubhN)rV}rW(hXif any receiver raises an error (specifically any subclass of :exc:`Exception`), the error instance is returned as the result for that receiver.hjh jh%hSh'}rX(h)]h*]h+]h,]h.]uh0Kh1hh]rY(h:X>if any receiver raises an error (specifically any subclass of rZr[}r\(hX>if any receiver raises an error (specifically any subclass of hjVubj})r]}r^(hX:exc:`Exception`r_hjVh Nh%jh'}r`(UreftypeXexcjjX ExceptionU refdomainXpyrah,]h+]U refexplicith)]h*]h.]jjjhwjhuh0Nh]rbjq)rc}rd(hj_h'}re(h)]h*]rf(jjaXpy-excrgeh+]h,]h.]uhj]h]rhh:X Exceptionrirj}rk(hUhjcubah%jyubaubh:XB), the error instance is returned as the result for that receiver.rlrm}rn(hXB), the error instance is returned as the result for that receiver.hjVubeubeubeubeubeubeubahUU transformerroNU footnote_refsrp}rqUrefnamesrr}rsUsymbol_footnotesrt]ruUautofootnote_refsrv]rwUsymbol_footnote_refsrx]ryU citationsrz]r{h1hU current_liner|NUtransform_messagesr}]r~cdocutils.nodes system_message r)r}r(hUh'}r(h)]UlevelKh,]h+]UsourcehAh*]h.]UlineKUtypeUINFOruh]rhN)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rh:XIHyperlink target "module-celery.utils.dispatch.signal" is not referenced.rr}r(hUhjubah%hSubah%Usystem_messagerubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh7NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUn/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.dispatch.signal.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj%hhhjh hjh hh jhhhcdocutils.nodes topic r)r}r(hUhhh h#h%Utopicrh'}r(h)]h*]r(UcontentsrUlocalreh+]h,]rhah.]rh auh0Kh1hh]rcdocutils.nodes pending r)r}r(hX.. contents:: :local:hjU transformrcdocutils.transforms.parts Contents rUdetailsr}rUlocalNsh%Upendingrh'}r(h)]h*]h+]h,]h.]uh]ubaubhEh?uUsubstitution_namesr}rh%h1h'}r(h)]h,]h+]Usourceh#h*]h.]uU footnotesr]rUrefidsr}rub.PKHDDGGLcelery-2.0-archived/.doctrees/internals/reference/celery.utils.patch.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X.celery.utils.patch.ensure_process_aware_loggerqX*compatibility patches - celery.utils.patchqNUcontentsqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hhhU(compatibility-patches-celery-utils-patchqhUcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXd/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.patch.rstqq}qbUtagnameq Usectionq!U attributesq"}q#(Udupnamesq$]Uclassesq%]Ubackrefsq&]Uidsq']q(haUnamesq)]q*hauUlineq+KUdocumentq,hh]q-(cdocutils.nodes title q.)q/}q0(hX*Compatibility Patches - celery.utils.patchq1hhhhh Utitleq2h"}q3(h$]h%]h&]h']h)]uh+Kh,hh]q4cdocutils.nodes Text q5X*Compatibility Patches - celery.utils.patchq6q7}q8(hh1hh/ubaubcdocutils.nodes target q9)q:}q;(hUhhhU q(h$]h']q?Xmodule-celery.utils.patchq@ah&]Uismodh%]h)]uh+Kh,hh]ubcsphinx.addnodes index qA)qB}qC(hUhhhhq]h Udesc_signatureq^h"}q_(h']q`haUmoduleqahXcelery.utils.patchqbqc}qdbh&]h$]h%]h)]qehaUfullnameqfXensure_process_aware_loggerqgUclassqhUUfirstqiuh+Nh,hh]qj(csphinx.addnodes desc_addname qk)ql}qm(hXcelery.utils.patch.hhZhh]h U desc_addnameqnh"}qo(h$]h%]h&]h']h)]uh+Nh,hh]qph5Xcelery.utils.patch.qqqr}qs(hUhhlubaubcsphinx.addnodes desc_name qt)qu}qv(hhghhZhh]h U desc_nameqwh"}qx(h$]h%]h&]h']h)]uh+Nh,hh]qyh5Xensure_process_aware_loggerqzq{}q|(hUhhuubaubcsphinx.addnodes desc_parameterlist q})q~}q(hUhhZhh]h Udesc_parameterlistqh"}q(h$]h%]h&]h']h)]uh+Nh,hh]ubeubcsphinx.addnodes desc_content q)q}q(hUhhOhh]h U desc_contentqh"}q(h$]h%]h&]h']h)]uh+Nh,hh]ubeubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh,hU current_lineqNUtransform_messagesq]qcdocutils.nodes system_message q)q}q(hUh"}q(h$]UlevelKh']h&]Usourceh from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUk/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.controllers.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDA777Icelery-2.0-archived/.doctrees/internals/reference/celery.platform.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery.platform.reset_signalqXcelery.platform.ignore_signalqX#platform specific - celery.platformqNX&celery.platform.install_signal_handlerq X!celery.platform.set_process_titleq X$celery.platform.set_mp_process_titleq Ucontentsq NuUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhU!platform-specific-celery-platformqh h h h h h h UcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode q Xa/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.platform.rstq!q"}q#bUtagnameq$Usectionq%U attributesq&}q'(Udupnamesq(]Uclassesq)]Ubackrefsq*]Uidsq+]q,haUnamesq-]q.hauUlineq/KUdocumentq0hh]q1(cdocutils.nodes title q2)q3}q4(hX#Platform Specific - celery.platformq5hhhh"h$Utitleq6h&}q7(h(]h)]h*]h+]h-]uh/Kh0hh]q8cdocutils.nodes Text q9X#Platform Specific - celery.platformq:q;}q<(hh5hh3ubaubcdocutils.nodes target q=)q>}q?(hUhhhU q@h$UtargetqAh&}qB(h(]h+]qCXmodule-celery.platformqDah*]Uismodh)]h-]uh/Kh0hh]ubcsphinx.addnodes index qE)qF}qG(hUhhhh@h$UindexqHh&}qI(h+]h*]h(]h)]h-]Uentries]qJ(UsingleqKXcelery.platform (module)Xmodule-celery.platformUtqLauh/Kh0hh]ubhE)qM}qN(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/platform.py:docstring of celery.platform.ignore_signalqOh$hHh&}qP(h+]h*]h(]h)]h-]Uentries]qQ(hKX+ignore_signal() (in module celery.platform)hUtqRauh/Nh0hh]ubcsphinx.addnodes desc qS)qT}qU(hUhhhhOh$UdescqVh&}qW(UnoindexqXUdomainqYXpyh+]h*]h(]h)]h-]UobjtypeqZXfunctionq[Udesctypeq\h[uh/Nh0hh]q](csphinx.addnodes desc_signature q^)q_}q`(hXignore_signal(signal_name)hhThU qah$Udesc_signatureqbh&}qc(h+]qdhaUmoduleqeh Xcelery.platformqfqg}qhbh*]h(]h)]h-]qihaUfullnameqjX ignore_signalqkUclassqlUUfirstqmuh/Nh0hh]qn(csphinx.addnodes desc_addname qo)qp}qq(hXcelery.platform.hh_hhah$U desc_addnameqrh&}qs(h(]h)]h*]h+]h-]uh/Nh0hh]qth9Xcelery.platform.quqv}qw(hUhhpubaubcsphinx.addnodes desc_name qx)qy}qz(hhkhh_hhah$U desc_nameq{h&}q|(h(]h)]h*]h+]h-]uh/Nh0hh]q}h9X ignore_signalq~q}q(hUhhyubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh_hhah$Udesc_parameterlistqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qcsphinx.addnodes desc_parameter q)q}q(hX signal_nameh&}q(h(]h)]h*]h+]h-]uhhh]qh9X signal_nameqq}q(hUhhubah$Udesc_parameterqubaubeubcsphinx.addnodes desc_content q)q}q(hUhhThhah$U desc_contentqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]q(cdocutils.nodes paragraph q)q}q(hX%Ignore signal using :const:`SIG_IGN`.hhhhOh$U paragraphqh&}q(h(]h)]h*]h+]h-]uh/Kh0hh]q(h9XIgnore signal using qq}q(hXIgnore signal using hhubcsphinx.addnodes pending_xref q)q}q(hX:const:`SIG_IGN`qhhhh"h$U pending_xrefqh&}q(UreftypeXconstUrefwarnqU reftargetqXSIG_IGNU refdomainXpyqh+]h*]U refexplicith(]h)]h-]UrefdocqX#internals/reference/celery.platformqUpy:classqNU py:moduleqXcelery.platformquh/Kh]qcdocutils.nodes literal q)q}q(hhh&}q(h(]h)]q(UxrefqhXpy-constqeh*]h+]h-]uhhh]qh9XSIG_IGNqq}q(hUhhubah$Uliteralqubaubh9X.q}q(hX.hhubeubh)q}q(hX\Does nothing if the platform doesn't support signals, or the specified signal in particular.qhhhhOh$hh&}q(h(]h)]h*]h+]h-]uh/Kh0hh]qh9X\Does nothing if the platform doesn't support signals, or the specified signal in particular.qq}q(hhhhubaubeubeubhE)q}q(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/platform.py:docstring of celery.platform.install_signal_handlerqh$hHh&}q(h+]h*]h(]h)]h-]Uentries]q(hKX4install_signal_handler() (in module celery.platform)h Utqauh/Nh0hh]ubhS)q}q(hUhhhhh$hVh&}q(hXhYXpyh+]h*]h(]h)]h-]hZXfunctionqh\huh/Nh0hh]q(h^)q}q(hX,install_signal_handler(signal_name, handler)hhhhah$hbh&}q(h+]qh aheh Xcelery.platformqӅq}qbh*]h(]h)]h-]qh ahjXinstall_signal_handlerqhlUhmuh/Nh0hh]q(ho)q}q(hXcelery.platform.hhhhah$hrh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9Xcelery.platform.q݅q}q(hUhhubaubhx)q}q(hhhhhhah$h{h&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9Xinstall_signal_handlerq䅁q}q(hUhhubaubh)q}q(hUhhhhah$hh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]q(h)q}q(hX signal_nameh&}q(h(]h)]h*]h+]h-]uhhh]qh9X signal_nameqq}q(hUhhubah$hubh)q}q(hXhandlerh&}q(h(]h)]h*]h+]h-]uhhh]qh9Xhandlerqq}q(hUhhubah$hubeubeubh)q}q(hUhhhhah$hh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]q(h)q}q(hXInstall a handler.qhhhhh$hh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9XInstall a handler.rr}r(hhhhubaubh)r}r(hXdDoes nothing if the current platform doesn't support signals, or the specified signal in particular.rhhhhh$hh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]r h9XdDoes nothing if the current platform doesn't support signals, or the specified signal in particular.r r }r (hjhjubaubeubeubhE)r }r(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/platform.py:docstring of celery.platform.reset_signalrh$hHh&}r(h+]h*]h(]h)]h-]Uentries]r(hKX*reset_signal() (in module celery.platform)hUtrauh/Nh0hh]ubhS)r}r(hUhhhjh$hVh&}r(hXhYXpyh+]h*]h(]h)]h-]hZXfunctionrh\juh/Nh0hh]r(h^)r}r(hXreset_signal(signal_name)hjhhah$hbh&}r(h+]rhaheh Xcelery.platformrr}rbh*]h(]h)]h-]rhahjX reset_signalr hlUhmuh/Nh0hh]r!(ho)r"}r#(hXcelery.platform.hjhhah$hrh&}r$(h(]h)]h*]h+]h-]uh/Nh0hh]r%h9Xcelery.platform.r&r'}r((hUhj"ubaubhx)r)}r*(hj hjhhah$h{h&}r+(h(]h)]h*]h+]h-]uh/Nh0hh]r,h9X reset_signalr-r.}r/(hUhj)ubaubh)r0}r1(hUhjhhah$hh&}r2(h(]h)]h*]h+]h-]uh/Nh0hh]r3h)r4}r5(hX signal_nameh&}r6(h(]h)]h*]h+]h-]uhj0h]r7h9X signal_namer8r9}r:(hUhj4ubah$hubaubeubh)r;}r<(hUhjhhah$hh&}r=(h(]h)]h*]h+]h-]uh/Nh0hh]r>(h)r?}r@(hX+Reset signal to the default signal handler.rAhj;hjh$hh&}rB(h(]h)]h*]h+]h-]uh/Kh0hh]rCh9X+Reset signal to the default signal handler.rDrE}rF(hjAhj?ubaubh)rG}rH(hX\Does nothing if the platform doesn't support signals, or the specified signal in particular.rIhj;hjh$hh&}rJ(h(]h)]h*]h+]h-]uh/Kh0hh]rKh9X\Does nothing if the platform doesn't support signals, or the specified signal in particular.rLrM}rN(hjIhjGubaubeubeubhE)rO}rP(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/platform.py:docstring of celery.platform.set_mp_process_titlerQh$hHh&}rR(h+]h*]h(]h)]h-]Uentries]rS(hKX2set_mp_process_title() (in module celery.platform)h UtrTauh/Nh0hh]ubhS)rU}rV(hUhhhjQh$hVh&}rW(hXhYXpyh+]h*]h(]h)]h-]hZXfunctionrXh\jXuh/Nh0hh]rY(h^)rZ}r[(hX)set_mp_process_title(progname, info=None)hjUhhah$hbh&}r\(h+]r]h aheh Xcelery.platformr^r_}r`bh*]h(]h)]h-]rah ahjXset_mp_process_titlerbhlUhmuh/Nh0hh]rc(ho)rd}re(hXcelery.platform.hjZhhah$hrh&}rf(h(]h)]h*]h+]h-]uh/Nh0hh]rgh9Xcelery.platform.rhri}rj(hUhjdubaubhx)rk}rl(hjbhjZhhah$h{h&}rm(h(]h)]h*]h+]h-]uh/Nh0hh]rnh9Xset_mp_process_titlerorp}rq(hUhjkubaubh)rr}rs(hUhjZhhah$hh&}rt(h(]h)]h*]h+]h-]uh/Nh0hh]ru(h)rv}rw(hXprognameh&}rx(h(]h)]h*]h+]h-]uhjrh]ryh9Xprognamerzr{}r|(hUhjvubah$hubh)r}}r~(hX info=Noneh&}r(h(]h)]h*]h+]h-]uhjrh]rh9X info=Nonerr}r(hUhj}ubah$hubeubeubh)r}r(hUhjUhhah$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]r(h)r}r(hX7Set the ps name using the multiprocessing process name.rhjhjQh$hh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X7Set the ps name using the multiprocessing process name.rr}r(hjhjubaubh)r}r(hX/Only works if :mod:`setproctitle` is installed.hjhjQh$hh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]r(h9XOnly works if rr}r(hXOnly works if hjubh)r}r(hX:mod:`setproctitle`rhjhNh$hh&}r(UreftypeXmodhhX setproctitleU refdomainXpyrh+]h*]U refexplicith(]h)]h-]hhhNhhuh/Nh]rh)r}r(hjh&}r(h(]h)]r(hjXpy-modreh*]h+]h-]uhjh]rh9X setproctitlerr}r(hUhjubah$hubaubh9X is installed.rr}r(hX is installed.hjubeubeubeubhE)r}r(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/platform.py:docstring of celery.platform.set_process_titlerh$hHh&}r(h+]h*]h(]h)]h-]Uentries]r(hKX/set_process_title() (in module celery.platform)h Utrauh/Nh0hh]ubhS)r}r(hUhhhjh$hVh&}r(hXhYXpyh+]h*]h(]h)]h-]hZXfunctionrh\juh/Nh0hh]r(h^)r}r(hX&set_process_title(progname, info=None)hjhhah$hbh&}r(h+]rh aheh Xcelery.platformrr}rbh*]h(]h)]h-]rh ahjXset_process_titlerhlUhmuh/Nh0hh]r(ho)r}r(hXcelery.platform.hjhhah$hrh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xcelery.platform.rr}r(hUhjubaubhx)r}r(hjhjhhah$h{h&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xset_process_titlerr}r(hUhjubaubh)r}r(hUhjhhah$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]r(h)r}r(hXprognameh&}r(h(]h)]h*]h+]h-]uhjh]rh9Xprognamerr}r(hUhjubah$hubh)r}r(hX info=Noneh&}r(h(]h)]h*]h+]h-]uhjh]rh9X info=Nonerr}r(hUhjubah$hubeubeubh)r}r(hUhjhhah$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]r(h)r}r(hX2Set the ps name for the currently running process.rhjhjh$hh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X2Set the ps name for the currently running process.rr}r(hjhjubaubh)r}r(hX.Only works if :mod`setproctitle` is installed.rhjhjh$hh&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X.Only works if :mod`setproctitle` is installed.rr}r(hjhjubaubeubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh0hU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(hUh&}r(h(]UlevelKh+]h*]Usourceh@h)]h-]UlineKUtypeUINFOruh]rh)r}r (hUh&}r (h(]h)]h*]h+]h-]uhjh]r h9X<Hyperlink target "module-celery.platform" is not referenced.r r }r(hUhjubah$hubah$Usystem_messagerubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackr Upep_referencesr!NUstrip_commentsr"NU toc_backlinksr#Uentryr$U language_coder%Uenr&U datestampr'NU report_levelr(KU _destinationr)NU halt_levelr*KU strip_classesr+Nh6NUerror_encoding_error_handlerr,Ubackslashreplacer-Udebugr.NUembed_stylesheetr/Uoutput_encoding_error_handlerr0Ustrictr1U sectnum_xformr2KUdump_transformsr3NU docinfo_xformr4KUwarning_streamr5NUpep_file_url_templater6Upep-%04dr7Uexit_status_levelr8KUconfigr9NUstrict_visitorr:NUcloak_email_addressesr;Utrim_footnote_reference_spacer<Uenvr=NUdump_pseudo_xmlr>NUexpose_internalsr?NUsectsubtitle_xformr@U source_linkrANUrfc_referencesrBNUoutput_encodingrCUutf-8rDU source_urlrENUinput_encodingrFU utf-8-sigrGU_disable_configrHNU id_prefixrIUU tab_widthrJKUerror_encodingrKUUTF-8rLU_sourcerMUa/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.platform.rstrNUgettext_compactrOU generatorrPNUdump_internalsrQNU smart_quotesrRU pep_base_urlrSUhttp://www.python.org/dev/peps/rTUsyntax_highlightrUUlongrVUinput_encoding_error_handlerrWj1Uauto_id_prefixrXUidrYUdoctitle_xformrZUstrip_elements_with_classesr[NU _config_filesr\]Ufile_insertion_enabledr]U raw_enabledr^KU dump_settingsr_NubUsymbol_footnote_startr`KUidsra}rb(hjhh_hhh jhDh>h jZh hhcdocutils.nodes topic rc)rd}re(hUhhhh"h$Utopicrfh&}rg(h(]h)]rh(UcontentsriUlocalrjeh*]h+]rkhah-]rlh auh/Kh0hh]rmcdocutils.nodes pending rn)ro}rp(hX.. contents:: :local:hjdU transformrqcdocutils.transforms.parts Contents rrUdetailsrs}rtUlocalNsh$Upendingruh&}rv(h(]h)]h*]h+]h-]uh]ubaubuUsubstitution_namesrw}rxh$h0h&}ry(h(]h+]h*]Usourceh"h)]h-]uU footnotesrz]r{Urefidsr|}r}ub.PKHDD Kcelery-2.0-archived/.doctrees/internals/reference/celery.worker.job.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X#executable jobs - celery.worker.jobqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXc/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.job.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U!executable-jobs-celery-worker-jobq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX#Executable Jobs - celery.worker.jobq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X#Executable Jobs - celery.worker.jobq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUc/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.job.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDdKcelery-2.0-archived/.doctrees/internals/reference/celery.db.session.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX&sqlalchemy session - celery.db.sessionqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXc/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.db.session.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U$sqlalchemy-session-celery-db-sessionq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX&SQLAlchemy Session - celery.db.sessionq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X&SQLAlchemy Session - celery.db.sessionq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUc/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.db.session.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDQXcelery-2.0-archived/.doctrees/internals/reference/celery.worker.control.builtins.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XAbuilt-in remote control commands - celery.worker.control.builtinsqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXp/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.control.builtins.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U?built-in-remote-control-commands-celery-worker-control-builtinsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXABuilt-in Remote Control Commands - celery.worker.control.builtinsq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0XABuilt-in Remote Control Commands - celery.worker.control.builtinsq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUp/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.control.builtins.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local: hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDiy)Gcelery-2.0-archived/.doctrees/internals/reference/celery.worker.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X&multiprocessing worker - celery.workerqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX_/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U$multiprocessing-worker-celery-workerq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX&Multiprocessing Worker - celery.workerq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X&Multiprocessing Worker - celery.workerq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU_/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD=##Ocelery-2.0-archived/.doctrees/internals/reference/celery.backends.cache.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX)backend: memcache - celery.backends.cacheqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.cache.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U&backend-memcache-celery-backends-cacheq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX)Backend: Memcache - celery.backends.cacheq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X)Backend: Memcache - celery.backends.cacheq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.cache.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDku]Ocelery-2.0-archived/.doctrees/internals/reference/celery.datastructures.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X&celery.datastructures.LimitedSet.firstqX-celery.datastructures.SharedCounter.incrementqX*celery.datastructures.PositionQueue.filledqX&datastructures - celery.datastructuresq NX(celery.datastructures.PositionQueue.fullq Ucontentsq NX'celery.datastructures.LimitedSet.updateq X*celery.datastructures.PositionQueue.lengthq X#celery.datastructures.AttributeDictqX#celery.datastructures.PositionQueueqX#celery.datastructures.SharedCounterqX#celery.datastructures.consume_queueqX-celery.datastructures.ExceptionInfo.tracebackqX-celery.datastructures.SharedCounter.decrementqX(celery.datastructures.LimitedSet.as_dictqX#celery.datastructures.ExceptionInfoqX*celery.datastructures.LimitedSet.pop_valueqX-celery.datastructures.ExceptionInfo.exceptionqX4celery.datastructures.PositionQueue.UnfilledPositionqX celery.datastructures.LocalCacheqX0celery.datastructures.LimitedSet.chronologicallyqX$celery.datastructures.LimitedSet.addqX celery.datastructures.LimitedSetquUsubstitution_defsq}qUparse_messagesq]q Ucurrent_sourceq!NU decorationq"NUautofootnote_startq#KUnameidsq$}q%(hhhhhhh U$datastructures-celery-datastructuresq&h h h Ucontentsq'h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhuUchildrenq(]q)cdocutils.nodes section q*)q+}q,(U rawsourceq-UUparentq.hUsourceq/cdocutils.nodes reprunicode q0Xg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.datastructures.rstq1q2}q3bUtagnameq4Usectionq5U attributesq6}q7(Udupnamesq8]Uclassesq9]Ubackrefsq:]Uidsq;]qh auUlineq?KUdocumentq@hh(]qA(cdocutils.nodes title qB)qC}qD(h-X&Datastructures - celery.datastructuresqEh.h+h/h2h4UtitleqFh6}qG(h8]h9]h:]h;]h=]uh?Kh@hh(]qHcdocutils.nodes Text qIX&Datastructures - celery.datastructuresqJqK}qL(h-hEh.hCubaubcdocutils.nodes target qM)qN}qO(h-Uh.h+h/U qPh4UtargetqQh6}qR(h8]h;]qSXmodule-celery.datastructuresqTah:]Uismodh9]h=]uh?Kh@hh(]ubcsphinx.addnodes index qU)qV}qW(h-Uh.h+h/hPh4UindexqXh6}qY(h;]h:]h8]h9]h=]Uentries]qZ(Usingleq[Xcelery.datastructures (module)Xmodule-celery.datastructuresUtq\auh?Kh@hh(]ubhU)q]}q^(h-Uh.h+h/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.AttributeDictq_h4hXh6}q`(h;]h:]h8]h9]h=]Uentries]qa(h[X.AttributeDict (class in celery.datastructures)hUtqbauh?Nh@hh(]ubcsphinx.addnodes desc qc)qd}qe(h-Uh.h+h/h_h4Udescqfh6}qg(UnoindexqhUdomainqiXpyh;]h:]h8]h9]h=]UobjtypeqjXclassqkUdesctypeqlhkuh?Nh@hh(]qm(csphinx.addnodes desc_signature qn)qo}qp(h-X AttributeDictqqh.hdh/U qrh4Udesc_signatureqsh6}qt(h;]quhaUmoduleqvh0Xcelery.datastructuresqwqx}qybh:]h8]h9]h=]qzhaUfullnameq{hqUclassq|UUfirstq}uh?Nh@hh(]q~(csphinx.addnodes desc_annotation q)q}q(h-Xclass h.hoh/hrh4Udesc_annotationqh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qhIXclass qq}q(h-Uh.hubaubcsphinx.addnodes desc_addname q)q}q(h-Xcelery.datastructures.h.hoh/hrh4U desc_addnameqh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qhIXcelery.datastructures.qq}q(h-Uh.hubaubcsphinx.addnodes desc_name q)q}q(h-hqh.hoh/hrh4U desc_nameqh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qhIX AttributeDictqq}q(h-Uh.hubaubeubcsphinx.addnodes desc_content q)q}q(h-Uh.hdh/hrh4U desc_contentqh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qcdocutils.nodes paragraph q)q}q(h-X$Dict subclass with attribute access.qh.hh/h_h4U paragraphqh6}q(h8]h9]h:]h;]h=]uh?Kh@hh(]qhIX$Dict subclass with attribute access.qq}q(h-hh.hubaubaubeubhU)q}q(h-Uh.h+h/Nh4hXh6}q(h;]h:]h8]h9]h=]Uentries]q(h[X.ExceptionInfo (class in celery.datastructures)hUtqauh?Nh@hh(]ubhc)q}q(h-Uh.h+h/Nh4hfh6}q(hhhiXpyh;]h:]h8]h9]h=]hjXclassqhlhuh?Nh@hh(]q(hn)q}q(h-XExceptionInfo(exc_info)h.hh/hrh4hsh6}q(h;]qhahvh0Xcelery.datastructuresqq}qbh:]h8]h9]h=]qhah{X ExceptionInfoqh|Uh}uh?Nh@hh(]q(h)q}q(h-Xclass h.hh/hrh4hh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qhIXclass q…q}q(h-Uh.hubaubh)q}q(h-Xcelery.datastructures.h.hh/hrh4hh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qhIXcelery.datastructures.qɅq}q(h-Uh.hubaubh)q}q(h-hh.hh/hrh4hh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qhIX ExceptionInfoqЅq}q(h-Uh.hubaubcsphinx.addnodes desc_parameterlist q)q}q(h-Uh.hh/hrh4Udesc_parameterlistqh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qcsphinx.addnodes desc_parameter q)q}q(h-Xexc_infoh6}q(h8]h9]h:]h;]h=]uh.hh(]qhIXexc_infoqޅq}q(h-Uh.hubah4Udesc_parameterqubaubeubh)q}q(h-Uh.hh/hrh4hh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]q(h)q}q(h-X2Exception wrapping an exception and its traceback.qh.hh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.ExceptionInfoqh4hh6}q(h8]h9]h:]h;]h=]uh?Kh@hh(]qhIX2Exception wrapping an exception and its traceback.q셁q}q(h-hh.hubaubcdocutils.nodes field_list q)q}q(h-Uh.hh/Nh4U field_listqh6}q(h8]h9]h:]h;]h=]uh?Nh@hh(]qcdocutils.nodes field q)q}q(h-Uh6}q(h8]h9]h:]h;]h=]uh.hh(]q(cdocutils.nodes field_name q)q}q(h-Uh6}q(h8]h9]h:]h;]h=]uh.hh(]qhIX Parametersqr}r(h-Uh.hubah4U field_namerubcdocutils.nodes field_body r)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.hh(]rh)r}r (h-Uh6}r (h8]h9]h:]h;]h=]uh.jh(]r (cdocutils.nodes strong r )r }r(h-Xexc_infoh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXexc_inforr}r(h-Uh.j ubah4UstrongrubhIX -- rr}r(h-Uh.jubhIX(The exception tuple info as returned by rr}r(h-X(The exception tuple info as returned by h.jubcsphinx.addnodes pending_xref r)r}r(h-X":func:`traceback.format_exception`rh.jh/Nh4U pending_xrefrh6}r (UreftypeXfuncUrefwarnr!U reftargetr"Xtraceback.format_exceptionU refdomainXpyr#h;]h:]U refexplicith8]h9]h=]Urefdocr$X)internals/reference/celery.datastructuresr%Upy:classr&hU py:moduler'Xcelery.datastructuresr(uh?Nh(]r)cdocutils.nodes literal r*)r+}r,(h-jh6}r-(h8]h9]r.(Uxrefr/j#Xpy-funcr0eh:]h;]h=]uh.jh(]r1hIXtraceback.format_exception()r2r3}r4(h-Uh.j+ubah4Uliteralr5ubaubhIX.r6}r7(h-X.h.jubeh4hubah4U field_bodyr8ubeh4Ufieldr9ubaubhU)r:}r;(h-Uh.hh/hh4hXh6}r<(h;]h:]h8]h9]h=]Uentries]r=(h[X9exception (celery.datastructures.ExceptionInfo attribute)hUtr>auh?Nh@hh(]ubhc)r?}r@(h-Uh.hh/hh4hfh6}rA(hhhiXpyh;]h:]h8]h9]h=]hjX attributerBhljBuh?Nh@hh(]rC(hn)rD}rE(h-X exceptionrFh.j?h/hh4hsh6}rG(h;]rHhahvj(h:]h8]h9]h=]rIhah{XExceptionInfo.exceptionh|hh}uh?K h@hh(]rJh)rK}rL(h-jFh.jDh/hh4hh6}rM(h8]h9]h:]h;]h=]uh?K h@hh(]rNhIX exceptionrOrP}rQ(h-Uh.jKubaubaubh)rR}rS(h-Uh.j?h/hh4hh6}rT(h8]h9]h:]h;]h=]uh?K h@hh(]rUh)rV}rW(h-XThe original exception.rXh.jRh/hh4hh6}rY(h8]h9]h:]h;]h=]uh?Kh@hh(]rZhIXThe original exception.r[r\}r](h-jXh.jVubaubaubeubhU)r^}r_(h-Uh.hh/hh4hXh6}r`(h;]h:]h8]h9]h=]Uentries]ra(h[X9traceback (celery.datastructures.ExceptionInfo attribute)hUtrbauh?Nh@hh(]ubhc)rc}rd(h-Uh.hh/hh4hfh6}re(hhhiXpyh;]h:]h8]h9]h=]hjX attributerfhljfuh?Nh@hh(]rg(hn)rh}ri(h-X tracebackrjh.jch/hh4hsh6}rk(h;]rlhahvj(h:]h8]h9]h=]rmhah{XExceptionInfo.tracebackh|hh}uh?K h@hh(]rnh)ro}rp(h-jjh.jhh/hh4hh6}rq(h8]h9]h:]h;]h=]uh?K h@hh(]rrhIX tracebackrsrt}ru(h-Uh.joubaubaubh)rv}rw(h-Uh.jch/hh4hh6}rx(h8]h9]h:]h;]h=]uh?K h@hh(]ryh)rz}r{(h-X=A traceback from the point when :attr:`exception` was raised.h.jvh/hh4hh6}r|(h8]h9]h:]h;]h=]uh?K h@hh(]r}(hIX A traceback from the point when r~r}r(h-X A traceback from the point when h.jzubj)r}r(h-X:attr:`exception`rh.jzh/Nh4jh6}r(UreftypeXattrj!j"X exceptionU refdomainXpyrh;]h:]U refexplicith8]h9]h=]j$j%j&hj'j(uh?Nh(]rj*)r}r(h-jh6}r(h8]h9]r(j/jXpy-attrreh:]h;]h=]uh.jh(]rhIX exceptionrr}r(h-Uh.jubah4j5ubaubhIX was raised.rr}r(h-X was raised.h.jzubeubaubeubeubeubhU)r}r(h-Uh.h+h/Nh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X+LimitedSet (class in celery.datastructures)hUtrauh?Nh@hh(]ubhc)r}r(h-Uh.h+h/Nh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjXclassrhljuh?Nh@hh(]r(hn)r}r(h-X%LimitedSet(maxlen=None, expires=None)h.jh/hrh4hsh6}r(h;]rhahvh0Xcelery.datastructuresrr}rbh:]h8]h9]h=]rhah{X LimitedSetrh|Uh}uh?Nh@hh(]r(h)r}r(h-Xclass h.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXclass rr}r(h-Uh.jubaubh)r}r(h-Xcelery.datastructures.h.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXcelery.datastructures.rr}r(h-Uh.jubaubh)r}r(h-jh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIX LimitedSetrr}r(h-Uh.jubaubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]r(h)r}r(h-X maxlen=Noneh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIX maxlen=Nonerr}r(h-Uh.jubah4hubh)r}r(h-X expires=Noneh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIX expires=Nonerr}r(h-Uh.jubah4hubeubeubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]r(h)r}r(h-XKind-of Set with limitations.rh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.LimitedSetrh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIXKind-of Set with limitations.rr}r(h-jh.jubaubh)r}r(h-XGood for when you need to test for membership (``a in set``), but the list might become to big, so you want to limit it so it doesn't consume too much resources.h.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]r(hIX/Good for when you need to test for membership (rr}r(h-X/Good for when you need to test for membership (h.jubj*)r}r(h-X ``a in set``h6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXa in setrr}r(h-Uh.jubah4j5ubhIXf), but the list might become to big, so you want to limit it so it doesn't consume too much resources.rr}r(h-Xf), but the list might become to big, so you want to limit it so it doesn't consume too much resources.h.jubeubh)r}r(h-Uh.jh/Nh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]r(h)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIX Parametersrr}r(h-Uh.jubah4jubj)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]rcdocutils.nodes bullet_list r)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]r(cdocutils.nodes list_item r)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]rh)r }r (h-Uh6}r (h8]h9]h:]h;]h=]uh.jh(]r (j )r }r(h-Xmaxlenh6}r(h8]h9]h:]h;]h=]uh.j h(]rhIXmaxlenrr}r(h-Uh.j ubah4jubhIX -- rr}r(h-Uh.j ubhIXCMaximum number of members before we start deleting expired members.rr}r(h-XCMaximum number of members before we start deleting expired members.rh.j ubeh4hubah4U list_itemrubj)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]rh)r }r!(h-Uh6}r"(h8]h9]h:]h;]h=]uh.jh(]r#(j )r$}r%(h-Xexpiresh6}r&(h8]h9]h:]h;]h=]uh.j h(]r'hIXexpiresr(r)}r*(h-Uh.j$ubah4jubhIX -- r+r,}r-(h-Uh.j ubhIX-Time in seconds, before a membership expires.r.r/}r0(h-X-Time in seconds, before a membership expires.r1h.j ubeh4hubah4jubeh4U bullet_listr2ubah4j8ubeh4j9ubaubhU)r3}r4(h-Uh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.LimitedSet.addr5h4hXh6}r6(h;]h:]h8]h9]h=]Uentries]r7(h[X/add() (celery.datastructures.LimitedSet method)hUtr8auh?Nh@hh(]ubhc)r9}r:(h-Uh.jh/j5h4hfh6}r;(hhhiXpyh;]h:]h8]h9]h=]hjXmethodr<hlj<uh?Nh@hh(]r=(hn)r>}r?(h-XLimitedSet.add(value)h.j9h/hrh4hsh6}r@(h;]rAhahvh0Xcelery.datastructuresrBrC}rDbh:]h8]h9]h=]rEhah{XLimitedSet.addh|jh}uh?Nh@hh(]rF(h)rG}rH(h-Xaddh.j>h/hrh4hh6}rI(h8]h9]h:]h;]h=]uh?Nh@hh(]rJhIXaddrKrL}rM(h-Uh.jGubaubh)rN}rO(h-Uh.j>h/hrh4hh6}rP(h8]h9]h:]h;]h=]uh?Nh@hh(]rQh)rR}rS(h-Xvalueh6}rT(h8]h9]h:]h;]h=]uh.jNh(]rUhIXvaluerVrW}rX(h-Uh.jRubah4hubaubeubh)rY}rZ(h-Uh.j9h/hrh4hh6}r[(h8]h9]h:]h;]h=]uh?Nh@hh(]r\h)r]}r^(h-XAdd a new member.r_h.jYh/j5h4hh6}r`(h8]h9]h:]h;]h=]uh?Kh@hh(]rahIXAdd a new member.rbrc}rd(h-j_h.j]ubaubaubeubhU)re}rf(h-Uh.jh/Nh4hXh6}rg(h;]h:]h8]h9]h=]Uentries]rh(h[X3as_dict() (celery.datastructures.LimitedSet method)hUtriauh?Nh@hh(]ubhc)rj}rk(h-Uh.jh/Nh4hfh6}rl(hhhiXpyh;]h:]h8]h9]h=]hjXmethodrmhljmuh?Nh@hh(]rn(hn)ro}rp(h-XLimitedSet.as_dict()h.jjh/hrh4hsh6}rq(h;]rrhahvh0Xcelery.datastructuresrsrt}rubh:]h8]h9]h=]rvhah{XLimitedSet.as_dicth|jh}uh?Nh@hh(]rw(h)rx}ry(h-Xas_dicth.joh/hrh4hh6}rz(h8]h9]h:]h;]h=]uh?Nh@hh(]r{hIXas_dictr|r}}r~(h-Uh.jxubaubh)r}r(h-Uh.joh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]ubeubh)r}r(h-Uh.jjh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]ubeubhU)r}r(h-Uh.jh/Nh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X<chronologically (celery.datastructures.LimitedSet attribute)hUtrauh?Nh@hh(]ubhc)r}r(h-Uh.jh/Nh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjX attributerhljuh?Nh@hh(]r(hn)r}r(h-XLimitedSet.chronologicallyh.jh/hrh4hsh6}r(h;]rhahvh0Xcelery.datastructuresrr}rbh:]h8]h9]h=]rhah{XLimitedSet.chronologicallyh|jh}uh?Nh@hh(]rh)r}r(h-Xchronologicallyh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXchronologicallyrr}r(h-Uh.jubaubaubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]ubeubhU)r}r(h-Uh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.LimitedSet.firstrh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X2first (celery.datastructures.LimitedSet attribute)hUtrauh?Nh@hh(]ubhc)r}r(h-Uh.jh/jh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjX attributerhljuh?Nh@hh(]r(hn)r}r(h-XLimitedSet.firsth.jh/hrh4hsh6}r(h;]rhahvh0Xcelery.datastructuresrr}rbh:]h8]h9]h=]rhah{XLimitedSet.firsth|jh}uh?Nh@hh(]rh)r}r(h-Xfirsth.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXfirstrr}r(h-Uh.jubaubaubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-XGet the oldest member.rh.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIXGet the oldest member.rr}r(h-jh.jubaubaubeubhU)r}r(h-Uh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.LimitedSet.pop_valuerh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X5pop_value() (celery.datastructures.LimitedSet method)hUtrauh?Nh@hh(]ubhc)r}r(h-Uh.jh/jh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjXmethodrhljuh?Nh@hh(]r(hn)r}r(h-XLimitedSet.pop_value(value)h.jh/hrh4hsh6}r(h;]rhahvh0Xcelery.datastructuresrr}rbh:]h8]h9]h=]rhah{XLimitedSet.pop_valueh|jh}uh?Nh@hh(]r(h)r}r(h-X pop_valueh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIX pop_valuerr}r(h-Uh.jubaubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-Xvalueh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXvaluerr}r(h-Uh.jubah4hubaubeubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-X#Remove membership by finding value.rh.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIX#Remove membership by finding value.rr}r(h-jh.jubaubaubeubhU)r}r(h-Uh.jh/Nh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X2update() (celery.datastructures.LimitedSet method)h Utrauh?Nh@hh(]ubhc)r}r(h-Uh.jh/Nh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjXmethodrhljuh?Nh@hh(]r(hn)r}r(h-XLimitedSet.update(other)h.jh/hrh4hsh6}r(h;]rh ahvh0Xcelery.datastructuresr r }r bh:]h8]h9]h=]r h ah{XLimitedSet.updateh|jh}uh?Nh@hh(]r (h)r}r(h-Xupdateh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXupdaterr}r(h-Uh.jubaubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-Xotherh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXotherrr}r(h-Uh.jubah4hubaubeubh)r }r!(h-Uh.jh/hrh4hh6}r"(h8]h9]h:]h;]h=]uh?Nh@hh(]ubeubeubeubhU)r#}r$(h-Uh.h+h/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.LocalCacher%h4hXh6}r&(h;]h:]h8]h9]h=]Uentries]r'(h[X+LocalCache (class in celery.datastructures)hUtr(auh?Nh@hh(]ubhc)r)}r*(h-Uh.h+h/j%h4hfh6}r+(hhhiXpyh;]h:]h8]h9]h=]hjXclassr,hlj,uh?Nh@hh(]r-(hn)r.}r/(h-XLocalCache(limit=None)h.j)h/hrh4hsh6}r0(h;]r1hahvh0Xcelery.datastructuresr2r3}r4bh:]h8]h9]h=]r5hah{X LocalCacher6h|Uh}uh?Nh@hh(]r7(h)r8}r9(h-Xclass h.j.h/hrh4hh6}r:(h8]h9]h:]h;]h=]uh?Nh@hh(]r;hIXclass r<r=}r>(h-Uh.j8ubaubh)r?}r@(h-Xcelery.datastructures.h.j.h/hrh4hh6}rA(h8]h9]h:]h;]h=]uh?Nh@hh(]rBhIXcelery.datastructures.rCrD}rE(h-Uh.j?ubaubh)rF}rG(h-j6h.j.h/hrh4hh6}rH(h8]h9]h:]h;]h=]uh?Nh@hh(]rIhIX LocalCacherJrK}rL(h-Uh.jFubaubh)rM}rN(h-Uh.j.h/hrh4hh6}rO(h8]h9]h:]h;]h=]uh?Nh@hh(]rPh)rQ}rR(h-X limit=Noneh6}rS(h8]h9]h:]h;]h=]uh.jMh(]rThIX limit=NonerUrV}rW(h-Uh.jQubah4hubaubeubh)rX}rY(h-Uh.j)h/hrh4hh6}rZ(h8]h9]h:]h;]h=]uh?Nh@hh(]r[(h)r\}r](h-X(Dictionary with a finite number of keys.r^h.jXh/j%h4hh6}r_(h8]h9]h:]h;]h=]uh?Kh@hh(]r`hIX(Dictionary with a finite number of keys.rarb}rc(h-j^h.j\ubaubh)rd}re(h-XOlder items expires first.rfh.jXh/j%h4hh6}rg(h8]h9]h:]h;]h=]uh?Kh@hh(]rhhIXOlder items expires first.rirj}rk(h-jfh.jdubaubeubeubhU)rl}rm(h-Uh.h+h/Nh4hXh6}rn(h;]h:]h8]h9]h=]Uentries]ro(h[X.PositionQueue (class in celery.datastructures)hUtrpauh?Nh@hh(]ubhc)rq}rr(h-Uh.h+h/Nh4hfh6}rs(hhhiXpyh;]h:]h8]h9]h=]hjXclassrthljtuh?Nh@hh(]ru(hn)rv}rw(h-XPositionQueue(length)h.jqh/hrh4hsh6}rx(h;]ryhahvh0Xcelery.datastructuresrzr{}r|bh:]h8]h9]h=]r}hah{X PositionQueuer~h|Uh}uh?Nh@hh(]r(h)r}r(h-Xclass h.jvh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXclass rr}r(h-Uh.jubaubh)r}r(h-Xcelery.datastructures.h.jvh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXcelery.datastructures.rr}r(h-Uh.jubaubh)r}r(h-j~h.jvh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIX PositionQueuerr}r(h-Uh.jubaubh)r}r(h-Uh.jvh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-Xlengthh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXlengthrr}r(h-Uh.jubah4hubaubeubh)r}r(h-Uh.jqh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]r(h)r}r(h-XA positional queue of a specific length, with slots that are either filled or unfilled. When all of the positions are filled, the queue is considered :meth:`full`.h.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.PositionQueuerh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]r(hIXA positional queue of a specific length, with slots that are either filled or unfilled. When all of the positions are filled, the queue is considered rr}r(h-XA positional queue of a specific length, with slots that are either filled or unfilled. When all of the positions are filled, the queue is considered h.jubj)r}r(h-X :meth:`full`rh.jh/Nh4jh6}r(UreftypeXmethj!j"XfullU refdomainXpyrh;]h:]U refexplicith8]h9]h=]j$j%j&j~j'j(uh?Nh(]rj*)r}r(h-jh6}r(h8]h9]r(j/jXpy-methreh:]h;]h=]uh.jh(]rhIXfull()rr}r(h-Uh.jubah4j5ubaubhIX.r}r(h-X.h.jubeubh)r}r(h-Uh.jh/Nh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]r(h)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIX Parametersrr}r(h-Uh.jubah4jubj)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]rh)r}r(h-Uh6}r(h8]h9]h:]h;]h=]uh.jh(]r(j )r}r(h-Xlengthh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXlengthrr}r(h-Uh.jubah4jubhIX -- rr}r(h-Uh.jubhIXsee rr}r(h-Xsee h.jubj)r}r(h-X:attr:`length`rh.jh/Nh4jh6}r(UreftypeXattrj!j"XlengthU refdomainXpyrh;]h:]U refexplicith8]h9]h=]j$j%j&j~j'j(uh?Nh(]rj*)r}r(h-jh6}r(h8]h9]r(j/jXpy-attrreh:]h;]h=]uh.jh(]rhIXlengthrr}r(h-Uh.jubah4j5ubaubhIX.r}r(h-X.h.jubeh4hubah4j8ubeh4j9ubaubhU)r}r(h-Uh.jh/jh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X6length (celery.datastructures.PositionQueue attribute)h Utrauh?Nh@hh(]ubhc)r}r(h-Uh.jh/jh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjX attributerhljuh?Nh@hh(]r(hn)r}r(h-Xlengthrh.jh/hPh4hsh6}r(h;]rh ahvj(h:]h8]h9]h=]rh ah{XPositionQueue.lengthh|j~h}uh?Kh@hh(]rh)r}r(h-jh.jh/hPh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIXlengthrr}r (h-Uh.jubaubaubh)r }r (h-Uh.jh/hPh4hh6}r (h8]h9]h:]h;]h=]uh?Kh@hh(]r h)r}r(h-XAThe number of items required for the queue to be considered full.rh.j h/jh4hh6}r(h8]h9]h:]h;]h=]uh?K h@hh(]rhIXAThe number of items required for the queue to be considered full.rr}r(h-jh.jubaubaubeubhU)r}r(h-Uh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.PositionQueue.UnfilledPositionrh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X?PositionQueue.UnfilledPosition (class in celery.datastructures)hUtrauh?Nh@hh(]ubhc)r}r(h-Uh.jh/jh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjXclassrhljuh?Nh@hh(]r (hn)r!}r"(h-X(PositionQueue.UnfilledPosition(position)h.jh/hrh4hsh6}r#(h;]r$hahvh0Xcelery.datastructuresr%r&}r'bh:]h8]h9]h=]r(hah{XPositionQueue.UnfilledPositionh|j~h}uh?Nh@hh(]r)(h)r*}r+(h-Xclass h.j!h/hrh4hh6}r,(h8]h9]h:]h;]h=]uh?Nh@hh(]r-hIXclass r.r/}r0(h-Uh.j*ubaubh)r1}r2(h-XUnfilledPositionh.j!h/hrh4hh6}r3(h8]h9]h:]h;]h=]uh?Nh@hh(]r4hIXUnfilledPositionr5r6}r7(h-Uh.j1ubaubh)r8}r9(h-Uh.j!h/hrh4hh6}r:(h8]h9]h:]h;]h=]uh?Nh@hh(]r;h)r<}r=(h-Xpositionh6}r>(h8]h9]h:]h;]h=]uh.j8h(]r?hIXpositionr@rA}rB(h-Uh.j<ubah4hubaubeubh)rC}rD(h-Uh.jh/hrh4hh6}rE(h8]h9]h:]h;]h=]uh?Nh@hh(]rFh)rG}rH(h-XDescribes an unfilled slot.rIh.jCh/jh4hh6}rJ(h8]h9]h:]h;]h=]uh?Kh@hh(]rKhIXDescribes an unfilled slot.rLrM}rN(h-jIh.jGubaubaubeubhU)rO}rP(h-Uh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.PositionQueue.filledrQh4hXh6}rR(h;]h:]h8]h9]h=]Uentries]rS(h[X6filled (celery.datastructures.PositionQueue attribute)hUtrTauh?Nh@hh(]ubhc)rU}rV(h-Uh.jh/jQh4hfh6}rW(hhhiXpyh;]h:]h8]h9]h=]hjX attributerXhljXuh?Nh@hh(]rY(hn)rZ}r[(h-XPositionQueue.filledh.jUh/hrh4hsh6}r\(h;]r]hahvh0Xcelery.datastructuresr^r_}r`bh:]h8]h9]h=]rahah{XPositionQueue.filledh|X PositionQueueh}uh?Nh@hh(]rb(h)rc}rd(h-XPositionQueue.h.jZh/hrh4hh6}re(h8]h9]h:]h;]h=]uh?Nh@hh(]rfhIXPositionQueue.rgrh}ri(h-Uh.jcubaubh)rj}rk(h-Xfilledh.jZh/hrh4hh6}rl(h8]h9]h:]h;]h=]uh?Nh@hh(]rmhIXfilledrnro}rp(h-Uh.jjubaubeubh)rq}rr(h-Uh.jUh/hrh4hh6}rs(h8]h9]h:]h;]h=]uh?Nh@hh(]rth)ru}rv(h-X#Returns the filled slots as a list.rwh.jqh/jQh4hh6}rx(h8]h9]h:]h;]h=]uh?Kh@hh(]ryhIX#Returns the filled slots as a list.rzr{}r|(h-jwh.juubaubaubeubhU)r}}r~(h-Uh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.PositionQueue.fullrh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X3full() (celery.datastructures.PositionQueue method)h Utrauh?Nh@hh(]ubhc)r}r(h-Uh.jh/jh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjXmethodrhljuh?Nh@hh(]r(hn)r}r(h-XPositionQueue.full()h.jh/hrh4hsh6}r(h;]rh ahvh0Xcelery.datastructuresrr}rbh:]h8]h9]h=]rh ah{XPositionQueue.fullh|X PositionQueueh}uh?Nh@hh(]r(h)r}r(h-XPositionQueue.h.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXPositionQueue.rr}r(h-Uh.jubaubh)r}r(h-Xfullh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXfullrr}r(h-Uh.jubaubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]ubeubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-X5Returns ``True`` if all of the slots has been filled.h.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]r(hIXReturns rr}r(h-XReturns h.jubj*)r}r(h-X``True``h6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXTruerr}r(h-Uh.jubah4j5ubhIX% if all of the slots has been filled.rr}r(h-X% if all of the slots has been filled.h.jubeubaubeubeubeubhU)r}r(h-Uh.h+h/Nh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X.SharedCounter (class in celery.datastructures)hUtrauh?Nh@hh(]ubhc)r}r(h-Uh.h+h/Nh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjXclassrhljuh?Nh@hh(]r(hn)r}r(h-XSharedCounter(initial_value)h.jh/hrh4hsh6}r(h;]rhahvh0Xcelery.datastructuresrr}rbh:]h8]h9]h=]rhah{X SharedCounterrh|Uh}uh?Nh@hh(]r(h)r}r(h-Xclass h.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXclass rr}r(h-Uh.jubaubh)r}r(h-Xcelery.datastructures.h.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXcelery.datastructures.rr}r(h-Uh.jubaubh)r}r(h-jh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIX SharedCounterrr}r(h-Uh.jubaubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-X initial_valueh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIX initial_valuerr}r(h-Uh.jubah4hubaubeubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]r(h)r}r(h-XThread-safe counter.rh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.SharedCounterrh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIXThread-safe counter.rr}r(h-jh.jubaubh)r}r(h-XPlease note that the final value is not synchronized, this means that you should not update the value by using a previous value, the only reliable operations are increment and decrement.rh.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIXPlease note that the final value is not synchronized, this means that you should not update the value by using a previous value, the only reliable operations are increment and decrement.rr}r(h-jh.jubaubh)r}r(h-XExamplerh.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIXExamplerr}r(h-jh.jubaubcdocutils.nodes block_quote r)r }r (h-Uh.jh/hPh4U block_quoter h6}r (h8]h9]h:]h;]h=]uh?Nh@hh(]r (cdocutils.nodes doctest_block r)r}r(h-X1>>> max_clients = SharedCounter(initial_value=10)h6}r(U xml:spacerUpreserverh;]h:]h8]h9]h=]uh.j h(]rhIX1>>> max_clients = SharedCounter(initial_value=10)rr}r(h-Uh.jubah4U doctest_blockrubh)r}r(h-X-# Thread one >>> max_clients += 1 # OK (safe)rh.j h/jh4hh6}r(h8]h9]h:]h;]h=]uh?K h(]rhIX-# Thread one >>> max_clients += 1 # OK (safe)rr}r (h-jh.jubaubh)r!}r"(h-X-# Thread two >>> max_clients -= 3 # OK (safe)r#h.j h/jh4hh6}r$(h8]h9]h:]h;]h=]uh?Kh(]r%hIX-# Thread two >>> max_clients -= 3 # OK (safe)r&r'}r((h-j#h.j!ubaubh)r)}r*(h-XU# Main thread >>> if client >= int(max_clients): # Max clients now at 8 ... wait()r+h.j h/jh4hh6}r,(h8]h9]h:]h;]h=]uh?Kh(]r-hIXU# Main thread >>> if client >= int(max_clients): # Max clients now at 8 ... wait()r.r/}r0(h-j+h.j)ubaubj)r1}r2(h-X3>>> max_client = max_clients + 10 # NOT OK (unsafe)h6}r3(jjh;]h:]h8]h9]h=]uh.j h(]r4hIX3>>> max_client = max_clients + 10 # NOT OK (unsafe)r5r6}r7(h-Uh.j1ubah4jubeubhU)r8}r9(h-Uh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.SharedCounter.decrementr:h4hXh6}r;(h;]h:]h8]h9]h=]Uentries]r<(h[X8decrement() (celery.datastructures.SharedCounter method)hUtr=auh?Nh@hh(]ubhc)r>}r?(h-Uh.jh/j:h4hfh6}r@(hhhiXpyh;]h:]h8]h9]h=]hjXmethodrAhljAuh?Nh@hh(]rB(hn)rC}rD(h-XSharedCounter.decrement(n=1)h.j>h/hrh4hsh6}rE(h;]rFhahvh0Xcelery.datastructuresrGrH}rIbh:]h8]h9]h=]rJhah{XSharedCounter.decrementh|jh}uh?Nh@hh(]rK(h)rL}rM(h-X decrementh.jCh/hrh4hh6}rN(h8]h9]h:]h;]h=]uh?Nh@hh(]rOhIX decrementrPrQ}rR(h-Uh.jLubaubh)rS}rT(h-Uh.jCh/hrh4hh6}rU(h8]h9]h:]h;]h=]uh?Nh@hh(]rVh)rW}rX(h-Xn=1h6}rY(h8]h9]h:]h;]h=]uh.jSh(]rZhIXn=1r[r\}r](h-Uh.jWubah4hubaubeubh)r^}r_(h-Uh.j>h/hrh4hh6}r`(h8]h9]h:]h;]h=]uh?Nh@hh(]rah)rb}rc(h-XDecrement value.rdh.j^h/j:h4hh6}re(h8]h9]h:]h;]h=]uh?Kh@hh(]rfhIXDecrement value.rgrh}ri(h-jdh.jbubaubaubeubhU)rj}rk(h-Uh.jh/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.SharedCounter.incrementrlh4hXh6}rm(h;]h:]h8]h9]h=]Uentries]rn(h[X8increment() (celery.datastructures.SharedCounter method)hUtroauh?Nh@hh(]ubhc)rp}rq(h-Uh.jh/jlh4hfh6}rr(hhhiXpyh;]h:]h8]h9]h=]hjXmethodrshljsuh?Nh@hh(]rt(hn)ru}rv(h-XSharedCounter.increment(n=1)h.jph/hrh4hsh6}rw(h;]rxhahvh0Xcelery.datastructuresryrz}r{bh:]h8]h9]h=]r|hah{XSharedCounter.incrementh|jh}uh?Nh@hh(]r}(h)r~}r(h-X incrementh.juh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIX incrementrr}r(h-Uh.j~ubaubh)r}r(h-Uh.juh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-Xn=1h6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXn=1rr}r(h-Uh.jubah4hubaubeubh)r}r(h-Uh.jph/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-XIncrement value.rh.jh/jlh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIXIncrement value.rr}r(h-jh.jubaubaubeubeubeubhU)r}r(h-Uh.h+h/X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/datastructures.py:docstring of celery.datastructures.consume_queuerh4hXh6}r(h;]h:]h8]h9]h=]Uentries]r(h[X1consume_queue() (in module celery.datastructures)hUtrauh?Nh@hh(]ubhc)r}r(h-Uh.h+h/jh4hfh6}r(hhhiXpyh;]h:]h8]h9]h=]hjXfunctionrhljuh?Nh@hh(]r(hn)r}r(h-Xconsume_queue(queue)rh.jh/hrh4hsh6}r(h;]rhahvh0Xcelery.datastructuresrr}rbh:]h8]h9]h=]rhah{X consume_queuerh|Uh}uh?Nh@hh(]r(h)r}r(h-Xcelery.datastructures.h.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIXcelery.datastructures.rr}r(h-Uh.jubaubh)r}r(h-jh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rhIX consume_queuerr}r(h-Uh.jubaubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]rh)r}r(h-Xqueueh6}r(h8]h9]h:]h;]h=]uh.jh(]rhIXqueuerr}r(h-Uh.jubah4hubaubeubh)r}r(h-Uh.jh/hrh4hh6}r(h8]h9]h:]h;]h=]uh?Nh@hh(]r(h)r}r(h-XLIterator yielding all immediately available items in a :class:`Queue.Queue`.h.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]r(hIX7Iterator yielding all immediately available items in a rr}r(h-X7Iterator yielding all immediately available items in a h.jubj)r}r(h-X:class:`Queue.Queue`rh.jh/Nh4jh6}r(UreftypeXclassj!j"X Queue.QueueU refdomainXpyrh;]h:]U refexplicith8]h9]h=]j$j%j&Nj'j(uh?Nh(]rj*)r}r(h-jh6}r(h8]h9]r(j/jXpy-classreh:]h;]h=]uh.jh(]rhIX Queue.Queuerr}r(h-Uh.jubah4j5ubaubhIX.r}r(h-X.h.jubeubh)r}r(h-XBThe iterator stops as soon as the queue raises :exc:`Queue.Empty`.rh.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]r(hIX/The iterator stops as soon as the queue raises rr}r(h-X/The iterator stops as soon as the queue raises h.jubj)r}r(h-X:exc:`Queue.Empty`rh.jh/Nh4jh6}r(UreftypeXexcj!j"X Queue.EmptyU refdomainXpyrh;]h:]U refexplicith8]h9]h=]j$j%j&Nj'j(uh?Nh(]rj*)r}r(h-jh6}r(h8]h9]r(j/jXpy-excreh:]h;]h=]uh.jh(]rhIX Queue.Emptyrr}r(h-Uh.jubah4j5ubaubhIX.r}r(h-X.h.jubeubh)r}r(h-XExamplerh.jh/jh4hh6}r(h8]h9]h:]h;]h=]uh?Kh@hh(]rhIXExamplerr}r(h-jh.jubaubj)r}r (h-Xn>>> q = Queue() >>> map(q.put, range(4)) >>> list(consume_queue(q)) [0, 1, 2, 3] >>> list(consume_queue(q)) []h.jh/Nh4jh6}r (jjh;]h:]h8]h9]h=]uh?Nh@hh(]r hIXn>>> q = Queue() >>> map(q.put, range(4)) >>> list(consume_queue(q)) [0, 1, 2, 3] >>> list(consume_queue(q)) []r r }r(h-Uh.jubaubeubeubeubah-UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh@hU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r }r!(h-Uh6}r"(h8]UlevelKh;]h:]UsourcehPh9]h=]UlineKUtypeUINFOr#uh(]r$h)r%}r&(h-Uh6}r'(h8]h9]h:]h;]h=]uh.j h(]r(hIXBHyperlink target "module-celery.datastructures" is not referenced.r)r*}r+(h-Uh.j%ubah4hubah4Usystem_messager,ubaUreporterr-NUid_startr.KU autofootnotesr/]r0U citation_refsr1}r2Uindirect_targetsr3]r4Usettingsr5(cdocutils.frontend Values r6or7}r8(Ufootnote_backlinksr9KUrecord_dependenciesr:NU rfc_base_urlr;Uhttp://tools.ietf.org/html/r<U tracebackr=Upep_referencesr>NUstrip_commentsr?NU toc_backlinksr@UentryrAU language_coderBUenrCU datestamprDNU report_levelrEKU _destinationrFNU halt_levelrGKU strip_classesrHNhFNUerror_encoding_error_handlerrIUbackslashreplacerJUdebugrKNUembed_stylesheetrLUoutput_encoding_error_handlerrMUstrictrNU sectnum_xformrOKUdump_transformsrPNU docinfo_xformrQKUwarning_streamrRNUpep_file_url_templaterSUpep-%04drTUexit_status_levelrUKUconfigrVNUstrict_visitorrWNUcloak_email_addressesrXUtrim_footnote_reference_spacerYUenvrZNUdump_pseudo_xmlr[NUexpose_internalsr\NUsectsubtitle_xformr]U source_linkr^NUrfc_referencesr_NUoutput_encodingr`Uutf-8raU source_urlrbNUinput_encodingrcU utf-8-sigrdU_disable_configreNU id_prefixrfUU tab_widthrgKUerror_encodingrhUUTF-8riU_sourcerjUg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.datastructures.rstrkUgettext_compactrlU generatorrmNUdump_internalsrnNU smart_quotesroU pep_base_urlrpUhttp://www.python.org/dev/peps/rqUsyntax_highlightrrUlongrsUinput_encoding_error_handlerrtjNUauto_id_prefixruUidrvUdoctitle_xformrwUstrip_elements_with_classesrxNU _config_filesry]Ufile_insertion_enabledrzU raw_enabledr{KU dump_settingsr|NubUsymbol_footnote_startr}KUidsr~}r(hjhjuhjZh jh&h+h'cdocutils.nodes topic r)r}r(h-Uh.h+h/h2h4Utopicrh6}r(h8]h9]r(UcontentsrUlocalreh:]h;]rh'ah=]rh auh?Kh@hh(]rcdocutils.nodes pending r)r}r(h-X.. contents:: :local:h.jU transformrcdocutils.transforms.parts Contents rUdetailsr}rUlocalNsh4Upendingrh6}r(h8]h9]h:]h;]h=]uh(]ubaubh jh jhhohjvhjhjhjhhjChjohhhjhjDhj!hj.hjhj>hThNhjuUsubstitution_namesr}rh4h@h6}r(h8]h;]h:]Usourceh2h9]h=]uU footnotesr]rUrefidsr}rub.PKHDDg8[celery-2.0-archived/.doctrees/internals/reference/celery.concurrency.processes.pool.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XAextended multiprocessing.pool - celery.concurrency.processes.poolqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXs/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.concurrency.processes.pool.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U?extended-multiprocessing-pool-celery-concurrency-processes-poolq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXAextended multiprocessing.pool - celery.concurrency.processes.poolq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0XAextended multiprocessing.pool - celery.concurrency.processes.poolq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import log File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/log.py", line 9, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUs/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.concurrency.processes.pool.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDRɡDcelery-2.0-archived/.doctrees/internals/reference/celery.log.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xlogging - celery.logqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX\/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.log.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Ulogging-celery-logq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXLogging - celery.logq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0XLogging - celery.logq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU\/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.log.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDCCScelery-2.0-archived/.doctrees/internals/reference/celery.backends.cassandra.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X.backend: cassandra - celery.backends.cassandraqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXk/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.cassandra.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U+backend-cassandra-celery-backends-cassandraq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX.Backend: Cassandra - celery.backends.cassandraq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X.Backend: Cassandra - celery.backends.cassandraq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUk/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.cassandra.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD-Ecelery-2.0-archived/.doctrees/internals/reference/celery.beat.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xclock service - celery.beatqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX]/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.beat.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Uclock-service-celery-beatq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXClock Service - celery.beatq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0XClock Service - celery.beatq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import log File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/log.py", line 9, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU]/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.beat.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD488Gcelery-2.0-archived/.doctrees/internals/reference/celery.routes.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X%celery.routes.MapRoute.route_for_taskqXcelery.routes.MapRouteqXcelery.routes.Router.routeqXcelery.routes.Routerq X!celery.routes.Router.lookup_routeq Xmessage routers - celery.routesq NXcelery.routes.prepareq Xcelery.routes.Router.add_queueq X'celery.routes.Router.expand_destinationqUcontentsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h Umessage-routers-celery-routesqh h h h hhhUcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceq UUparentq!hUsourceq"cdocutils.nodes reprunicode q#X_/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.routes.rstq$q%}q&bUtagnameq'Usectionq(U attributesq)}q*(Udupnamesq+]Uclassesq,]Ubackrefsq-]Uidsq.]q/haUnamesq0]q1h auUlineq2KUdocumentq3hh]q4(cdocutils.nodes title q5)q6}q7(h XMessage Routers - celery.routesq8h!hh"h%h'Utitleq9h)}q:(h+]h,]h-]h.]h0]uh2Kh3hh]q;cdocutils.nodes Text q}q?(h h8h!h6ubaubcdocutils.nodes target q@)qA}qB(h Uh!hh"U qCh'UtargetqDh)}qE(h+]h.]qFXmodule-celery.routesqGah-]Uismodh,]h0]uh2Kh3hh]ubcsphinx.addnodes index qH)qI}qJ(h Uh!hh"hCh'UindexqKh)}qL(h.]h-]h+]h,]h0]Uentries]qM(UsingleqNXcelery.routes (module)Xmodule-celery.routesUtqOauh2Kh3hh]ubhH)qP}qQ(h Uh!hh"Nh'hKh)}qR(h.]h-]h+]h,]h0]Uentries]qS(hNX!MapRoute (class in celery.routes)hUtqTauh2Nh3hh]ubcsphinx.addnodes desc qU)qV}qW(h Uh!hh"Nh'UdescqXh)}qY(UnoindexqZUdomainq[Xpyh.]h-]h+]h,]h0]Uobjtypeq\Xclassq]Udesctypeq^h]uh2Nh3hh]q_(csphinx.addnodes desc_signature q`)qa}qb(h X MapRoute(map)h!hVh"U qch'Udesc_signatureqdh)}qe(h.]qfhaUmoduleqgh#X celery.routesqhqi}qjbh-]h+]h,]h0]qkhaUfullnameqlXMapRouteqmUclassqnUUfirstqouh2Nh3hh]qp(csphinx.addnodes desc_annotation qq)qr}qs(h Xclass h!hah"hch'Udesc_annotationqth)}qu(h+]h,]h-]h.]h0]uh2Nh3hh]qvh}r?(h Uh!j9ubah'hubeubeubh)r@}rA(h Uh!jh"hch'hh)}rB(h+]h,]h-]h.]h0]uh2Nh3hh]rC(hH)rD}rE(h Uh!j@h"Nh'hKh)}rF(h.]h-]h+]h,]h0]Uentries]rG(hNX)add_queue() (celery.routes.Router method)h UtrHauh2Nh3hh]ubhU)rI}rJ(h Uh!j@h"Nh'hXh)}rK(hZh[Xpyh.]h-]h+]h,]h0]h\XmethodrLh^jLuh2Nh3hh]rM(h`)rN}rO(h XRouter.add_queue(queue)h!jIh"hch'hdh)}rP(h.]rQh ahgh#X celery.routesrRrS}rTbh-]h+]h,]h0]rUh ahlXRouter.add_queuehnjhouh2Nh3hh]rV(h)rW}rX(h X add_queueh!jNh"hch'hh)}rY(h+]h,]h-]h.]h0]uh2Nh3hh]rZhh from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.pyredis.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDH BBPcelery-2.0-archived/.doctrees/internals/reference/celery.worker.listener.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X0worker message listener - celery.worker.listenerqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXh/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.listener.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U.worker-message-listener-celery-worker-listenerq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX0Worker Message Listener - celery.worker.listenerq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X0Worker Message Listener - celery.worker.listenerq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUh/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.listener.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD&EQcelery-2.0-archived/.doctrees/internals/reference/celery.utils.functional.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X*functools compat - celery.utils.functionalqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hU(functools-compat-celery-utils-functionalqhUcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.functional.rstqq}qbUtagnameqUsectionq U attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'haUnamesq(]q)hauUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hX*functools compat - celery.utils.functionalq0hhhhhUtitleq1h!}q2(h#]h$]h%]h&]h(]uh*Kh+hh]q3cdocutils.nodes Text q4X*functools compat - celery.utils.functionalq5q6}q7(hh0hh.ubaubcdocutils.nodes target q8)q9}q:(hUhhhU q;hUtargetqXmodule-celery.utils.functionalq?ah%]Uismodh$]h(]uh*Kh+hh]ubcsphinx.addnodes index q@)qA}qB(hUhhhh;hUindexqCh!}qD(h&]h%]h#]h$]h(]Uentries]qE(UsingleqFX celery.utils.functional (module)Xmodule-celery.utils.functionalUtqGauh*Kh+hh]ubcdocutils.nodes paragraph qH)qI}qJ(hX2Functional utilities for Python 2.4 compatibility.qKhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/functional.py:docstring of celery.utils.functionalqLhU paragraphqMh!}qN(h#]h$]h%]h&]h(]uh*Kh+hh]qOh4X2Functional utilities for Python 2.4 compatibility.qPqQ}qR(hhKhhIubaubeubahUU transformerqSNU footnote_refsqT}qUUrefnamesqV}qWUsymbol_footnotesqX]qYUautofootnote_refsqZ]q[Usymbol_footnote_refsq\]q]U citationsq^]q_h+hU current_lineq`NUtransform_messagesqa]qbcdocutils.nodes system_message qc)qd}qe(hUh!}qf(h#]UlevelKh&]h%]Usourceh;h$]h(]UlineKUtypeUINFOqguh]qhhH)qi}qj(hUh!}qk(h#]h$]h%]h&]h(]uhhdh]qlh4XDHyperlink target "module-celery.utils.functional" is not referenced.qmqn}qo(hUhhiubahhMubahUsystem_messageqpubaUreporterqqNUid_startqrKU autofootnotesqs]qtU citation_refsqu}qvUindirect_targetsqw]qxUsettingsqy(cdocutils.frontend Values qzoq{}q|(Ufootnote_backlinksq}KUrecord_dependenciesq~NU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh1NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.functional.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhh?h9hcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh!}q(h#]h$]q(UcontentsqUlocalqeh%]h&]qhah(]qhauh*Kh+hh]qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh!}q(h#]h$]h%]h&]h(]uh]ubaubuUsubstitution_namesq}qhh+h!}q(h#]h&]h%]Usourcehh$]h(]uU footnotesq]qUrefidsq}qub.PKHDD"RRMcelery-2.0-archived/.doctrees/internals/reference/celery.utils.compat.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X$celery.utils.compat.OrderedDict.keysqXcelery.utils.compat.OrderedDictqX(celery.utils.compat.OrderedDict.iterkeysqX$celery.utils.compat.OrderedDict.copyq X'celery.utils.compat.chain_from_iterableq X(celery.utils.compat.OrderedDict.fromkeysq X%celery.utils.compat.OrderedDict.itemsq X#celery.utils.compat.OrderedDict.popq X'celery.utils.compat.OrderedDict.popitemqX%celery.utils.compat.OrderedDict.clearqX*celery.utils.compat.OrderedDict.itervaluesqX*celery.utils.compat.OrderedDict.setdefaultqX*python compatibility - celery.utils.compatqNX&celery.utils.compat.OrderedDict.updateqX&celery.utils.compat.OrderedDict.valuesqUcontentsqNX)celery.utils.compat.OrderedDict.iteritemsquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h h h h hhhhhhhhhU(python-compatibility-celery-utils-compatq hhhhhUcontentsq!hhuUchildrenq"]q#cdocutils.nodes section q$)q%}q&(U rawsourceq'UUparentq(hUsourceq)cdocutils.nodes reprunicode q*Xe/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.compat.rstq+q,}q-bUtagnameq.Usectionq/U attributesq0}q1(Udupnamesq2]Uclassesq3]Ubackrefsq4]Uidsq5]q6h aUnamesq7]q8hauUlineq9KUdocumentq:hh"]q;(cdocutils.nodes title q<)q=}q>(h'X*Python Compatibility - celery.utils.compatq?h(h%h)h,h.Utitleq@h0}qA(h2]h3]h4]h5]h7]uh9Kh:hh"]qBcdocutils.nodes Text qCX*Python Compatibility - celery.utils.compatqDqE}qF(h'h?h(h=ubaubcdocutils.nodes target qG)qH}qI(h'Uh(h%h)U qJh.UtargetqKh0}qL(h2]h5]qMXmodule-celery.utils.compatqNah4]Uismodh3]h7]uh9Kh:hh"]ubcsphinx.addnodes index qO)qP}qQ(h'Uh(h%h)hJh.UindexqRh0}qS(h5]h4]h2]h3]h7]Uentries]qT(UsingleqUXcelery.utils.compat (module)Xmodule-celery.utils.compatUtqVauh9Kh:hh"]ubhO)qW}qX(h'Uh(h%h)Nh.hRh0}qY(h5]h4]h2]h3]h7]Uentries]qZ(hUX*OrderedDict (class in celery.utils.compat)hUtq[auh9Nh:hh"]ubcsphinx.addnodes desc q\)q]}q^(h'Uh(h%h)Nh.Udescq_h0}q`(UnoindexqaUdomainqbXpyh5]h4]h2]h3]h7]UobjtypeqcXclassqdUdesctypeqehduh9Nh:hh"]qf(csphinx.addnodes desc_signature qg)qh}qi(h'XOrderedDict(*args, **kwds)h(h]h)U qjh.Udesc_signatureqkh0}ql(h5]qmhaUmoduleqnh*Xcelery.utils.compatqoqp}qqbh4]h2]h3]h7]qrhaUfullnameqsX OrderedDictqtUclassquUUfirstqvuh9Nh:hh"]qw(csphinx.addnodes desc_annotation qx)qy}qz(h'Xclass h(hhh)hjh.Udesc_annotationq{h0}q|(h2]h3]h4]h5]h7]uh9Nh:hh"]q}hCXclass q~q}q(h'Uh(hyubaubcsphinx.addnodes desc_addname q)q}q(h'Xcelery.utils.compat.h(hhh)hjh.U desc_addnameqh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]qhCXcelery.utils.compat.qq}q(h'Uh(hubaubcsphinx.addnodes desc_name q)q}q(h'hth(hhh)hjh.U desc_nameqh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]qhCX OrderedDictqq}q(h'Uh(hubaubcsphinx.addnodes desc_parameterlist q)q}q(h'Uh(hhh)hjh.Udesc_parameterlistqh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]q(csphinx.addnodes desc_parameter q)q}q(h'X*argsh0}q(h2]h3]h4]h5]h7]uh(hh"]qhCX*argsqq}q(h'Uh(hubah.Udesc_parameterqubh)q}q(h'X**kwdsh0}q(h2]h3]h4]h5]h7]uh(hh"]qhCX**kwdsqq}q(h'Uh(hubah.hubeubeubcsphinx.addnodes desc_content q)q}q(h'Uh(h]h)hjh.U desc_contentqh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]q(cdocutils.nodes paragraph q)q}q(h'X)Dictionary that remembers insertion orderqh(hh)X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/compat.py:docstring of celery.utils.compat.OrderedDictqh.U paragraphqh0}q(h2]h3]h4]h5]h7]uh9Kh:hh"]qhCX)Dictionary that remembers insertion orderqq}q(h'hh(hubaubhO)q}q(h'Uh(hh)Nh.hRh0}q(h5]h4]h2]h3]h7]Uentries]q(hUX0clear() (celery.utils.compat.OrderedDict method)hUtqauh9Nh:hh"]ubh\)q}q(h'Uh(hh)Nh.h_h0}q(hahbXpyh5]h4]h2]h3]h7]hcXmethodqhehuh9Nh:hh"]q(hg)q}q(h'X7OrderedDict.clear() -> None. Remove all items from od.h(hh)hjh.hkh0}q(h5]qhahnh*Xcelery.utils.compatqȅq}qbh4]h2]h3]h7]qhahsXOrderedDict.clearhuhthvuh9Nh:hh"]q(h)q}q(h'Xclearh(hh)hjh.hh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]qhCXclearqхq}q(h'Uh(hubaubh)q}q(h'Uh(hh)hjh.hh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]ubcsphinx.addnodes desc_returns q)q}q(h'X None. Remove all items from od.h(hh)hjh.U desc_returnsqh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]qhCX None. Remove all items from od.q݅q}q(h'Uh(hubaubeubh)q}q(h'Uh(hh)hjh.hh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)q}q(h'Uh(hh)Nh.hRh0}q(h5]h4]h2]h3]h7]Uentries]q(hUX/copy() (celery.utils.compat.OrderedDict method)h Utqauh9Nh:hh"]ubh\)q}q(h'Uh(hh)Nh.h_h0}q(hahbXpyh5]h4]h2]h3]h7]hcXmethodqhehuh9Nh:hh"]q(hg)q}q(h'X*OrderedDict.copy() -> a shallow copy of odh(hh)hjh.hkh0}q(h5]qh ahnh*Xcelery.utils.compatqq}qbh4]h2]h3]h7]qh ahsXOrderedDict.copyhuhthvuh9Nh:hh"]q(h)q}q(h'Xcopyh(hh)hjh.hh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]qhCXcopyqq}q(h'Uh(hubaubh)q}q(h'Uh(hh)hjh.hh0}q(h2]h3]h4]h5]h7]uh9Nh:hh"]ubh)r}r(h'Xa shallow copy of odh(hh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCXa shallow copy of odrr}r(h'Uh(jubaubeubh)r}r(h'Uh(hh)hjh.hh0}r (h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)r }r (h'Uh(hh)X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/compat.py:docstring of celery.utils.compat.OrderedDict.fromkeysr h.hRh0}r (h5]h4]h2]h3]h7]Uentries]r(hUX9fromkeys() (celery.utils.compat.OrderedDict class method)h Utrauh9Nh:hh"]ubh\)r}r(h'Uh(hh)j h.h_h0}r(hahbXpyh5]h4]h2]h3]h7]hcX classmethodrhejuh9Nh:hh"]r(hg)r}r(h'XGOrderedDict.fromkeys(S[, v]) -> New ordered dictionary with keys from Sh(jh)hjh.hkh0}r(h5]rh ahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rh ahsXOrderedDict.fromkeyshuhthvuh9Nh:hh"]r(hx)r}r(h'U classmethod r h(jh)hjh.h{h0}r!(h2]h3]h4]h5]h7]uh9Nh:hh"]r"hCX classmethod r#r$}r%(h'Uh(jubaubh)r&}r'(h'Xfromkeysh(jh)hjh.hh0}r((h2]h3]h4]h5]h7]uh9Nh:hh"]r)hCXfromkeysr*r+}r,(h'Uh(j&ubaubh)r-}r.(h'Uh(jh)hjh.hh0}r/(h2]h3]h4]h5]h7]uh9Nh:hh"]r0(h)r1}r2(h'XSh0}r3(h2]h3]h4]h5]h7]uh(j-h"]r4hCXSr5}r6(h'Uh(j1ubah.hubcsphinx.addnodes desc_optional r7)r8}r9(h'Uh0}r:(h2]h3]h4]h5]h7]uh(j-h"]r;h)r<}r=(h'Xvh0}r>(h2]h3]h4]h5]h7]uh(j8h"]r?hCXvr@}rA(h'Uh(j<ubah.hubah.U desc_optionalrBubeubh)rC}rD(h'X'New ordered dictionary with keys from Sh(jh)hjh.hh0}rE(h2]h3]h4]h5]h7]uh9Nh:hh"]rFhCX'New ordered dictionary with keys from SrGrH}rI(h'Uh(jCubaubeubh)rJ}rK(h'Uh(jh)hjh.hh0}rL(h2]h3]h4]h5]h7]uh9Nh:hh"]rMh)rN}rO(h'X/and values equal to v (which defaults to None).rPh(jJh)j h.hh0}rQ(h2]h3]h4]h5]h7]uh9Kh:hh"]rRhCX/and values equal to v (which defaults to None).rSrT}rU(h'jPh(jNubaubaubeubhO)rV}rW(h'Uh(hh)Nh.hRh0}rX(h5]h4]h2]h3]h7]Uentries]rY(hUX0items() (celery.utils.compat.OrderedDict method)h UtrZauh9Nh:hh"]ubh\)r[}r\(h'Uh(hh)Nh.h_h0}r](hahbXpyh5]h4]h2]h3]h7]hcXmethodr^hej^uh9Nh:hh"]r_(hg)r`}ra(h'XOrderedDict.items()h(j[h)hjh.hkh0}rb(h5]rch ahnh*Xcelery.utils.compatrdre}rfbh4]h2]h3]h7]rgh ahsXOrderedDict.itemshuhthvuh9Nh:hh"]rh(h)ri}rj(h'Xitemsh(j`h)hjh.hh0}rk(h2]h3]h4]h5]h7]uh9Nh:hh"]rlhCXitemsrmrn}ro(h'Uh(jiubaubh)rp}rq(h'Uh(j`h)hjh.hh0}rr(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubh)rs}rt(h'Uh(j[h)hjh.hh0}ru(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)rv}rw(h'Uh(hh)Nh.hRh0}rx(h5]h4]h2]h3]h7]Uentries]ry(hUX4iteritems() (celery.utils.compat.OrderedDict method)hUtrzauh9Nh:hh"]ubh\)r{}r|(h'Uh(hh)Nh.h_h0}r}(hahbXpyh5]h4]h2]h3]h7]hcXmethodr~hej~uh9Nh:hh"]r(hg)r}r(h'XOrderedDict.iteritems()h(j{h)hjh.hkh0}r(h5]rhahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rhahsXOrderedDict.iteritemshuhthvuh9Nh:hh"]r(h)r}r(h'X iteritemsh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCX iteritemsrr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubh)r}r(h'Uh(j{h)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)r}r(h'Uh(hh)Nh.hRh0}r(h5]h4]h2]h3]h7]Uentries]r(hUX3iterkeys() (celery.utils.compat.OrderedDict method)hUtrauh9Nh:hh"]ubh\)r}r(h'Uh(hh)Nh.h_h0}r(hahbXpyh5]h4]h2]h3]h7]hcXmethodrhejuh9Nh:hh"]r(hg)r}r(h'XOrderedDict.iterkeys()h(jh)hjh.hkh0}r(h5]rhahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rhahsXOrderedDict.iterkeyshuhthvuh9Nh:hh"]r(h)r}r(h'Xiterkeysh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCXiterkeysrr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)r}r(h'Uh(hh)Nh.hRh0}r(h5]h4]h2]h3]h7]Uentries]r(hUX5itervalues() (celery.utils.compat.OrderedDict method)hUtrauh9Nh:hh"]ubh\)r}r(h'Uh(hh)Nh.h_h0}r(hahbXpyh5]h4]h2]h3]h7]hcXmethodrhejuh9Nh:hh"]r(hg)r}r(h'XOrderedDict.itervalues()h(jh)hjh.hkh0}r(h5]rhahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rhahsXOrderedDict.itervalueshuhthvuh9Nh:hh"]r(h)r}r(h'X itervaluesh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCX itervaluesrr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)r}r(h'Uh(hh)Nh.hRh0}r(h5]h4]h2]h3]h7]Uentries]r(hUX/keys() (celery.utils.compat.OrderedDict method)hUtrauh9Nh:hh"]ubh\)r}r(h'Uh(hh)Nh.h_h0}r(hahbXpyh5]h4]h2]h3]h7]hcXmethodrhejuh9Nh:hh"]r(hg)r}r(h'XOrderedDict.keys()h(jh)hjh.hkh0}r(h5]rhahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rhahsXOrderedDict.keyshuhthvuh9Nh:hh"]r(h)r}r(h'Xkeysh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCXkeysrr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)r}r(h'Uh(hh)Nh.hRh0}r(h5]h4]h2]h3]h7]Uentries]r(hUX.pop() (celery.utils.compat.OrderedDict method)h Utrauh9Nh:hh"]ubh\)r}r(h'Uh(hh)Nh.h_h0}r(hahbXpyh5]h4]h2]h3]h7]hcXmethodrhejuh9Nh:hh"]r(hg)r}r(h'X:OrderedDict.pop(key, default=)h(jh)hjh.hkh0}r(h5]rh ahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rh ahsXOrderedDict.pophuhthvuh9Nh:hh"]r(h)r }r (h'Xpoph(jh)hjh.hh0}r (h2]h3]h4]h5]h7]uh9Nh:hh"]r hCXpopr r}r(h'Uh(j ubaubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]r(h)r}r(h'Xkeyh0}r(h2]h3]h4]h5]h7]uh(jh"]rhCXkeyrr}r(h'Uh(jubah.hubh)r}r(h'X$default=h0}r(h2]h3]h4]h5]h7]uh(jh"]rhCX$default=rr }r!(h'Uh(jubah.hubeubeubh)r"}r#(h'Uh(jh)hjh.hh0}r$(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)r%}r&(h'Uh(hh)X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/compat.py:docstring of celery.utils.compat.OrderedDict.popitemr'h.hRh0}r((h5]h4]h2]h3]h7]Uentries]r)(hUX2popitem() (celery.utils.compat.OrderedDict method)hUtr*auh9Nh:hh"]ubh\)r+}r,(h'Uh(hh)j'h.h_h0}r-(hahbXpyh5]h4]h2]h3]h7]hcXmethodr.hej.uh9Nh:hh"]r/(hg)r0}r1(h'XOrderedDict.popitem() -> (k, v)h(j+h)hjh.hkh0}r2(h5]r3hahnh*Xcelery.utils.compatr4r5}r6bh4]h2]h3]h7]r7hahsXOrderedDict.popitemhuhthvuh9Nh:hh"]r8(h)r9}r:(h'Xpopitemh(j0h)hjh.hh0}r;(h2]h3]h4]h5]h7]uh9Nh:hh"]r<hCXpopitemr=r>}r?(h'Uh(j9ubaubh)r@}rA(h'Uh(j0h)hjh.hh0}rB(h2]h3]h4]h5]h7]uh9Nh:hh"]rC(h)rD}rE(h'X) -> (kh0}rF(h2]h3]h4]h5]h7]uh(j@h"]rGhCX) -> (krHrI}rJ(h'Uh(jDubah.hubh)rK}rL(h'Xvh0}rM(h2]h3]h4]h5]h7]uh(j@h"]rNhCXvrO}rP(h'Uh(jKubah.hubeubeubh)rQ}rR(h'Uh(j+h)hjh.hh0}rS(h2]h3]h4]h5]h7]uh9Nh:hh"]rTh)rU}rV(h'XoReturn and remove a (key, value) pair. Pairs are returned in LIFO order if last is true or FIFO order if false.rWh(jQh)j'h.hh0}rX(h2]h3]h4]h5]h7]uh9Kh:hh"]rYhCXoReturn and remove a (key, value) pair. Pairs are returned in LIFO order if last is true or FIFO order if false.rZr[}r\(h'jWh(jUubaubaubeubhO)r]}r^(h'Uh(hh)Nh.hRh0}r_(h5]h4]h2]h3]h7]Uentries]r`(hUX5setdefault() (celery.utils.compat.OrderedDict method)hUtraauh9Nh:hh"]ubh\)rb}rc(h'Uh(hh)Nh.h_h0}rd(hahbXpyh5]h4]h2]h3]h7]hcXmethodrehejeuh9Nh:hh"]rf(hg)rg}rh(h'X)OrderedDict.setdefault(key, default=None)h(jbh)hjh.hkh0}ri(h5]rjhahnh*Xcelery.utils.compatrkrl}rmbh4]h2]h3]h7]rnhahsXOrderedDict.setdefaulthuhthvuh9Nh:hh"]ro(h)rp}rq(h'X setdefaulth(jgh)hjh.hh0}rr(h2]h3]h4]h5]h7]uh9Nh:hh"]rshCX setdefaultrtru}rv(h'Uh(jpubaubh)rw}rx(h'Uh(jgh)hjh.hh0}ry(h2]h3]h4]h5]h7]uh9Nh:hh"]rz(h)r{}r|(h'Xkeyh0}r}(h2]h3]h4]h5]h7]uh(jwh"]r~hCXkeyrr}r(h'Uh(j{ubah.hubh)r}r(h'X default=Noneh0}r(h2]h3]h4]h5]h7]uh(jwh"]rhCX default=Nonerr}r(h'Uh(jubah.hubeubeubh)r}r(h'Uh(jbh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)r}r(h'Uh(hh)Nh.hRh0}r(h5]h4]h2]h3]h7]Uentries]r(hUX1update() (celery.utils.compat.OrderedDict method)hUtrauh9Nh:hh"]ubh\)r}r(h'Uh(hh)Nh.h_h0}r(hahbXpyh5]h4]h2]h3]h7]hcXmethodrhejuh9Nh:hh"]r(hg)r}r(h'X$OrderedDict.update(other=(), **kwds)h(jh)hjh.hkh0}r(h5]rhahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rhahsXOrderedDict.updatehuhthvuh9Nh:hh"]r(h)r}r(h'Xupdateh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCXupdaterr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]r(h)r}r(h'Xother=()h0}r(h2]h3]h4]h5]h7]uh(jh"]rhCXother=()rr}r(h'Uh(jubah.hubh)r}r(h'X**kwdsh0}r(h2]h3]h4]h5]h7]uh(jh"]rhCX**kwdsrr}r(h'Uh(jubah.hubeubeubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubhO)r}r(h'Uh(hh)Nh.hRh0}r(h5]h4]h2]h3]h7]Uentries]r(hUX1values() (celery.utils.compat.OrderedDict method)hUtrauh9Nh:hh"]ubh\)r}r(h'Uh(hh)Nh.h_h0}r(hahbXpyh5]h4]h2]h3]h7]hcXmethodrhejuh9Nh:hh"]r(hg)r}r(h'XOrderedDict.values()rh(jh)hjh.hkh0}r(h5]rhahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rhahsXOrderedDict.valueshuhthvuh9Nh:hh"]r(h)r}r(h'Xvaluesh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCXvaluesrr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubeubeubhO)r}r(h'Uh(h%h)X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/compat.py:docstring of celery.utils.compat.chain_from_iterablerh.hRh0}r(h5]h4]h2]h3]h7]Uentries]r(hUX5chain_from_iterable() (in module celery.utils.compat)h Utrauh9Nh:hh"]ubh\)r}r(h'Uh(h%h)jh.h_h0}r(hahbXpyh5]h4]h2]h3]h7]hcXfunctionrhejuh9Nh:hh"]r(hg)r}r(h'Xchain_from_iterablerh(jh)hjh.hkh0}r(h5]rh ahnh*Xcelery.utils.compatrr}rbh4]h2]h3]h7]rh ahsjhuUhvuh9Nh:hh"]r(h)r}r(h'Xcelery.utils.compat.h(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCXcelery.utils.compat.rr}r(h'Uh(jubaubh)r}r(h'jh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rhCXchain_from_iterablerr}r(h'Uh(jubaubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]ubeubh)r}r(h'Uh(jh)hjh.hh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]r(h)r}r(h'X.chain.from_iterable(iterable) --> chain objectrh(jh)jh.hh0}r (h2]h3]h4]h5]h7]uh9Kh:hh"]r hCX.chain.from_iterable(iterable) --> chain objectr r }r (h'jh(jubaubh)r}r(h'XUAlternate chain() contructor taking a single iterable argument that evaluates lazily.rh(jh)jh.hh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXUAlternate chain() contructor taking a single iterable argument that evaluates lazily.rr}r(h'jh(jubaubeubeubeubah'UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]r U citationsr!]r"h:hU current_liner#NUtransform_messagesr$]r%cdocutils.nodes system_message r&)r'}r((h'Uh0}r)(h2]UlevelKh5]h4]UsourcehJh3]h7]UlineKUtypeUINFOr*uh"]r+h)r,}r-(h'Uh0}r.(h2]h3]h4]h5]h7]uh(j'h"]r/hCX@Hyperlink target "module-celery.utils.compat" is not referenced.r0r1}r2(h'Uh(j,ubah.hubah.Usystem_messager3ubaUreporterr4NUid_startr5KU autofootnotesr6]r7U citation_refsr8}r9Uindirect_targetsr:]r;Usettingsr<(cdocutils.frontend Values r=or>}r?(Ufootnote_backlinksr@KUrecord_dependenciesrANU rfc_base_urlrBUhttp://tools.ietf.org/html/rCU tracebackrDUpep_referencesrENUstrip_commentsrFNU toc_backlinksrGUentryrHU language_coderIUenrJU datestamprKNU report_levelrLKU _destinationrMNU halt_levelrNKU strip_classesrONh@NUerror_encoding_error_handlerrPUbackslashreplacerQUdebugrRNUembed_stylesheetrSUoutput_encoding_error_handlerrTUstrictrUU sectnum_xformrVKUdump_transformsrWNU docinfo_xformrXKUwarning_streamrYNUpep_file_url_templaterZUpep-%04dr[Uexit_status_levelr\KUconfigr]NUstrict_visitorr^NUcloak_email_addressesr_Utrim_footnote_reference_spacer`UenvraNUdump_pseudo_xmlrbNUexpose_internalsrcNUsectsubtitle_xformrdU source_linkreNUrfc_referencesrfNUoutput_encodingrgUutf-8rhU source_urlriNUinput_encodingrjU utf-8-sigrkU_disable_configrlNU id_prefixrmUU tab_widthrnKUerror_encodingroUUTF-8rpU_sourcerqUe/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.compat.rstrrUgettext_compactrsU generatorrtNUdump_internalsruNU smart_quotesrvU pep_base_urlrwUhttp://www.python.org/dev/peps/rxUsyntax_highlightryUlongrzUinput_encoding_error_handlerr{jUUauto_id_prefixr|Uidr}Udoctitle_xformr~Ustrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjhhhhjh hh jh jh j`h jhj0h h%hhhjhjghNhHhjhjh!cdocutils.nodes topic r)r}r(h'Uh(h%h)h,h.Utopicrh0}r(h2]h3]r(UcontentsrUlocalreh4]h5]rh!ah7]rhauh9Kh:hh"]rcdocutils.nodes pending r)r}r(h'X.. contents:: :local:h(jU transformrcdocutils.transforms.parts Contents rUdetailsr}rUlocalNsh.Upendingrh0}r(h2]h3]h4]h5]h7]uh"]ubaubhjuUsubstitution_namesr}rh.h:h0}r(h2]h5]h4]Usourceh,h3]h7]uU footnotesr]rUrefidsr}rub.PKHDD>Tcelery-2.0-archived/.doctrees/internals/reference/celery.concurrency.threads.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX=thread pool support experimental - celery.concurrency.threadsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXl/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.concurrency.threads.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U;thread-pool-support-experimental-celery-concurrency-threadsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXAThread Pool Support **EXPERIMENTAL** - celery.concurrency.threadshhhhhUtitleq,h}q-(h]h]h]h ]h#]uh%Kh&hh']q.(cdocutils.nodes Text q/XThread Pool Support q0q1}q2(hXThread Pool Support q3hh*ubcdocutils.nodes strong q4)q5}q6(hX**EXPERIMENTAL**q7h}q8(h]h]h]h ]h#]uhh*h']q9h/X EXPERIMENTALq:q;}q<(hUhh5ubahUstrongq=ubh/X - celery.concurrency.threadsq>q?}q@(hX - celery.concurrency.threadsqAhh*ubeubaubhhhUsystem_messageqBh}qC(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGqDuh%Nh&hh']qEcdocutils.nodes paragraph qF)qG}qH(hUh}qI(h]h]h]h ]h#]uhh h']qJh/Xeautodoc: failed to import module u'celery.concurrency.threads'; the following exception was raised: Traceback (most recent call last): File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/sphinx/ext/autodoc.py", line 335, in import_object __import__(self.modname) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/concurrency/threads.py", line 3, in from threadpool import ThreadPool, WorkRequest ImportError: No module named threadpool qKqL}qM(hUhhGubahU paragraphqNubaubaUcurrent_sourceqONU decorationqPNUautofootnote_startqQKUnameidsqR}qS(hUcontentsqThh"uh']qUhahUU transformerqVNU footnote_refsqW}qXUrefnamesqY}qZUsymbol_footnotesq[]q\Uautofootnote_refsq]]q^Usymbol_footnote_refsq_]q`U citationsqa]qbh&hU current_lineqcNUtransform_messagesqd]qeUreporterqfNUid_startqgKU autofootnotesqh]qiU citation_refsqj}qkUindirect_targetsql]qmUsettingsqn(cdocutils.frontend Values qooqp}qq(Ufootnote_backlinksqrKUrecord_dependenciesqsNU rfc_base_urlqtUhttp://tools.ietf.org/html/quU tracebackqvUpep_referencesqwNUstrip_commentsqxNU toc_backlinksqyUentryqzU language_codeq{Uenq|U datestampq}NU report_levelq~KU _destinationqNU halt_levelqKU strip_classesqNh,NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUl/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.concurrency.threads.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hTcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhTah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDjOcelery-2.0-archived/.doctrees/internals/reference/celery.worker.control.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X&worker control - celery.worker.controlqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.control.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U$worker-control-celery-worker-controlq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX&Worker Control - celery.worker.controlq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X&Worker Control - celery.worker.controlq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.control.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD:j[GnGnNcelery-2.0-archived/.doctrees/internals/reference/celery.serialization.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X9celery.serialization.UnpickleableExceptionWrapper.restoreqX<celery.serialization.UnpickleableExceptionWrapper.exc_moduleqX:celery.serialization.UnpickleableExceptionWrapper.exc_argsqX)celery.serialization.create_exception_clsq X'celery.serialization.subclass_exceptionq X>celery.serialization.UnpickleableExceptionWrapper.exc_cls_nameq X*serialization tools - celery.serializationq NX@celery.serialization.UnpickleableExceptionWrapper.from_exceptionq X-celery.serialization.get_pickleable_exceptionqX*celery.serialization.get_pickled_exceptionqX1celery.serialization.UnpickleableExceptionWrapperqX6celery.serialization.find_nearest_pickleable_exceptionqUcontentsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h U(serialization-tools-celery-serializationqh h hhhhhhhhhUcontentsquUchildrenq]qcdocutils.nodes section q )q!}q"(U rawsourceq#UUparentq$hUsourceq%cdocutils.nodes reprunicode q&Xf/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.serialization.rstq'q(}q)bUtagnameq*Usectionq+U attributesq,}q-(Udupnamesq.]Uclassesq/]Ubackrefsq0]Uidsq1]q2haUnamesq3]q4h auUlineq5KUdocumentq6hh]q7(cdocutils.nodes title q8)q9}q:(h#X*Serialization Tools - celery.serializationq;h$h!h%h(h*Utitleqcdocutils.nodes Text q?X*Serialization Tools - celery.serializationq@qA}qB(h#h;h$h9ubaubcdocutils.nodes target qC)qD}qE(h#Uh$h!h%U qFh*UtargetqGh,}qH(h.]h1]qIXmodule-celery.serializationqJah0]Uismodh/]h3]uh5Kh6hh]ubcsphinx.addnodes index qK)qL}qM(h#Uh$h!h%hFh*UindexqNh,}qO(h1]h0]h.]h/]h3]Uentries]qP(UsingleqQXcelery.serialization (module)Xmodule-celery.serializationUtqRauh5Kh6hh]ubhK)qS}qT(h#Uh$h!h%Nh*hNh,}qU(h1]h0]h.]h/]h3]Uentries]qV(hQXUnpickleableExceptionWrapperqWhUtqXauh5Nh6hh]ubcsphinx.addnodes desc qY)qZ}q[(h#Uh$h!h%Nh*Udescq\h,}q](Unoindexq^Udomainq_Xpyh1]h0]h.]h/]h3]Uobjtypeq`X exceptionqaUdesctypeqbhauh5Nh6hh]qc(csphinx.addnodes desc_signature qd)qe}qf(h#X@UnpickleableExceptionWrapper(exc_module, exc_cls_name, exc_args)h$hZh%U qgh*Udesc_signatureqhh,}qi(h1]qjhaUmoduleqkh&Xcelery.serializationqlqm}qnbh0]h.]h/]h3]qohaUfullnameqphWUclassqqUUfirstqruh5Nh6hh]qs(csphinx.addnodes desc_annotation qt)qu}qv(h#X exception h$heh%hgh*Udesc_annotationqwh,}qx(h.]h/]h0]h1]h3]uh5Nh6hh]qyh?X exception qzq{}q|(h#Uh$huubaubcsphinx.addnodes desc_addname q})q~}q(h#Xcelery.serialization.h$heh%hgh*U desc_addnameqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?Xcelery.serialization.qq}q(h#Uh$h~ubaubcsphinx.addnodes desc_name q)q}q(h#hWh$heh%hgh*U desc_nameqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?XUnpickleableExceptionWrapperqq}q(h#Uh$hubaubcsphinx.addnodes desc_parameterlist q)q}q(h#Uh$heh%hgh*Udesc_parameterlistqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]q(csphinx.addnodes desc_parameter q)q}q(h#X exc_moduleh,}q(h.]h/]h0]h1]h3]uh$hh]qh?X exc_moduleqq}q(h#Uh$hubah*Udesc_parameterqubh)q}q(h#X exc_cls_nameh,}q(h.]h/]h0]h1]h3]uh$hh]qh?X exc_cls_nameqq}q(h#Uh$hubah*hubh)q}q(h#Xexc_argsh,}q(h.]h/]h0]h1]h3]uh$hh]qh?Xexc_argsqq}q(h#Uh$hubah*hubeubeubcsphinx.addnodes desc_content q)q}q(h#Uh$hZh%hgh*U desc_contentqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]q(cdocutils.nodes paragraph q)q}q(h#XWraps unpickleable exceptions.qh$hh%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/serialization.py:docstring of celery.serialization.UnpickleableExceptionWrapperqh*U paragraphqh,}q(h.]h/]h0]h1]h3]uh5Kh6hh]qh?XWraps unpickleable exceptions.qq}q(h#hh$hubaubcdocutils.nodes field_list q)q}q(h#Uh$hh%Nh*U field_listqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qcdocutils.nodes field q)q}q(h#Uh,}q(h.]h/]h0]h1]h3]uh$hh]q(cdocutils.nodes field_name q)q}q(h#Uh,}q(h.]h/]h0]h1]h3]uh$hh]qh?X Parametersqͅq}q(h#Uh$hubah*U field_namequbcdocutils.nodes field_body q)q}q(h#Uh,}q(h.]h/]h0]h1]h3]uh$hh]qcdocutils.nodes bullet_list q)q}q(h#Uh,}q(h.]h/]h0]h1]h3]uh$hh]q(cdocutils.nodes list_item q)q}q(h#Uh,}q(h.]h/]h0]h1]h3]uh$hh]qh)q}q(h#Uh,}q(h.]h/]h0]h1]h3]uh$hh]q(cdocutils.nodes strong q)q}q(h#X exc_moduleh,}q(h.]h/]h0]h1]h3]uh$hh]qh?X exc_moduleq酁q}q(h#Uh$hubah*Ustrongqubh?X -- q텁q}q(h#Uh$hubh?Xsee qq}q(h#Xsee h$hubcsphinx.addnodes pending_xref q)q}q(h#X:attr:`exc_module`qh$hh%h(h*U pending_xrefqh,}q(UreftypeXattrUrefwarnqU reftargetqX exc_moduleU refdomainXpyqh1]h0]U refexplicith.]h/]h3]UrefdocqX(internals/reference/celery.serializationqUpy:classqhWU py:moduleqXcelery.serializationruh5K h]rcdocutils.nodes literal r)r}r(h#hh,}r(h.]h/]r(UxrefrhXpy-attrreh0]h1]h3]uh$hh]r h?X exc_moduler r }r (h#Uh$jubah*Uliteralr ubaubh?X.r}r(h#X.h$hubeh*hubah*U list_itemrubh)r}r(h#Uh,}r(h.]h/]h0]h1]h3]uh$hh]rh)r}r(h#Uh,}r(h.]h/]h0]h1]h3]uh$jh]r(h)r}r(h#X exc_cls_nameh,}r(h.]h/]h0]h1]h3]uh$jh]rh?X exc_cls_namerr}r(h#Uh$jubah*hubh?X -- r r!}r"(h#Uh$jubh?Xsee r#r$}r%(h#Xsee h$jubh)r&}r'(h#X:attr:`exc_cls_name`r(h$jh%h(h*hh,}r)(UreftypeXattrhhX exc_cls_nameU refdomainXpyr*h1]h0]U refexplicith.]h/]h3]hhhhWhjuh5K h]r+j)r,}r-(h#j(h,}r.(h.]h/]r/(jj*Xpy-attrr0eh0]h1]h3]uh$j&h]r1h?X exc_cls_namer2r3}r4(h#Uh$j,ubah*j ubaubh?X.r5}r6(h#X.h$jubeh*hubah*jubh)r7}r8(h#Uh,}r9(h.]h/]h0]h1]h3]uh$hh]r:h)r;}r<(h#Uh,}r=(h.]h/]h0]h1]h3]uh$j7h]r>(h)r?}r@(h#Xexc_argsh,}rA(h.]h/]h0]h1]h3]uh$j;h]rBh?Xexc_argsrCrD}rE(h#Uh$j?ubah*hubh?X -- rFrG}rH(h#Uh$j;ubh?Xsee rIrJ}rK(h#Xsee h$j;ubh)rL}rM(h#X:attr:`exc_args`rNh$j;h%Nh*hh,}rO(UreftypeXattrhhXexc_argsU refdomainXpyrPh1]h0]U refexplicith.]h/]h3]hhhhWhjuh5Nh]rQj)rR}rS(h#jNh,}rT(h.]h/]rU(jjPXpy-attrrVeh0]h1]h3]uh$jLh]rWh?Xexc_argsrXrY}rZ(h#Uh$jRubah*j ubaubeh*hubah*jubeh*U bullet_listr[ubah*U field_bodyr\ubeh*Ufieldr]ubaubhK)r^}r_(h#Uh$hh%hh*hNh,}r`(h1]h0]h.]h/]h3]Uentries]ra(hQXHexc_module (celery.serialization.UnpickleableExceptionWrapper attribute)hUtrbauh5Nh6hh]ubhY)rc}rd(h#Uh$hh%hh*h\h,}re(h^h_Xpyh1]h0]h.]h/]h3]h`X attributerfhbjfuh5Nh6hh]rg(hd)rh}ri(h#X exc_modulerjh$jch%hh*hhh,}rk(h1]rlhahkjh0]h.]h/]h3]rmhahpX'UnpickleableExceptionWrapper.exc_modulehqhWhruh5K h6hh]rnh)ro}rp(h#jjh$jhh%hh*hh,}rq(h.]h/]h0]h1]h3]uh5K h6hh]rrh?X exc_modulersrt}ru(h#Uh$joubaubaubh)rv}rw(h#Uh$jch%hh*hh,}rx(h.]h/]h0]h1]h3]uh5K h6hh]ryh)rz}r{(h#X%The module of the original exception.r|h$jvh%hh*hh,}r}(h.]h/]h0]h1]h3]uh5K h6hh]r~h?X%The module of the original exception.rr}r(h#j|h$jzubaubaubeubhK)r}r(h#Uh$hh%hh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQXJexc_cls_name (celery.serialization.UnpickleableExceptionWrapper attribute)h Utrauh5Nh6hh]ubhY)r}r(h#Uh$hh%hh*h\h,}r(h^h_Xpyh1]h0]h.]h/]h3]h`X attributerhbjuh5Nh6hh]r(hd)r}r(h#X exc_cls_namerh$jh%hh*hhh,}r(h1]rh ahkjh0]h.]h/]h3]rh ahpX)UnpickleableExceptionWrapper.exc_cls_namehqhWhruh5Kh6hh]rh)r}r(h#jh$jh%hh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?X exc_cls_namerr}r(h#Uh$jubaubaubh)r}r(h#Uh$jh%hh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh)r}r(h#X)The name of the original exception class.rh$jh%hh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?X)The name of the original exception class.rr}r(h#jh$jubaubaubeubhK)r}r(h#Uh$hh%hh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQXFexc_args (celery.serialization.UnpickleableExceptionWrapper attribute)hUtrauh5Nh6hh]ubhY)r}r(h#Uh$hh%hh*h\h,}r(h^h_Xpyh1]h0]h.]h/]h3]h`X attributerhbjuh5Nh6hh]r(hd)r}r(h#Xexc_argsrh$jh%hh*hhh,}r(h1]rhahkjh0]h.]h/]h3]rhahpX%UnpickleableExceptionWrapper.exc_argshqhWhruh5Kh6hh]rh)r}r(h#jh$jh%hh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?Xexc_argsrr}r(h#Uh$jubaubaubh)r}r(h#Uh$jh%hh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh)r}r(h#X)The arguments for the original exception.rh$jh%hh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?X)The arguments for the original exception.rr}r(h#jh$jubaubaubeubh)r}r(h#XExamplerh$hh%hh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?XExamplerr}r(h#jh$jubaubcdocutils.nodes doctest_block r)r}r(h#X>>> try: ... something_raising_unpickleable_exc() >>> except Exception, e: ... exc = UnpickleableException(e.__class__.__module__, ... e.__class__.__name__, ... e.args) ... pickle.dumps(exc) # Works fine.h$hh%Nh*U doctest_blockrh,}r(U xml:spacerUpreserverh1]h0]h.]h/]h3]uh5Nh6hh]rh?X>>> try: ... something_raising_unpickleable_exc() >>> except Exception, e: ... exc = UnpickleableException(e.__class__.__module__, ... e.__class__.__name__, ... e.args) ... pickle.dumps(exc) # Works fine.rr}r(h#Uh$jubaubhK)r}r(h#Uh$hh%Nh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQXQfrom_exception() (celery.serialization.UnpickleableExceptionWrapper class method)h Utrauh5Nh6hh]ubhY)r}r(h#Uh$hh%Nh*h\h,}r(h^h_Xpyh1]h0]h.]h/]h3]h`X classmethodrhbjuh5Nh6hh]r(hd)r}r(h#X0UnpickleableExceptionWrapper.from_exception(exc)h$jh%hgh*hhh,}r(h1]rh ahkh&Xcelery.serializationrr}rbh0]h.]h/]h3]rh ahpX+UnpickleableExceptionWrapper.from_exceptionhqhWhruh5Nh6hh]r(ht)r}r(h#U classmethod rh$jh%hgh*hwh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X classmethod rr}r(h#Uh$jubaubh)r}r(h#Xfrom_exceptionh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xfrom_exceptionrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh)r}r(h#Xexch,}r(h.]h/]h0]h1]h3]uh$jh]rh?Xexcrr}r (h#Uh$jubah*hubaubeubh)r }r (h#Uh$jh%hgh*hh,}r (h.]h/]h0]h1]h3]uh5Nh6hh]ubeubhK)r }r(h#Uh$hh%Nh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQXDrestore() (celery.serialization.UnpickleableExceptionWrapper method)hUtrauh5Nh6hh]ubhY)r}r(h#Uh$hh%Nh*h\h,}r(h^h_Xpyh1]h0]h.]h/]h3]h`Xmethodrhbjuh5Nh6hh]r(hd)r}r(h#X&UnpickleableExceptionWrapper.restore()h$jh%hgh*hhh,}r(h1]rhahkh&Xcelery.serializationrr}rbh0]h.]h/]h3]rhahpX$UnpickleableExceptionWrapper.restorehqhWhruh5Nh6hh]r(h)r }r!(h#Xrestoreh$jh%hgh*hh,}r"(h.]h/]h0]h1]h3]uh5Nh6hh]r#h?Xrestorer$r%}r&(h#Uh$j ubaubh)r'}r((h#Uh$jh%hgh*hh,}r)(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubh)r*}r+(h#Uh$jh%hgh*hh,}r,(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubeubeubhK)r-}r.(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/serialization.py:docstring of celery.serialization.create_exception_clsr/h*hNh,}r0(h1]h0]h.]h/]h3]Uentries]r1(hQX7create_exception_cls() (in module celery.serialization)h Utr2auh5Nh6hh]ubhY)r3}r4(h#Uh$h!h%j/h*h\h,}r5(h^h_Xpyh1]h0]h.]h/]h3]h`Xfunctionr6hbj6uh5Nh6hh]r7(hd)r8}r9(h#X/create_exception_cls(name, module, parent=None)h$j3h%hgh*hhh,}r:(h1]r;h ahkh&Xcelery.serializationr<r=}r>bh0]h.]h/]h3]r?h ahpXcreate_exception_clsr@hqUhruh5Nh6hh]rA(h})rB}rC(h#Xcelery.serialization.h$j8h%hgh*hh,}rD(h.]h/]h0]h1]h3]uh5Nh6hh]rEh?Xcelery.serialization.rFrG}rH(h#Uh$jBubaubh)rI}rJ(h#j@h$j8h%hgh*hh,}rK(h.]h/]h0]h1]h3]uh5Nh6hh]rLh?Xcreate_exception_clsrMrN}rO(h#Uh$jIubaubh)rP}rQ(h#Uh$j8h%hgh*hh,}rR(h.]h/]h0]h1]h3]uh5Nh6hh]rS(h)rT}rU(h#Xnameh,}rV(h.]h/]h0]h1]h3]uh$jPh]rWh?XnamerXrY}rZ(h#Uh$jTubah*hubh)r[}r\(h#Xmoduleh,}r](h.]h/]h0]h1]h3]uh$jPh]r^h?Xmoduler_r`}ra(h#Uh$j[ubah*hubh)rb}rc(h#X parent=Noneh,}rd(h.]h/]h0]h1]h3]uh$jPh]reh?X parent=Nonerfrg}rh(h#Uh$jbubah*hubeubeubh)ri}rj(h#Uh$j3h%hgh*hh,}rk(h.]h/]h0]h1]h3]uh5Nh6hh]rlh)rm}rn(h#X&Dynamically create an exception class.roh$jih%j/h*hh,}rp(h.]h/]h0]h1]h3]uh5Kh6hh]rqh?X&Dynamically create an exception class.rrrs}rt(h#joh$jmubaubaubeubhK)ru}rv(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/serialization.py:docstring of celery.serialization.find_nearest_pickleable_exceptionrwh*hNh,}rx(h1]h0]h.]h/]h3]Uentries]ry(hQXDfind_nearest_pickleable_exception() (in module celery.serialization)hUtrzauh5Nh6hh]ubhY)r{}r|(h#Uh$h!h%jwh*h\h,}r}(h^h_Xpyh1]h0]h.]h/]h3]h`Xfunctionr~hbj~uh5Nh6hh]r(hd)r}r(h#X&find_nearest_pickleable_exception(exc)rh$j{h%hgh*hhh,}r(h1]rhahkh&Xcelery.serializationrr}rbh0]h.]h/]h3]rhahpX!find_nearest_pickleable_exceptionrhqUhruh5Nh6hh]r(h})r}r(h#Xcelery.serialization.h$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.serialization.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X!find_nearest_pickleable_exceptionrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh)r}r(h#Xexch,}r(h.]h/]h0]h1]h3]uh$jh]rh?Xexcrr}r(h#Uh$jubah*hubaubeubh)r}r(h#Uh$j{h%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]r(h)r}r(h#X3With an exception instance, iterate over its super classes (by mro) and find the first super exception that is pickleable. It does not go below :exc:`Exception` (i.e. it skips :exc:`Exception`, :class:`BaseException` and :class:`object`). If that happens you should use :exc:`UnpickleableException` instead.h$jh%jwh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]r(h?XWith an exception instance, iterate over its super classes (by mro) and find the first super exception that is pickleable. It does not go below rr}r(h#XWith an exception instance, iterate over its super classes (by mro) and find the first super exception that is pickleable. It does not go below h$jubh)r}r(h#X:exc:`Exception`rh$jh%Nh*hh,}r(UreftypeXexchhX ExceptionU refdomainXpyrh1]h0]U refexplicith.]h/]h3]hhhNhjuh5Nh]rj)r}r(h#jh,}r(h.]h/]r(jjXpy-excreh0]h1]h3]uh$jh]rh?X Exceptionrr}r(h#Uh$jubah*j ubaubh?X (i.e. it skips rr}r(h#X (i.e. it skips h$jubh)r}r(h#X:exc:`Exception`rh$jh%Nh*hh,}r(UreftypeXexchhX ExceptionU refdomainXpyrh1]h0]U refexplicith.]h/]h3]hhhNhjuh5Nh]rj)r}r(h#jh,}r(h.]h/]r(jjXpy-excreh0]h1]h3]uh$jh]rh?X Exceptionrr}r(h#Uh$jubah*j ubaubh?X, rr}r(h#X, h$jubh)r}r(h#X:class:`BaseException`rh$jh%Nh*hh,}r(UreftypeXclasshhX BaseExceptionU refdomainXpyrh1]h0]U refexplicith.]h/]h3]hhhNhjuh5Nh]rj)r}r(h#jh,}r(h.]h/]r(jjXpy-classreh0]h1]h3]uh$jh]rh?X BaseExceptionrr}r(h#Uh$jubah*j ubaubh?X and rr}r(h#X and h$jubh)r}r(h#X:class:`object`rh$jh%Nh*hh,}r(UreftypeXclasshhXobjectU refdomainXpyrh1]h0]U refexplicith.]h/]h3]hhhNhjuh5Nh]rj)r}r(h#jh,}r(h.]h/]r(jjXpy-classreh0]h1]h3]uh$jh]rh?Xobjectrr}r(h#Uh$jubah*j ubaubh?X"). If that happens you should use rr}r(h#X"). If that happens you should use h$jubh)r}r(h#X:exc:`UnpickleableException`rh$jh%Nh*hh,}r(UreftypeXexchhXUnpickleableExceptionU refdomainXpyrh1]h0]U refexplicith.]h/]h3]hhhNhjuh5Nh]rj)r}r(h#jh,}r(h.]h/]r(jjXpy-excreh0]h1]h3]uh$jh]rh?XUnpickleableExceptionrr}r(h#Uh$jubah*j ubaubh?X instead.rr}r(h#X instead.h$jubeubh)r }r (h#Uh$jh%jwh*hh,}r (h.]h/]h0]h1]h3]uh5Nh6hh]r (h)r }r(h#Uh,}r(h.]h/]h0]h1]h3]uh$j h]r(h)r}r(h#Uh,}r(h.]h/]h0]h1]h3]uh$j h]rh?X Parametersrr}r(h#Uh$jubah*hubh)r}r(h#Uh,}r(h.]h/]h0]h1]h3]uh$j h]rh)r}r(h#Uh,}r(h.]h/]h0]h1]h3]uh$jh]r(h)r }r!(h#Xexch,}r"(h.]h/]h0]h1]h3]uh$jh]r#h?Xexcr$r%}r&(h#Uh$j ubah*hubh?X -- r'r(}r)(h#Uh$jubh?XAn exception instance.r*r+}r,(h#XAn exception instance.r-h$jubeh*hubah*j\ubeh*j]ubh)r.}r/(h#Uh,}r0(h.]h/]h0]h1]h3]uh$j h]r1(h)r2}r3(h#Uh,}r4(h.]h/]h0]h1]h3]uh$j.h]r5h?XReturnsr6r7}r8(h#Uh$j2ubah*hubh)r9}r:(h#Uh,}r;(h.]h/]h0]h1]h3]uh$j.h]r<h)r=}r>(h#Uh,}r?(h.]h/]h0]h1]h3]uh$j9h]r@(h?X"the nearest exception if it's not rArB}rC(h#X"the nearest exception if it's not h$j=ubh)rD}rE(h#X:exc:`Exception`rFh$j=h%Nh*hh,}rG(UreftypeXexchhX ExceptionU refdomainXpyrHh1]h0]U refexplicith.]h/]h3]hhhNhjuh5Nh]rIj)rJ}rK(h#jFh,}rL(h.]h/]rM(jjHXpy-excrNeh0]h1]h3]uh$jDh]rOh?X ExceptionrPrQ}rR(h#Uh$jJubah*j ubaubh?X or below, if it is it returns rSrT}rU(h#X or below, if it is it returns h$j=ubj)rV}rW(h#X``None``h,}rX(h.]h/]h0]h1]h3]uh$j=h]rYh?XNonerZr[}r\(h#Uh$jVubah*j ubh?X.r]}r^(h#X.h$j=ubeh*hubah*j\ubeh*j]ubeubh)r_}r`(h#X:rtype :exc:`Exception`:rah$jh%jwh*hh,}rb(h.]h/]h0]h1]h3]uh5K h6hh]rc(h?X:rtype rdre}rf(h#X:rtype h$j_ubh)rg}rh(h#X:exc:`Exception`rih$j_h%Nh*hh,}rj(UreftypeXexchhX ExceptionU refdomainXpyrkh1]h0]U refexplicith.]h/]h3]hhhNhjuh5Nh]rlj)rm}rn(h#jih,}ro(h.]h/]rp(jjkXpy-excrqeh0]h1]h3]uh$jgh]rrh?X Exceptionrsrt}ru(h#Uh$jmubah*j ubaubh?X:rv}rw(h#X:h$j_ubeubeubeubhK)rx}ry(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/serialization.py:docstring of celery.serialization.get_pickleable_exceptionrzh*hNh,}r{(h1]h0]h.]h/]h3]Uentries]r|(hQX;get_pickleable_exception() (in module celery.serialization)hUtr}auh5Nh6hh]ubhY)r~}r(h#Uh$h!h%jzh*h\h,}r(h^h_Xpyh1]h0]h.]h/]h3]h`Xfunctionrhbjuh5Nh6hh]r(hd)r}r(h#Xget_pickleable_exception(exc)h$j~h%hgh*hhh,}r(h1]rhahkh&Xcelery.serializationrr}rbh0]h.]h/]h3]rhahpXget_pickleable_exceptionrhqUhruh5Nh6hh]r(h})r}r(h#Xcelery.serialization.h$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.serialization.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xget_pickleable_exceptionrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh)r}r(h#Xexch,}r(h.]h/]h0]h1]h3]uh$jh]rh?Xexcrr}r(h#Uh$jubah*hubaubeubh)r}r(h#Uh$j~h%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh)r}r(h#X"Make sure exception is pickleable.rh$jh%jzh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?X"Make sure exception is pickleable.rr}r(h#jh$jubaubaubeubhK)r}r(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/serialization.py:docstring of celery.serialization.get_pickled_exceptionrh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX8get_pickled_exception() (in module celery.serialization)hUtrauh5Nh6hh]ubhY)r}r(h#Uh$h!h%jh*h\h,}r(h^h_Xpyh1]h0]h.]h/]h3]h`Xfunctionrhbjuh5Nh6hh]r(hd)r}r(h#Xget_pickled_exception(exc)h$jh%hgh*hhh,}r(h1]rhahkh&Xcelery.serializationrr}rbh0]h.]h/]h3]rhahpXget_pickled_exceptionrhqUhruh5Nh6hh]r(h})r}r(h#Xcelery.serialization.h$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.serialization.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xget_pickled_exceptionrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh)r}r(h#Xexch,}r(h.]h/]h0]h1]h3]uh$jh]rh?Xexcrr}r(h#Uh$jubah*hubaubeubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh)r}r(h#XUGet original exception from exception pickled using :meth:`get_pickleable_exception`.h$jh%jh*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]r(h?X4Get original exception from exception pickled using rr}r(h#X4Get original exception from exception pickled using h$jubh)r}r(h#X :meth:`get_pickleable_exception`rh$jh%Nh*hh,}r(UreftypeXmethhhXget_pickleable_exceptionU refdomainXpyrh1]h0]U refexplicith.]h/]h3]hhhNhjuh5Nh]rj)r}r(h#jh,}r(h.]h/]r(jjXpy-methreh0]h1]h3]uh$jh]rh?Xget_pickleable_exception()rr}r(h#Uh$jubah*j ubaubh?X.r}r(h#X.h$jubeubaubeubhK)r}r(h#Uh$h!h%Nh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX5subclass_exception() (in module celery.serialization)h Utrauh5Nh6hh]ubhY)r}r(h#Uh$h!h%Nh*h\h,}r(h^h_Xpyh1]h0]h.]h/]h3]h`Xfunctionrhbjuh5Nh6hh]r(hd)r}r(h#X(subclass_exception(name, parent, module)h$jh%hgh*hhh,}r(h1]r h ahkh&Xcelery.serializationr r }r bh0]h.]h/]h3]r h ahpXsubclass_exceptionrhqUhruh5Nh6hh]r(h})r}r(h#Xcelery.serialization.h$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.serialization.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xsubclass_exceptionrr}r(h#Uh$jubaubh)r}r(h#Uh$jh%hgh*hh,}r (h.]h/]h0]h1]h3]uh5Nh6hh]r!(h)r"}r#(h#Xnameh,}r$(h.]h/]h0]h1]h3]uh$jh]r%h?Xnamer&r'}r((h#Uh$j"ubah*hubh)r)}r*(h#Xparenth,}r+(h.]h/]h0]h1]h3]uh$jh]r,h?Xparentr-r.}r/(h#Uh$j)ubah*hubh)r0}r1(h#Xmoduleh,}r2(h.]h/]h0]h1]h3]uh$jh]r3h?Xmoduler4r5}r6(h#Uh$j0ubah*hubeubeubh)r7}r8(h#Uh$jh%hgh*hh,}r9(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubeubah#UU transformerr:NU footnote_refsr;}r<Urefnamesr=}r>Usymbol_footnotesr?]r@Uautofootnote_refsrA]rBUsymbol_footnote_refsrC]rDU citationsrE]rFh6hU current_linerGNUtransform_messagesrH]rIcdocutils.nodes system_message rJ)rK}rL(h#Uh,}rM(h.]UlevelKh1]h0]UsourcehFh/]h3]UlineKUtypeUINFOrNuh]rOh)rP}rQ(h#Uh,}rR(h.]h/]h0]h1]h3]uh$jKh]rSh?XAHyperlink target "module-celery.serialization" is not referenced.rTrU}rV(h#Uh$jPubah*hubah*Usystem_messagerWubaUreporterrXNUid_startrYKU autofootnotesrZ]r[U citation_refsr\}r]Uindirect_targetsr^]r_Usettingsr`(cdocutils.frontend Values raorb}rc(Ufootnote_backlinksrdKUrecord_dependenciesreNU rfc_base_urlrfUhttp://tools.ietf.org/html/rgU tracebackrhUpep_referencesriNUstrip_commentsrjNU toc_backlinksrkUentryrlU language_codermUenrnU datestamproNU report_levelrpKU _destinationrqNU halt_levelrrKU strip_classesrsNh from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUf/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.base.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDUkg?celery-2.0-archived/.doctrees/internals/reference/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qXinternal module referenceqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUinternal-module-referenceqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXW/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXInternal Module Referenceq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XInternal Module Referenceq3q4}q5(hh.hh,ubaubcdocutils.nodes field_list q6)q7}q8(hUhhhhhU field_listq9h}q:(h!]h"]h#]h$]h&]uh(Kh)hh]q;(cdocutils.nodes field q<)q=}q>(hUhh7hhhUfieldq?h}q@(h!]h"]h#]h$]h&]uh(Kh)hh]qA(cdocutils.nodes field_name qB)qC}qD(hXReleaseqEh}qF(h!]h"]h#]h$]h&]uhh=h]qGh2XReleaseqHqI}qJ(hhEhhCubahU field_nameqKubcdocutils.nodes field_body qL)qM}qN(hX |version|qOh}qP(h!]h"]h#]h$]h&]uhh=h]qQcdocutils.nodes paragraph qR)qS}qT(hhOhhMhhhU paragraphqUh}qV(h!]h"]h#]h$]h&]uh(Kh]qWh2X2.0qXqY}qZ(hU2.0q[hhSubaubahU field_bodyq\ubeubh<)q]}q^(hUhh7hhhh?h}q_(h!]h"]h#]h$]h&]uh(Kh)hh]q`(hB)qa}qb(hXDateqch}qd(h!]h"]h#]h$]h&]uhh]h]qeh2XDateqfqg}qh(hhchhaubahhKubhL)qi}qj(hX|today| h}qk(h!]h"]h#]h$]h&]uhh]h]qlhR)qm}qn(hX|today|qohhihhhhUh}qp(h!]h"]h#]h$]h&]uh(Kh]qqh2XFebruary 04, 2014qrqs}qt(hXFebruary 04, 2014hhmubaubahh\ubeubeubcdocutils.nodes compound qu)qv}qw(hUhhhhhUcompoundqxh}qy(h!]h"]qzUtoctree-wrapperq{ah#]h$]h&]uh(Nh)hh]q|csphinx.addnodes toctree q})q~}q(hUhhvhhhUtoctreeqh}q(UnumberedqKU includehiddenqhXinternals/reference/indexqU titlesonlyqUglobqh$]h#]h!]h"]h&]Uentriesq]q(NX!internals/reference/celery.workerqqNX*internals/reference/celery.worker.listenerqqNX%internals/reference/celery.worker.jobqqNX-internals/reference/celery.worker.controllersqqNX)internals/reference/celery.worker.bucketsqqNX+internals/reference/celery.worker.schedulerqqNX+internals/reference/celery.worker.heartbeatqqNX)internals/reference/celery.worker.controlqqNX2internals/reference/celery.worker.control.builtinsqqNX2internals/reference/celery.worker.control.registryqqNX'internals/reference/celery.worker.stateqqNX0internals/reference/celery.concurrency.processesqqNX5internals/reference/celery.concurrency.processes.poolqqNX.internals/reference/celery.concurrency.threadsqqNXinternals/reference/celery.beatqqNX#internals/reference/celery.backendsqqNX(internals/reference/celery.backends.baseqqNX,internals/reference/celery.backends.databaseqqNX)internals/reference/celery.backends.cacheqqNX(internals/reference/celery.backends.amqpqqNX+internals/reference/celery.backends.mongodbqqNX+internals/reference/celery.backends.pyredisqqNX-internals/reference/celery.backends.cassandraqqNX*internals/reference/celery.backends.tyrantqqNX(internals/reference/celery.execute.traceqqNX(internals/reference/celery.serializationqqNX)internals/reference/celery.datastructuresqqNX!internals/reference/celery.routesqqNXinternals/reference/celery.logqqNX$internals/reference/celery.db.modelsqÆqNX%internals/reference/celery.db.sessionqņqNX internals/reference/celery.utilsqdžqNX*internals/reference/celery.utils.timeutilsqɆqNX%internals/reference/celery.utils.infoqˆqNX'internals/reference/celery.utils.compatq͆qNX%internals/reference/celery.utils.mailqφqNX&internals/reference/celery.utils.patchqцqNX+internals/reference/celery.utils.functionalqӆqNX)internals/reference/celery.utils.dispatchqՆqNX0internals/reference/celery.utils.dispatch.signalq׆qNX1internals/reference/celery.utils.dispatch.saferefqنqNX#internals/reference/celery.platformqۆqeUhiddenq݉U includefilesq]q(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhheUmaxdepthqKuh(Kh]ubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelr KU _destinationr NU halt_levelr KU strip_classesr Nh/NUerror_encoding_error_handlerr UbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsr NUsectsubtitle_xformr!U source_linkr"NUrfc_referencesr#NUoutput_encodingr$Uutf-8r%U source_urlr&NUinput_encodingr'U utf-8-sigr(U_disable_configr)NU id_prefixr*UU tab_widthr+KUerror_encodingr,UUTF-8r-U_sourcer.UW/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/index.rstr/Ugettext_compactr0U generatorr1NUdump_internalsr2NU smart_quotesr3U pep_base_urlr4Uhttp://www.python.org/dev/peps/r5Usyntax_highlightr6Ulongr7Uinput_encoding_error_handlerr8jUauto_id_prefixr9Uidr:Udoctitle_xformr;Ustrip_elements_with_classesr<NU _config_filesr=]Ufile_insertion_enabledr>U raw_enabledr?KU dump_settingsr@NubUsymbol_footnote_startrAKUidsrB}rChhsUsubstitution_namesrD}rEhh)h}rF(h!]h$]h#]Usourcehh"]h&]uU footnotesrG]rHUrefidsrI}rJub.PKHDDMxpddRcelery-2.0-archived/.doctrees/internals/reference/celery.backends.database.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX7backend: sqlalchemy database - celery.backends.databaseqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXj/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.database.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U4backend-sqlalchemy-database-celery-backends-databaseq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX7Backend: SQLAlchemy Database - celery.backends.databaseq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X7Backend: SQLAlchemy Database - celery.backends.databaseq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUj/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.database.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDnXXVcelery-2.0-archived/.doctrees/internals/reference/celery.concurrency.processes.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X;multiprocessing pool support - celery.concurrency.processesqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXn/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.concurrency.processes.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U9multiprocessing-pool-support-celery-concurrency-processesq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX;Multiprocessing Pool Support - celery.concurrency.processesq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X;Multiprocessing Pool Support - celery.concurrency.processesq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import log File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/log.py", line 9, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUn/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.concurrency.processes.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD} ,,Kcelery-2.0-archived/.doctrees/internals/reference/celery.utils.mail.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery.utils.mail.MailerqXcelery.utils.mail.mail_adminsqXcelery.utils.mail.Mailer.sendqX"sending e-mail - celery.utils.mailq NX!celery.utils.mail.SendmailWarningq Xcelery.utils.mail.Messageq Ucontentsq NuUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh U sending-e-mail-celery-utils-mailqh h h h h UcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode q Xc/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.mail.rstq!q"}q#bUtagnameq$Usectionq%U attributesq&}q'(Udupnamesq(]Uclassesq)]Ubackrefsq*]Uidsq+]q,haUnamesq-]q.h auUlineq/KUdocumentq0hh]q1(cdocutils.nodes title q2)q3}q4(hX"Sending E-mail - celery.utils.mailq5hhhh"h$Utitleq6h&}q7(h(]h)]h*]h+]h-]uh/Kh0hh]q8cdocutils.nodes Text q9X"Sending E-mail - celery.utils.mailq:q;}q<(hh5hh3ubaubcdocutils.nodes target q=)q>}q?(hUhhhU q@h$UtargetqAh&}qB(h(]h+]qCXmodule-celery.utils.mailqDah*]Uismodh)]h-]uh/Kh0hh]ubcsphinx.addnodes index qE)qF}qG(hUhhhh@h$UindexqHh&}qI(h+]h*]h(]h)]h-]Uentries]qJ(UsingleqKXcelery.utils.mail (module)Xmodule-celery.utils.mailUtqLauh/Kh0hh]ubhE)qM}qN(hUhhhNh$hHh&}qO(h+]h*]h(]h)]h-]Uentries]qP(hKX#Mailer (class in celery.utils.mail)hUtqQauh/Nh0hh]ubcsphinx.addnodes desc qR)qS}qT(hUhhhNh$UdescqUh&}qV(UnoindexqWUdomainqXXpyh+]h*]h(]h)]h-]UobjtypeqYXclassqZUdesctypeq[hZuh/Nh0hh]q\(csphinx.addnodes desc_signature q])q^}q_(hX:Mailer(host='localhost', port=0, user=None, password=None)hhShU q`h$Udesc_signatureqah&}qb(h+]qchaUmoduleqdh Xcelery.utils.mailqeqf}qgbh*]h(]h)]h-]qhhaUfullnameqiXMailerqjUclassqkUUfirstqluh/Nh0hh]qm(csphinx.addnodes desc_annotation qn)qo}qp(hXclass hh^hh`h$Udesc_annotationqqh&}qr(h(]h)]h*]h+]h-]uh/Nh0hh]qsh9Xclass qtqu}qv(hUhhoubaubcsphinx.addnodes desc_addname qw)qx}qy(hXcelery.utils.mail.hh^hh`h$U desc_addnameqzh&}q{(h(]h)]h*]h+]h-]uh/Nh0hh]q|h9Xcelery.utils.mail.q}q~}q(hUhhxubaubcsphinx.addnodes desc_name q)q}q(hhjhh^hh`h$U desc_nameqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9XMailerqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh^hh`h$Udesc_parameterlistqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]q(csphinx.addnodes desc_parameter q)q}q(hXhost='localhost'h&}q(h(]h)]h*]h+]h-]uhhh]qh9Xhost='localhost'qq}q(hUhhubah$Udesc_parameterqubh)q}q(hXport=0h&}q(h(]h)]h*]h+]h-]uhhh]qh9Xport=0qq}q(hUhhubah$hubh)q}q(hX user=Noneh&}q(h(]h)]h*]h+]h-]uhhh]qh9X user=Noneqq}q(hUhhubah$hubh)q}q(hX password=Noneh&}q(h(]h)]h*]h+]h-]uhhh]qh9X password=Noneqq}q(hUhhubah$hubeubeubcsphinx.addnodes desc_content q)q}q(hUhhShh`h$U desc_contentqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]q(hE)q}q(hUhhhNh$hHh&}q(h+]h*]h(]h)]h-]Uentries]q(hKX(send() (celery.utils.mail.Mailer method)hUtqauh/Nh0hh]ubhR)q}q(hUhhhNh$hUh&}q(hWhXXpyh+]h*]h(]h)]h-]hYXmethodqh[huh/Nh0hh]q(h])q}q(hXMailer.send(message)qhhhh`h$hah&}q(h+]qhahdh Xcelery.utils.mailq…q}qbh*]h(]h)]h-]qhahiX Mailer.sendhkhjhluh/Nh0hh]q(h)q}q(hXsendhhhh`h$hh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9Xsendq˅q}q(hUhhubaubh)q}q(hUhhhh`h$hh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh)q}q(hXmessageh&}q(h(]h)]h*]h+]h-]uhhh]qh9Xmessageqօq}q(hUhhubah$hubaubeubh)q}q(hUhhhh`h$hh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]ubeubeubeubhE)q}q(hUhhhNh$hHh&}q(h+]h*]h(]h)]h-]Uentries]q(hKX$Message (class in celery.utils.mail)h Utqauh/Nh0hh]ubhR)q}q(hUhhhNh$hUh&}q(hWhXXpyh+]h*]h(]h)]h-]hYXclassqh[huh/Nh0hh]q(h])q}q(hXJMessage(to=None, sender=None, subject=None, body=None, charset='us-ascii')hhhh`h$hah&}q(h+]qh ahdh Xcelery.utils.mailqꅁq}qbh*]h(]h)]h-]qh ahiXMessageqhkUhluh/Nh0hh]q(hn)q}q(hXclass hhhh`h$hqh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9Xclass qq}q(hUhhubaubhw)q}q(hXcelery.utils.mail.hhhh`h$hzh&}q(h(]h)]h*]h+]h-]uh/Nh0hh]qh9Xcelery.utils.mail.qq}q(hUhhubaubh)q}q(hhhhhh`h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9XMessagerr}r(hUhhubaubh)r}r(hUhhhh`h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]r(h)r }r (hXto=Noneh&}r (h(]h)]h*]h+]h-]uhjh]r h9Xto=Noner r}r(hUhj ubah$hubh)r}r(hX sender=Noneh&}r(h(]h)]h*]h+]h-]uhjh]rh9X sender=Nonerr}r(hUhjubah$hubh)r}r(hX subject=Noneh&}r(h(]h)]h*]h+]h-]uhjh]rh9X subject=Nonerr}r(hUhjubah$hubh)r}r(hX body=Noneh&}r (h(]h)]h*]h+]h-]uhjh]r!h9X body=Noner"r#}r$(hUhjubah$hubh)r%}r&(hXcharset='us-ascii'h&}r'(h(]h)]h*]h+]h-]uhjh]r(h9Xcharset='us-ascii'r)r*}r+(hUhj%ubah$hubeubeubh)r,}r-(hUhhhh`h$hh&}r.(h(]h)]h*]h+]h-]uh/Nh0hh]ubeubhE)r/}r0(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/mail.py:docstring of celery.utils.mail.SendmailWarningr1h$hHh&}r2(h+]h*]h(]h)]h-]Uentries]r3(hKXSendmailWarningr4h Utr5auh/Nh0hh]ubhR)r6}r7(hUhhhj1h$hUh&}r8(hWhXXpyh+]h*]h(]h)]h-]hYX exceptionr9h[j9uh/Nh0hh]r:(h])r;}r<(hj4hj6hh`h$hah&}r=(h+]r>h ahdh Xcelery.utils.mailr?r@}rAbh*]h(]h)]h-]rBh ahij4hkUhluh/Nh0hh]rC(hn)rD}rE(hX exception hj;hh`h$hqh&}rF(h(]h)]h*]h+]h-]uh/Nh0hh]rGh9X exception rHrI}rJ(hUhjDubaubhw)rK}rL(hXcelery.utils.mail.hj;hh`h$hzh&}rM(h(]h)]h*]h+]h-]uh/Nh0hh]rNh9Xcelery.utils.mail.rOrP}rQ(hUhjKubaubh)rR}rS(hj4hj;hh`h$hh&}rT(h(]h)]h*]h+]h-]uh/Nh0hh]rUh9XSendmailWarningrVrW}rX(hUhjRubaubeubh)rY}rZ(hUhj6hh`h$hh&}r[(h(]h)]h*]h+]h-]uh/Nh0hh]r\cdocutils.nodes paragraph r])r^}r_(hX2Problem happened while sending the e-mail message.r`hjYhj1h$U paragraphrah&}rb(h(]h)]h*]h+]h-]uh/Kh0hh]rch9X2Problem happened while sending the e-mail message.rdre}rf(hj`hj^ubaubaubeubhE)rg}rh(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/mail.py:docstring of celery.utils.mail.mail_adminsrih$hHh&}rj(h+]h*]h(]h)]h-]Uentries]rk(hKX+mail_admins() (in module celery.utils.mail)hUtrlauh/Nh0hh]ubhR)rm}rn(hUhhhjih$hUh&}ro(hWhXXpyh+]h*]h(]h)]h-]hYXfunctionrph[jpuh/Nh0hh]rq(h])rr}rs(hX2mail_admins(subject, message, fail_silently=False)hjmhh`h$hah&}rt(h+]ruhahdh Xcelery.utils.mailrvrw}rxbh*]h(]h)]h-]ryhahiX mail_adminsrzhkUhluh/Nh0hh]r{(hw)r|}r}(hXcelery.utils.mail.hjrhh`h$hzh&}r~(h(]h)]h*]h+]h-]uh/Nh0hh]rh9Xcelery.utils.mail.rr}r(hUhj|ubaubh)r}r(hjzhjrhh`h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rh9X mail_adminsrr}r(hUhjubaubh)r}r(hUhjrhh`h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]r(h)r}r(hXsubjecth&}r(h(]h)]h*]h+]h-]uhjh]rh9Xsubjectrr}r(hUhjubah$hubh)r}r(hXmessageh&}r(h(]h)]h*]h+]h-]uhjh]rh9Xmessagerr}r(hUhjubah$hubh)r}r(hXfail_silently=Falseh&}r(h(]h)]h*]h+]h-]uhjh]rh9Xfail_silently=Falserr}r(hUhjubah$hubeubeubh)r}r(hUhjmhh`h$hh&}r(h(]h)]h*]h+]h-]uh/Nh0hh]rj])r}r(hX,Send a message to the admins in conf.ADMINS.rhjhjih$jah&}r(h(]h)]h*]h+]h-]uh/Kh0hh]rh9X,Send a message to the admins in conf.ADMINS.rr}r(hjhjubaubaubeubeubahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh0hU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(hUh&}r(h(]UlevelKh+]h*]Usourceh@h)]h-]UlineKUtypeUINFOruh]rj])r}r(hUh&}r(h(]h)]h*]h+]h-]uhjh]rh9X>Hyperlink target "module-celery.utils.mail" is not referenced.rr}r(hUhjubah$jaubah$Usystem_messagerubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh6NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8r U_sourcer Uc/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.mail.rstr Ugettext_compactr U generatorr NUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hh^h j;hjrhhhhhDh>h hhcdocutils.nodes topic r )r!}r"(hUhhhh"h$Utopicr#h&}r$(h(]h)]r%(Ucontentsr&Ulocalr'eh*]h+]r(hah-]r)h auh/Kh0hh]r*cdocutils.nodes pending r+)r,}r-(hX.. contents:: :local:hj!U transformr.cdocutils.transforms.parts Contents r/Udetailsr0}r1UlocalNsh$Upendingr2h&}r3(h(]h)]h*]h+]h-]uh]ubaubuUsubstitution_namesr4}r5h$h0h&}r6(h(]h+]h*]Usourceh"h)]h-]uU footnotesr7]r8Urefidsr9}r:ub.PKHDD"Mcelery-2.0-archived/.doctrees/internals/reference/celery.worker.state.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X"worker state - celery.worker.stateqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXe/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.state.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U worker-state-celery-worker-stateq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX"Worker State - celery.worker.stateq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X"Worker State - celery.worker.stateq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUe/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.state.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDCo11Qcelery-2.0-archived/.doctrees/internals/reference/celery.worker.heartbeat.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX+worker heartbeats - celery.worker.heartbeatqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.heartbeat.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U)worker-heartbeats-celery-worker-heartbeatq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX+Worker Heartbeats - celery.worker.heartbeatq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X+Worker Heartbeats - celery.worker.heartbeatq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.heartbeat.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD;hnNnNPcelery-2.0-archived/.doctrees/internals/reference/celery.utils.timeutils.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X0time and date utilities - celery.utils.timeutilsqNX(celery.utils.timeutils.timedelta_secondsqX'celery.utils.timeutils.delta_resolutionqX celery.utils.timeutils.remainingq Xcelery.utils.timeutils.rateq Xcelery.utils.timeutils.weekdayq Ucontentsq NuUsubstitution_defsq }qUparse_messagesq]qcdocutils.nodes system_message q)q}q(U rawsourceqUU attributesq}q(Udupnamesq]UlevelKUidsq]Ubackrefsq]UsourceX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/timeutils.py:docstring of celery.utils.timeutils.remainingqUclassesq]Unamesq]UlineK UtypeUERRORquUparentqcdocutils.nodes paragraph q)q }q!(hUh}q"(h]h]h]h]h]uhcdocutils.nodes list_item q#)q$}q%(hUh}q&(h]h]h]h]h]uhcdocutils.nodes bullet_list q')q(}q)(hUh}q*(h]h]h]h]h]uhcdocutils.nodes field_body q+)q,}q-(hUh}q.(h]h]h]h]h]uhcdocutils.nodes field q/)q0}q1(hUh}q2(h]h]h]h]h]uhcdocutils.nodes field_list q3)q4}q5(hUhcsphinx.addnodes desc_content q6)q7}q8(hUhcsphinx.addnodes desc q9)q:}q;(hUhcdocutils.nodes section q<)q=}q>(hUhhUsourceq?cdocutils.nodes reprunicode q@Xh/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.timeutils.rstqAqB}qCbUtagnameqDUsectionqEh}qF(h]h]h]h]qGU.time-and-date-utilities-celery-utils-timeutilsqHah]qIhauUlineqJKUdocumentqKhUchildrenqL]qM(cdocutils.nodes title qN)qO}qP(hX0Time and Date Utilities - celery.utils.timeutilsqQhh=h?hBhDUtitleqRh}qS(h]h]h]h]h]uhJKhKhhL]qTcdocutils.nodes Text qUX0Time and Date Utilities - celery.utils.timeutilsqVqW}qX(hhQhhOubaubcdocutils.nodes target qY)qZ}q[(hUhh=h?U q\hDUtargetq]h}q^(h]h]q_Xmodule-celery.utils.timeutilsq`ah]Uismodh]h]uhJKhKhhL]ubcsphinx.addnodes index qa)qb}qc(hUhh=h?h\hDUindexqdh}qe(h]h]h]h]h]Uentries]qf(UsingleqgXcelery.utils.timeutils (module)Xmodule-celery.utils.timeutilsUtqhauhJKhKhhL]ubha)qi}qj(hUhh=h?X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/timeutils.py:docstring of celery.utils.timeutils.delta_resolutionqkhDhdh}ql(h]h]h]h]h]Uentries]qm(hgX5delta_resolution() (in module celery.utils.timeutils)hUtqnauhJNhKhhL]ubh9)qo}qp(hUhh=h?hkhDUdescqqh}qr(UnoindexqsUdomainqtXpyh]h]h]h]h]UobjtypequXfunctionqvUdesctypeqwhvuhJNhKhhL]qx(csphinx.addnodes desc_signature qy)qz}q{(hXdelta_resolution(dt, delta)hhoh?U q|hDUdesc_signatureq}h}q~(h]qhaUmoduleqh@Xcelery.utils.timeutilsqq}qbh]h]h]h]qhaUfullnameqXdelta_resolutionqUclassqUUfirstquhJNhKhhL]q(csphinx.addnodes desc_addname q)q}q(hXcelery.utils.timeutils.hhzh?h|hDU desc_addnameqh}q(h]h]h]h]h]uhJNhKhhL]qhUXcelery.utils.timeutils.qq}q(hUhhubaubcsphinx.addnodes desc_name q)q}q(hhhhzh?h|hDU desc_nameqh}q(h]h]h]h]h]uhJNhKhhL]qhUXdelta_resolutionqq}q(hUhhubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhhzh?h|hDUdesc_parameterlistqh}q(h]h]h]h]h]uhJNhKhhL]q(csphinx.addnodes desc_parameter q)q}q(hXdth}q(h]h]h]h]h]uhhhL]qhUXdtqq}q(hUhhubahDUdesc_parameterqubh)q}q(hXdeltah}q(h]h]h]h]h]uhhhL]qhUXdeltaqq}q(hUhhubahDhubeubeubh6)q}q(hUhhoh?h|hDU desc_contentqh}q(h]h]h]h]h]uhJNhKhhL]q(h)q}q(hX2Round a datetime to the resolution of a timedelta.qhhh?hkhDU paragraphqh}q(h]h]h]h]h]uhJKhKhhL]qhUX2Round a datetime to the resolution of a timedelta.qq}q(hhhhubaubh)q}q(hXIf the timedelta is in days, the datetime will be rounded to the nearest days, if the timedelta is in hours the datetime will be rounded to the nearest hour, and so on until seconds which will just return the original datetime.qhhh?hkhDhh}q(h]h]h]h]h]uhJKhKhhL]qhUXIf the timedelta is in days, the datetime will be rounded to the nearest days, if the timedelta is in hours the datetime will be rounded to the nearest hour, and so on until seconds which will just return the original datetime.qŅq}q(hhhhubaubeubeubha)q}q(hUhh=h?X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/timeutils.py:docstring of celery.utils.timeutils.rateqhDhdh}q(h]h]h]h]h]Uentries]q(hgX)rate() (in module celery.utils.timeutils)h UtqauhJNhKhhL]ubh9)q}q(hUhh=h?hhDhqh}q(hshtXpyh]h]h]h]h]huXfunctionqhwhuhJNhKhhL]q(hy)q}q(hX rate(rate)hhh?h|hDh}h}q(h]qh ahh@Xcelery.utils.timeutilsqׅq}qbh]h]h]h]qh ahXrateqhUhuhJNhKhhL]q(h)q}q(hXcelery.utils.timeutils.hhh?h|hDhh}q(h]h]h]h]h]uhJNhKhhL]qhUXcelery.utils.timeutils.qᅁq}q(hUhhubaubh)q}q(hhhhh?h|hDhh}q(h]h]h]h]h]uhJNhKhhL]qhUXrateq腁q}q(hUhhubaubh)q}q(hUhhh?h|hDhh}q(h]h]h]h]h]uhJNhKhhL]qh)q}q(hXrateh}q(h]h]h]h]h]uhhhL]qhUXrateqq}q(hUhhubahDhubaubeubh6)q}q(hUhhh?h|hDhh}q(h]h]h]h]h]uhJNhKhhL]qh)q}q(hXSParses rate strings, such as ``"100/m"`` or ``"2/h"`` and converts them to seconds.hhh?hhDhh}q(h]h]h]h]h]uhJKhKhhL]q(hUXParses rate strings, such as qq}r(hXParses rate strings, such as hhubcdocutils.nodes literal r)r}r(hX ``"100/m"``h}r(h]h]h]h]h]uhhhL]rhUX"100/m"rr}r(hUhjubahDUliteralr ubhUX or r r }r (hX or hhubj)r }r(hX ``"2/h"``h}r(h]h]h]h]h]uhhhL]rhUX"2/h"rr}r(hUhj ubahDj ubhUX and converts them to seconds.rr}r(hX and converts them to seconds.hhubeubaubeubha)r}r(hUhh=h?NhDhdh}r(h]h]h]h]h]Uentries]r(hgX.remaining() (in module celery.utils.timeutils)h UtrauhJNhKhhL]ubh:ha)r}r(hUhh=h?X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/timeutils.py:docstring of celery.utils.timeutils.timedelta_secondsrhDhdh}r(h]h]h]h]h]Uentries]r (hgX6timedelta_seconds() (in module celery.utils.timeutils)hUtr!auhJNhKhhL]ubh9)r"}r#(hUhh=h?jhDhqh}r$(hshtXpyh]h]h]h]h]huXfunctionr%hwj%uhJNhKhhL]r&(hy)r'}r((hXtimedelta_seconds(delta)hj"h?h|hDh}h}r)(h]r*hahh@Xcelery.utils.timeutilsr+r,}r-bh]h]h]h]r.hahXtimedelta_secondsr/hUhuhJNhKhhL]r0(h)r1}r2(hXcelery.utils.timeutils.hj'h?h|hDhh}r3(h]h]h]h]h]uhJNhKhhL]r4hUXcelery.utils.timeutils.r5r6}r7(hUhj1ubaubh)r8}r9(hj/hj'h?h|hDhh}r:(h]h]h]h]h]uhJNhKhhL]r;hUXtimedelta_secondsr<r=}r>(hUhj8ubaubh)r?}r@(hUhj'h?h|hDhh}rA(h]h]h]h]h]uhJNhKhhL]rBh)rC}rD(hXdeltah}rE(h]h]h]h]h]uhj?hL]rFhUXdeltarGrH}rI(hUhjCubahDhubaubeubh6)rJ}rK(hUhj"h?h|hDhh}rL(h]h]h]h]h]uhJNhKhhL]rM(h)rN}rO(hX/Convert :class:`datetime.timedelta` to seconds.hjJh?jhDhh}rP(h]h]h]h]h]uhJKhKhhL]rQ(hUXConvert rRrS}rT(hXConvert hjNubcsphinx.addnodes pending_xref rU)rV}rW(hX:class:`datetime.timedelta`rXhjNh?NhDU pending_xrefrYh}rZ(UreftypeXclassUrefwarnr[U reftargetr\Xdatetime.timedeltaU refdomainXpyr]h]h]U refexplicith]h]h]Urefdocr^X*internals/reference/celery.utils.timeutilsr_Upy:classr`NU py:moduleraXcelery.utils.timeutilsrbuhJNhL]rcj)rd}re(hjXh}rf(h]h]rg(Uxrefrhj]Xpy-classrieh]h]h]uhjVhL]rjhUXdatetime.timedeltarkrl}rm(hUhjdubahDj ubaubhUX to seconds.rnro}rp(hX to seconds.hjNubeubh)rq}rr(hX$Doesn't account for negative values.rshjJh?jhDhh}rt(h]h]h]h]h]uhJKhKhhL]ruhUX$Doesn't account for negative values.rvrw}rx(hjshjqubaubeubeubha)ry}rz(hUhh=h?X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/timeutils.py:docstring of celery.utils.timeutils.weekdayr{hDhdh}r|(h]h]h]h]h]Uentries]r}(hgX,weekday() (in module celery.utils.timeutils)h Utr~auhJNhKhhL]ubh9)r}r(hUhh=h?j{hDhqh}r(hshtXpyh]h]h]h]h]huXfunctionrhwjuhJNhKhhL]r(hy)r}r(hX weekday(name)rhjh?h|hDh}h}r(h]rh ahh@Xcelery.utils.timeutilsrr}rbh]h]h]h]rh ahXweekdayrhUhuhJNhKhhL]r(h)r}r(hXcelery.utils.timeutils.hjh?h|hDhh}r(h]h]h]h]h]uhJNhKhhL]rhUXcelery.utils.timeutils.rr}r(hUhjubaubh)r}r(hjhjh?h|hDhh}r(h]h]h]h]h]uhJNhKhhL]rhUXweekdayrr}r(hUhjubaubh)r}r(hUhjh?h|hDhh}r(h]h]h]h]h]uhJNhKhhL]rh)r}r(hXnameh}r(h]h]h]h]h]uhjhL]rhUXnamerr}r(hUhjubahDhubaubeubh6)r}r(hUhjh?h|hDhh}r(h]h]h]h]h]uhJNhKhhL]r(h)r}r(hX<Return the position of a weekday (0 - 7, where 0 is Sunday).rhjh?j{hDhh}r(h]h]h]h]h]uhJKhKhhL]rhUX<Return the position of a weekday (0 - 7, where 0 is Sunday).rr}r(hjhjubaubh)r}r(hX Example::rhjh?j{hDhh}r(h]h]h]h]h]uhJKhKhhL]rhUXExample:rr}r(hXExample:hjubaubcdocutils.nodes literal_block r)r}r(hX?>>> weekday("sunday"), weekday("sun"), weekday("mon") (0, 0, 1)hjh?j{hDU literal_blockrh}r(U xml:spacerUpreserverh]h]h]h]h]uhJK9hKhhL]rhUX?>>> weekday("sunday"), weekday("sun"), weekday("mon") (0, 0, 1)rr}r(hUhjubaubeubeubeubh?NhDhqh}r(hshtXpyh]h]h]h]h]huXfunctionrhwjuhJNhKhhL]r(hy)r}r(hX2remaining(start, ends_in, now=None, relative=True)hh:h?h|hDh}h}r(h]rh ahh@Xcelery.utils.timeutilsrr}rbh]h]h]h]rh ahX remainingrhUhuhJNhKhhL]r(h)r}r(hXcelery.utils.timeutils.hjh?h|hDhh}r(h]h]h]h]h]uhJNhKhhL]rhUXcelery.utils.timeutils.rr}r(hUhjubaubh)r}r(hjhjh?h|hDhh}r(h]h]h]h]h]uhJNhKhhL]rhUX remainingrr}r(hUhjubaubh)r}r(hUhjh?h|hDhh}r(h]h]h]h]h]uhJNhKhhL]r(h)r}r(hXstarth}r(h]h]h]h]h]uhjhL]rhUXstartrr}r(hUhjubahDhubh)r}r(hXends_inh}r(h]h]h]h]h]uhjhL]rhUXends_inrr}r(hUhjubahDhubh)r}r(hXnow=Noneh}r(h]h]h]h]h]uhjhL]rhUXnow=Nonerr}r(hUhjubahDhubh)r}r(hX relative=Trueh}r(h]h]h]h]h]uhjhL]rhUX relative=Truerr}r(hUhjubahDhubeubeubh7eubh?h|hDhh}r(h]h]h]h]h]uhJNhKhhL]r(h)r}r(hX>Calculate the remaining time for a start date and a timedelta.rhh7h?hhDhh}r(h]h]h]h]h]uhJKhKhhL]rhUX>Calculate the remaining time for a start date and a timedelta.r r }r (hjhjubaubh)r }r (hX<E.g. "how many seconds left for 30 seconds after ``start``?"rhh7h?hhDhh}r(h]h]h]h]h]uhJKhKhhL]r(hUX1E.g. "how many seconds left for 30 seconds after rr}r(hX1E.g. "how many seconds left for 30 seconds after hj ubj)r}r(hX ``start``h}r(h]h]h]h]h]uhj hL]rhUXstartrr}r(hUhjubahDj ubhUX?"rr}r(hX?"hj ubeubh4eubh?NhDU field_listrh}r(h]h]h]h]h]uhJNhKhhL]r h0aubhL]r!(cdocutils.nodes field_name r")r#}r$(hUh}r%(h]h]h]h]h]uhh0hL]r&hUX Parametersr'r(}r)(hUhj#ubahDU field_namer*ubh,ehDUfieldr+ubhL]r,h(ahDU field_bodyr-ubhL]r.(h#)r/}r0(hUh}r1(h]h]h]h]h]uhh(hL]r2h)r3}r4(hUh}r5(h]h]h]h]h]uhj/hL]r6(cdocutils.nodes strong r7)r8}r9(hXstarth}r:(h]h]h]h]h]uhj3hL]r;hUXstartr<r=}r>(hUhj8ubahDUstrongr?ubhUX -- r@rA}rB(hUhj3ubhUXStart rCrD}rE(hXStart hj3ubjU)rF}rG(hX:class:`datetime.datetime`rHhj3h?NhDjYh}rI(UreftypeXclassj[j\Xdatetime.datetimeU refdomainXpyrJh]h]U refexplicith]h]h]j^j_j`NjajbuhJNhL]rKj)rL}rM(hjHh}rN(h]h]rO(jhjJXpy-classrPeh]h]h]uhjFhL]rQhUXdatetime.datetimerRrS}rT(hUhjLubahDj ubaubhUX.rU}rV(hX.hj3ubehDhubahDU list_itemrWubh#)rX}rY(hUh}rZ(h]h]h]h]h]uhh(hL]r[h)r\}r](hUh}r^(h]h]h]h]h]uhjXhL]r_(j7)r`}ra(hXends_inh}rb(h]h]h]h]h]uhj\hL]rchUXends_inrdre}rf(hUhj`ubahDj?ubhUX -- rgrh}ri(hUhj\ubhUXThe end delta as a rjrk}rl(hXThe end delta as a hj\ubjU)rm}rn(hX:class:`datetime.timedelta`rohj\h?NhDjYh}rp(UreftypeXclassj[j\Xdatetime.timedeltaU refdomainXpyrqh]h]U refexplicith]h]h]j^j_j`NjajbuhJNhL]rrj)rs}rt(hjoh}ru(h]h]rv(jhjqXpy-classrweh]h]h]uhjmhL]rxhUXdatetime.timedeltaryrz}r{(hUhjsubahDj ubaubhUX.r|}r}(hX.hj\ubehDhubahDjWubh$h#)r~}r(hUh}r(h]h]h]h]h]uhh(hL]rh)r}r(hUh}r(h]h]h]h]h]uhj~hL]r(j7)r}r(hXnowh}r(h]h]h]h]h]uhjhL]rhUXnowrr}r(hUhjubahDj?ubhUX -- rr}r(hUhjubhUXThe current time, defaults to rr}r(hXThe current time, defaults to hjubjU)r}r(hX:func:`datetime.now`rhjh?NhDjYh}r(UreftypeXfuncj[j\X datetime.nowU refdomainXpyrh]h]U refexplicith]h]h]j^j_j`NjajbuhJNhL]rj)r}r(hjh}r(h]h]r(jhjXpy-funcreh]h]h]uhjhL]rhUXdatetime.now()rr}r(hUhjubahDj ubaubhUX.r}r(hX.hjubehDhubahDjWubehDU bullet_listrubhL]rh ahDjWubhL]r(j7)r}r(hXrelativeh}r(h]h]h]h]h]uhh hL]rhUXrelativerr}r(hUhjubahDj?ubhUX -- rr}r(hUhh ubh)r}r(hXsIf set to ``False``, the end time will be calculated using :func:`delta_resolution` (i.e. rounded to the resolutionhh h?hhDhh}r(h]h]h]h]h]uhJKhL]r(hUX If set to rr}r(hX If set to hjubj)r}r(hX ``False``h}r(h]h]h]h]h]uhjhL]rhUXFalserr}r(hUhjubahDj ubhUX(, the end time will be calculated using rr}r(hX(, the end time will be calculated using hjubjU)r}r(hX:func:`delta_resolution`rhjh?NhDjYh}r(UreftypeXfuncj[j\Xdelta_resolutionU refdomainXpyrh]h]U refexplicith]h]h]j^j_j`NjajbuhJNhL]rj)r}r(hjh}r(h]h]r(jhjXpy-funcreh]h]h]uhjhL]rhUXdelta_resolution()rr}r(hUhjubahDj ubaubhUX (i.e. rounded to the resolutionrr}r(hX (i.e. rounded to the resolutionhjubeubcdocutils.nodes block_quote r)r}r(hUh}r(h]h]h]h]h]uhh hL]rh)r}r(hXof ``ends_in``).rhjh?hhDhh}r(h]h]h]h]h]uhJK hL]r(hUXof rr}r(hXof hjubj)r}r(hX ``ends_in``h}r(h]h]h]h]h]uhjhL]rhUXends_inrr}r(hUhjubahDj ubhUX).rr}r(hX).hjubeubahDU block_quoterubehDhubhL]rh)r}r(hUh}r(h]h]h]h]h]uhhhL]rhUXUnexpected indentation.rr}r(hUhjubahDhubahDUsystem_messagerubaUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hhHhhhhh h h h h h h UcontentsruhL]rh=ahUU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rhKhU current_liner NUtransform_messagesr ]r h)r }r (hUh}r(h]UlevelKh]h]Usourceh\h]h]UlineKUtypeUINFOruhL]rh)r}r(hUh}r(h]h]h]h]h]uhj hL]rhUXCHyperlink target "module-celery.utils.timeutils" is not referenced.rr}r(hUhjubahDhubahDjubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr (cdocutils.frontend Values r!or"}r#(Ufootnote_backlinksr$KUrecord_dependenciesr%NU rfc_base_urlr&Uhttp://tools.ietf.org/html/r'U tracebackr(Upep_referencesr)NUstrip_commentsr*NU toc_backlinksr+Uentryr,U language_coder-Uenr.U datestampr/NU report_levelr0KU _destinationr1NU halt_levelr2KU strip_classesr3NhRNUerror_encoding_error_handlerr4Ubackslashreplacer5Udebugr6NUembed_stylesheetr7Uoutput_encoding_error_handlerr8Ustrictr9U sectnum_xformr:KUdump_transformsr;NU docinfo_xformr<KUwarning_streamr=NUpep_file_url_templater>Upep-%04dr?Uexit_status_levelr@KUconfigrANUstrict_visitorrBNUcloak_email_addressesrCUtrim_footnote_reference_spacerDUenvrENUdump_pseudo_xmlrFNUexpose_internalsrGNUsectsubtitle_xformrHU source_linkrINUrfc_referencesrJNUoutput_encodingrKUutf-8rLU source_urlrMNUinput_encodingrNU utf-8-sigrOU_disable_configrPNU id_prefixrQUU tab_widthrRKUerror_encodingrSUUTF-8rTU_sourcerUUh/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.timeutils.rstrVUgettext_compactrWU generatorrXNUdump_internalsrYNU smart_quotesrZU pep_base_urlr[Uhttp://www.python.org/dev/peps/r\Usyntax_highlightr]Ulongr^Uinput_encoding_error_handlerr_j9Uauto_id_prefixr`UidraUdoctitle_xformrbUstrip_elements_with_classesrcNU _config_filesrd]Ufile_insertion_enabledreU raw_enabledrfKU dump_settingsrgNubUsymbol_footnote_startrhKUidsri}rj(hj'hhzhHh=h jh hh jjcdocutils.nodes topic rk)rl}rm(hUhh=h?hBhDUtopicrnh}ro(h]h]rp(UcontentsrqUlocalrreh]h]rsjah]rth auhJKhKhhL]rucdocutils.nodes pending rv)rw}rx(hX.. contents:: :local:hjlU transformrycdocutils.transforms.parts Contents rzUdetailsr{}r|UlocalNshDUpendingr}h}r~(h]h]h]h]h]uhL]ubaubh`hZuUsubstitution_namesr}rhDhKh}r(h]h]h]UsourcehBh]h]uU footnotesr]rUrefidsr}rub.PKHDDh-::Pcelery-2.0-archived/.doctrees/internals/reference/celery.backends.tyrant.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X.backend: tokyo tyrant - celery.backends.tyrantqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXh/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.tyrant.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U+backend-tokyo-tyrant-celery-backends-tyrantq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX.Backend: Tokyo Tyrant - celery.backends.tyrantq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X.Backend: Tokyo Tyrant - celery.backends.tyrantq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUh/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.tyrant.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDL=--Qcelery-2.0-archived/.doctrees/internals/reference/celery.worker.scheduler.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X*worker scheduler - celery.worker.schedulerqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.scheduler.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U(worker-scheduler-celery-worker-schedulerq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX*Worker Scheduler - celery.worker.schedulerq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X*Worker Scheduler - celery.worker.schedulerq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.scheduler.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD&1Kcelery-2.0-archived/.doctrees/internals/reference/celery.utils.info.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X"debugging info - celery.utils.infoqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXc/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.info.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U debugging-info-celery-utils-infoq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX"Debugging Info - celery.utils.infoq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X"Debugging Info - celery.utils.infoq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.messaging import establish_connection File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/messaging.py", line 13, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUc/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.info.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD,Icelery-2.0-archived/.doctrees/internals/reference/celery.backends.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNXbackends - celery.backendsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXa/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Ubackends-celery-backendsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXBackends - celery.backendsq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0XBackends - celery.backendsq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUa/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDZIuuWcelery-2.0-archived/.doctrees/internals/reference/celery.utils.dispatch.saferef.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X&celery.utils.dispatch.saferef.safe_refqXAcelery.utils.dispatch.saferef.BoundMethodWeakref.deletion_methodsqX:celery.utils.dispatch.saferef.BoundMethodWeakref.weak_selfqX0celery.utils.dispatch.saferef.BoundMethodWeakrefq X?celery.utils.dispatch.saferef.BoundMethodWeakref._all_instancesq X4celery.utils.dispatch.saferef.BoundMethodWeakref.keyq X6celery.utils.dispatch.saferef.get_bound_method_weakrefq X8signals: safe references - celery.utils.dispatch.saferefq NX:celery.utils.dispatch.saferef.BoundMethodWeakref.weak_funcqX=celery.utils.dispatch.saferef.BoundNonDescriptorMethodWeakrefqUcontentsqNX>celery.utils.dispatch.saferef.BoundMethodWeakref.calculate_keyquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h h h h h h h U5signals-safe-references-celery-utils-dispatch-saferefqhhhhhUcontentsqhhuUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$cdocutils.nodes reprunicode q%Xo/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.dispatch.saferef.rstq&q'}q(bUtagnameq)Usectionq*U attributesq+}q,(Udupnamesq-]Uclassesq.]Ubackrefsq/]Uidsq0]q1haUnamesq2]q3h auUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h"X8Signals: Safe References - celery.utils.dispatch.saferefq:h#h h$h'h)Utitleq;h+}q<(h-]h.]h/]h0]h2]uh4Kh5hh]q=cdocutils.nodes Text q>X8Signals: Safe References - celery.utils.dispatch.saferefq?q@}qA(h"h:h#h8ubaubcdocutils.nodes target qB)qC}qD(h"Uh#h h$U qEh)UtargetqFh+}qG(h-]h0]qHX$module-celery.utils.dispatch.saferefqIah/]Uismodh.]h2]uh4Kh5hh]ubcsphinx.addnodes index qJ)qK}qL(h"Uh#h h$hEh)UindexqMh+}qN(h0]h/]h-]h.]h2]Uentries]qO(UsingleqPX&celery.utils.dispatch.saferef (module)X$module-celery.utils.dispatch.saferefUtqQauh4Kh5hh]ubcdocutils.nodes paragraph qR)qS}qT(h"X."Safe weakrefs", originally from pyDispatcher.qUh#h h$X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/saferef.py:docstring of celery.utils.dispatch.saferefqVh)U paragraphqWh+}qX(h-]h.]h/]h0]h2]uh4Kh5hh]qYh>X."Safe weakrefs", originally from pyDispatcher.qZq[}q\(h"hUh#hSubaubhR)q]}q^(h"XyProvides a way to safely weakref any function, including bound methods (which aren't handled by the core weakref module).q_h#h h$hVh)hWh+}q`(h-]h.]h/]h0]h2]uh4Kh5hh]qah>XyProvides a way to safely weakref any function, including bound methods (which aren't handled by the core weakref module).qbqc}qd(h"h_h#h]ubaubhJ)qe}qf(h"Uh#h h$Nh)hMh+}qg(h0]h/]h-]h.]h2]Uentries]qh(hPX;BoundMethodWeakref (class in celery.utils.dispatch.saferef)h Utqiauh4Nh5hh]ubcsphinx.addnodes desc qj)qk}ql(h"Uh#h h$Nh)Udescqmh+}qn(UnoindexqoUdomainqpXpyh0]h/]h-]h.]h2]UobjtypeqqXclassqrUdesctypeqshruh4Nh5hh]qt(csphinx.addnodes desc_signature qu)qv}qw(h"X*BoundMethodWeakref(target, on_delete=None)h#hkh$U qxh)Udesc_signatureqyh+}qz(h0]q{h aUmoduleq|h%Xcelery.utils.dispatch.saferefq}q~}qbh/]h-]h.]h2]qh aUfullnameqXBoundMethodWeakrefqUclassqUUfirstquh4Nh5hh]q(csphinx.addnodes desc_annotation q)q}q(h"Xclass h#hvh$hxh)Udesc_annotationqh+}q(h-]h.]h/]h0]h2]uh4Nh5hh]qh>Xclass qq}q(h"Uh#hubaubcsphinx.addnodes desc_addname q)q}q(h"Xcelery.utils.dispatch.saferef.h#hvh$hxh)U desc_addnameqh+}q(h-]h.]h/]h0]h2]uh4Nh5hh]qh>Xcelery.utils.dispatch.saferef.qq}q(h"Uh#hubaubcsphinx.addnodes desc_name q)q}q(h"hh#hvh$hxh)U desc_nameqh+}q(h-]h.]h/]h0]h2]uh4Nh5hh]qh>XBoundMethodWeakrefqq}q(h"Uh#hubaubcsphinx.addnodes desc_parameterlist q)q}q(h"Uh#hvh$hxh)Udesc_parameterlistqh+}q(h-]h.]h/]h0]h2]uh4Nh5hh]q(csphinx.addnodes desc_parameter q)q}q(h"Xtargeth+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xtargetqq}q(h"Uh#hubah)Udesc_parameterqubh)q}q(h"Xon_delete=Noneh+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xon_delete=Noneqq}q(h"Uh#hubah)hubeubeubcsphinx.addnodes desc_content q)q}q(h"Uh#hkh$hxh)U desc_contentqh+}q(h-]h.]h/]h0]h2]uh4Nh5hh]q(hR)q}q(h"X8'Safe' and reusable weak references to instance methods.qh#hh$X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/saferef.py:docstring of celery.utils.dispatch.saferef.BoundMethodWeakrefqh)hWh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>X8'Safe' and reusable weak references to instance methods.qÅq}q(h"hh#hubaubhR)q}q(h"X@BoundMethodWeakref objects provide a mechanism for referencing a bound method without requiring that the method object itself (which is normally a transient object) is kept alive. Instead, the BoundMethodWeakref object keeps weak references to both the object and the function which together define the instance method.qh#hh$hh)hWh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>X@BoundMethodWeakref objects provide a mechanism for referencing a bound method without requiring that the method object itself (which is normally a transient object) is kept alive. Instead, the BoundMethodWeakref object keeps weak references to both the object and the function which together define the instance method.q˅q}q(h"hh#hubaubhJ)q}q(h"Uh#hh$hh)hMh+}q(h0]h/]h-]h.]h2]Uentries]q(hPX@key (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)h Utqauh4Nh5hh]ubhj)q}q(h"Uh#hh$hh)hmh+}q(hohpXpyh0]h/]h-]h.]h2]hqX attributeqhshuh4Nh5hh]q(hu)q}q(h"Xkeyqh#hh$hh)hyh+}q(h0]qh ah|Xcelery.utils.dispatch.saferefqh/]h-]h.]h2]qh ahXBoundMethodWeakref.keyhhhuh4Kh5hh]qh)q}q(h"hh#hh$hh)hh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>Xkeyq䅁q}q(h"Uh#hubaubaubh)q}q(h"Uh#hh$hh)hh+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qhR)q}q(h"Xthe identity key for the reference, calculated by the class's :meth:`calculate_key` method applied to the target instance methodh#hh$hh)hWh+}q(h-]h.]h/]h0]h2]uh4K h5hh]q(h>X>the identity key for the reference, calculated by the class's qq}q(h"X>the identity key for the reference, calculated by the class's h#hubcsphinx.addnodes pending_xref q)q}q(h"X:meth:`calculate_key`qh#hh$Nh)U pending_xrefqh+}q(UreftypeXmethUrefwarnqU reftargetqX calculate_keyU refdomainXpyqh0]h/]U refexplicith-]h.]h2]UrefdocqX1internals/reference/celery.utils.dispatch.saferefqUpy:classqhU py:moduleqhuh4Nh]qcdocutils.nodes literal r)r}r(h"hh+}r(h-]h.]r(UxrefrhXpy-methreh/]h0]h2]uh#hh]rh>Xcalculate_key()rr }r (h"Uh#jubah)Uliteralr ubaubh>X- method applied to the target instance methodr r }r(h"X- method applied to the target instance methodh#hubeubaubeubhJ)r}r(h"Uh#hh$hh)hMh+}r(h0]h/]h-]h.]h2]Uentries]r(hPXMdeletion_methods (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)hUtrauh4Nh5hh]ubhj)r}r(h"Uh#hh$hh)hmh+}r(hohpXpyh0]h/]h-]h.]h2]hqX attributerhsjuh4Nh5hh]r(hu)r}r(h"Xdeletion_methodsrh#jh$hh)hyh+}r(h0]rhah|hh/]h-]h.]h2]rhahX#BoundMethodWeakref.deletion_methodshhhuh4Kh5hh]rh)r }r!(h"jh#jh$hh)hh+}r"(h-]h.]h/]h0]h2]uh4Kh5hh]r#h>Xdeletion_methodsr$r%}r&(h"Uh#j ubaubaubh)r'}r((h"Uh#jh$hh)hh+}r)(h-]h.]h/]h0]h2]uh4Kh5hh]r*hR)r+}r,(h"X!sequence of callable objects taking single argument, a reference to this object which will be called when *either* the target object or target function is garbage collected (i.e. when this object becomes invalid). These are specified as the on_delete parameters of :func:`safe_ref` calls.h#j'h$hh)hWh+}r-(h-]h.]h/]h0]h2]uh4Kh5hh]r.(h>Xjsequence of callable objects taking single argument, a reference to this object which will be called when r/r0}r1(h"Xjsequence of callable objects taking single argument, a reference to this object which will be called when h#j+ubcdocutils.nodes emphasis r2)r3}r4(h"X*either*h+}r5(h-]h.]h/]h0]h2]uh#j+h]r6h>Xeitherr7r8}r9(h"Uh#j3ubah)Uemphasisr:ubh>X the target object or target function is garbage collected (i.e. when this object becomes invalid). These are specified as the on_delete parameters of r;r<}r=(h"X the target object or target function is garbage collected (i.e. when this object becomes invalid). These are specified as the on_delete parameters of h#j+ubh)r>}r?(h"X:func:`safe_ref`r@h#j+h$Nh)hh+}rA(UreftypeXfunchhXsafe_refU refdomainXpyrBh0]h/]U refexplicith-]h.]h2]hhhhhhuh4Nh]rCj)rD}rE(h"j@h+}rF(h-]h.]rG(jjBXpy-funcrHeh/]h0]h2]uh#j>h]rIh>X safe_ref()rJrK}rL(h"Uh#jDubah)j ubaubh>X calls.rMrN}rO(h"X calls.h#j+ubeubaubeubhJ)rP}rQ(h"Uh#hh$hh)hMh+}rR(h0]h/]h-]h.]h2]Uentries]rS(hPXFweak_self (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)hUtrTauh4Nh5hh]ubhj)rU}rV(h"Uh#hh$hh)hmh+}rW(hohpXpyh0]h/]h-]h.]h2]hqX attributerXhsjXuh4Nh5hh]rY(hu)rZ}r[(h"X weak_selfr\h#jUh$hh)hyh+}r](h0]r^hah|hh/]h-]h.]h2]r_hahXBoundMethodWeakref.weak_selfhhhuh4Kh5hh]r`h)ra}rb(h"j\h#jZh$hh)hh+}rc(h-]h.]h/]h0]h2]uh4Kh5hh]rdh>X weak_selfrerf}rg(h"Uh#jaubaubaubh)rh}ri(h"Uh#jUh$hh)hh+}rj(h-]h.]h/]h0]h2]uh4Kh5hh]rkhR)rl}rm(h"X#weak reference to the target objectrnh#jhh$hh)hWh+}ro(h-]h.]h/]h0]h2]uh4Kh5hh]rph>X#weak reference to the target objectrqrr}rs(h"jnh#jlubaubaubeubhJ)rt}ru(h"Uh#hh$hh)hMh+}rv(h0]h/]h-]h.]h2]Uentries]rw(hPXFweak_func (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)hUtrxauh4Nh5hh]ubhj)ry}rz(h"Uh#hh$hh)hmh+}r{(hohpXpyh0]h/]h-]h.]h2]hqX attributer|hsj|uh4Nh5hh]r}(hu)r~}r(h"X weak_funcrh#jyh$hh)hyh+}r(h0]rhah|hh/]h-]h.]h2]rhahXBoundMethodWeakref.weak_funchhhuh4K h5hh]rh)r}r(h"jh#j~h$hh)hh+}r(h-]h.]h/]h0]h2]uh4K h5hh]rh>X weak_funcrr}r(h"Uh#jubaubaubh)r}r(h"Uh#jyh$hh)hh+}r(h-]h.]h/]h0]h2]uh4K h5hh]rhR)r}r(h"X%weak reference to the target functionrh#jh$hh)hWh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]rh>X%weak reference to the target functionrr}r(h"jh#jubaubaubeubhJ)r}r(h"Uh#hh$hh)hMh+}r(h0]h/]h-]h.]h2]Uentries]r(hPXK_all_instances (celery.utils.dispatch.saferef.BoundMethodWeakref attribute)h Utrauh4Nh5hh]ubhj)r}r(h"Uh#hh$hh)hmh+}r(hohpXpyh0]h/]h-]h.]h2]hqX attributerhsjuh4Nh5hh]r(hu)r}r(h"X_all_instancesrh#jh$hEh)hyh+}r(h0]rh ah|hh/]h-]h.]h2]rh ahX!BoundMethodWeakref._all_instanceshhhuh4Kh5hh]rh)r}r(h"jh#jh$hEh)hh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]rh>X_all_instancesrr}r(h"Uh#jubaubaubh)r}r(h"Uh#jh$hEh)hh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]rhR)r}r(h"XAclass attribute pointing to all live BoundMethodWeakref objects indexed by the class's ``calculate_key(target)`` method applied to the target objects. This weak value dictionary is used to short-circuit creation so that multiple references to the same (object, function) pair produce the same BoundMethodWeakref instance.h#jh$hh)hWh+}r(h-]h.]h/]h0]h2]uh4K#h5hh]r(h>XWclass attribute pointing to all live BoundMethodWeakref objects indexed by the class's rr}r(h"XWclass attribute pointing to all live BoundMethodWeakref objects indexed by the class's h#jubj)r}r(h"X``calculate_key(target)``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xcalculate_key(target)rr}r(h"Uh#jubah)j ubh>X method applied to the target objects. This weak value dictionary is used to short-circuit creation so that multiple references to the same (object, function) pair produce the same BoundMethodWeakref instance.rr}r(h"X method applied to the target objects. This weak value dictionary is used to short-circuit creation so that multiple references to the same (object, function) pair produce the same BoundMethodWeakref instance.h#jubeubaubeubhJ)r}r(h"Uh#hh$X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/saferef.py:docstring of celery.utils.dispatch.saferef.BoundMethodWeakref.calculate_keyrh)hMh+}r(h0]h/]h-]h.]h2]Uentries]r(hPXOcalculate_key() (celery.utils.dispatch.saferef.BoundMethodWeakref class method)hUtrauh4Nh5hh]ubhj)r}r(h"Uh#hh$jh)hmh+}r(hohpXpyh0]h/]h-]h.]h2]hqX classmethodrhsjuh4Nh5hh]r(hu)r}r(h"X(BoundMethodWeakref.calculate_key(target)h#jh$hxh)hyh+}r(h0]rhah|h%Xcelery.utils.dispatch.saferefrr}rbh/]h-]h.]h2]rhahX BoundMethodWeakref.calculate_keyhhhuh4Nh5hh]r(h)r}r(h"U classmethod rh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rh>X classmethod rr}r(h"Uh#jubaubh)r}r(h"X calculate_keyh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rh>X calculate_keyrr}r(h"Uh#jubaubh)r}r(h"Uh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rh)r}r(h"Xtargeth+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xtargetrr}r(h"Uh#jubah)hubaubeubh)r}r(h"Uh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]r(hR)r}r(h"X.Calculate the reference key for this referencerh#jh$jh)hWh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]rh>X.Calculate the reference key for this referencerr}r(h"jh#jubaubhR)r}r(h"XjCurrently this is a two-tuple of the ``id()``'s of the target object and the target function respectively.h#jh$jh)hWh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>X%Currently this is a two-tuple of the rr}r(h"X%Currently this is a two-tuple of the h#jubj)r}r(h"X``id()``h+}r(h-]h.]h/]h0]h2]uh#jh]r h>Xid()r r }r (h"Uh#jubah)j ubh>X='s of the target object and the target function respectively.r r}r(h"X='s of the target object and the target function respectively.h#jubeubeubeubeubeubhJ)r}r(h"Uh#h h$X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/saferef.py:docstring of celery.utils.dispatch.saferef.BoundNonDescriptorMethodWeakrefrh)hMh+}r(h0]h/]h-]h.]h2]Uentries]r(hPXHBoundNonDescriptorMethodWeakref (class in celery.utils.dispatch.saferef)hUtrauh4Nh5hh]ubhj)r}r(h"Uh#h h$jh)hmh+}r(hohpXpyh0]h/]h-]h.]h2]hqXclassrhsjuh4Nh5hh]r(hu)r}r(h"X7BoundNonDescriptorMethodWeakref(target, on_delete=None)h#jh$hxh)hyh+}r(h0]rhah|h%Xcelery.utils.dispatch.saferefrr }r!bh/]h-]h.]h2]r"hahXBoundNonDescriptorMethodWeakrefr#hUhuh4Nh5hh]r$(h)r%}r&(h"Xclass h#jh$hxh)hh+}r'(h-]h.]h/]h0]h2]uh4Nh5hh]r(h>Xclass r)r*}r+(h"Uh#j%ubaubh)r,}r-(h"Xcelery.utils.dispatch.saferef.h#jh$hxh)hh+}r.(h-]h.]h/]h0]h2]uh4Nh5hh]r/h>Xcelery.utils.dispatch.saferef.r0r1}r2(h"Uh#j,ubaubh)r3}r4(h"j#h#jh$hxh)hh+}r5(h-]h.]h/]h0]h2]uh4Nh5hh]r6h>XBoundNonDescriptorMethodWeakrefr7r8}r9(h"Uh#j3ubaubh)r:}r;(h"Uh#jh$hxh)hh+}r<(h-]h.]h/]h0]h2]uh4Nh5hh]r=(h)r>}r?(h"Xtargeth+}r@(h-]h.]h/]h0]h2]uh#j:h]rAh>XtargetrBrC}rD(h"Uh#j>ubah)hubh)rE}rF(h"Xon_delete=Noneh+}rG(h-]h.]h/]h0]h2]uh#j:h]rHh>Xon_delete=NonerIrJ}rK(h"Uh#jEubah)hubeubeubh)rL}rM(h"Uh#jh$hxh)hh+}rN(h-]h.]h/]h0]h2]uh4Nh5hh]rO(hR)rP}rQ(h"XdA specialized :class:`BoundMethodWeakref`, for platforms where instance methods are not descriptors.h#jLh$jh)hWh+}rR(h-]h.]h/]h0]h2]uh4Kh5hh]rS(h>XA specialized rTrU}rV(h"XA specialized h#jPubh)rW}rX(h"X:class:`BoundMethodWeakref`rYh#jPh$Nh)hh+}rZ(UreftypeXclasshhXBoundMethodWeakrefU refdomainXpyr[h0]h/]U refexplicith-]h.]h2]hhhj#hhuh4Nh]r\j)r]}r^(h"jYh+}r_(h-]h.]r`(jj[Xpy-classraeh/]h0]h2]uh#jWh]rbh>XBoundMethodWeakrefrcrd}re(h"Uh#j]ubah)j ubaubh>X;, for platforms where instance methods are not descriptors.rfrg}rh(h"X;, for platforms where instance methods are not descriptors.h#jPubeubhR)ri}rj(h"X It assumes that the function name and the target attribute name are the same, instead of assuming that the function is a descriptor. This approach is equally fast, but not 100% reliable because functions can be stored on an attribute named differenty than the function's name such as in::h#jLh$jh)hWh+}rk(h-]h.]h/]h0]h2]uh4Kh5hh]rlh>XIt assumes that the function name and the target attribute name are the same, instead of assuming that the function is a descriptor. This approach is equally fast, but not 100% reliable because functions can be stored on an attribute named differenty than the function's name such as in:rmrn}ro(h"XIt assumes that the function name and the target attribute name are the same, instead of assuming that the function is a descriptor. This approach is equally fast, but not 100% reliable because functions can be stored on an attribute named differenty than the function's name such as in:h#jiubaubcdocutils.nodes literal_block rp)rq}rr(h"XZ>>> class A(object): ... pass >>> def foo(self): ... return "foo" >>> A.bar = fooh#jLh$jh)U literal_blockrsh+}rt(U xml:spaceruUpreservervh0]h/]h-]h.]h2]uh4KMh5hh]rwh>XZ>>> class A(object): ... pass >>> def foo(self): ... return "foo" >>> A.bar = foorxry}rz(h"Uh#jqubaubhR)r{}r|(h"XBut this shouldn't be a common use case. So, on platforms where methods aren't descriptors (such as Jython) this implementation has the advantage of working in the most cases.r}h#jLh$jh)hWh+}r~(h-]h.]h/]h0]h2]uh4Kh5hh]rh>XBut this shouldn't be a common use case. So, on platforms where methods aren't descriptors (such as Jython) this implementation has the advantage of working in the most cases.rr}r(h"j}h#j{ubaubeubeubhJ)r}r(h"Uh#h h$X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/saferef.py:docstring of celery.utils.dispatch.saferef.get_bound_method_weakrefrh)hMh+}r(h0]h/]h-]h.]h2]Uentries]r(hPXDget_bound_method_weakref() (in module celery.utils.dispatch.saferef)h Utrauh4Nh5hh]ubhj)r}r(h"Uh#h h$jh)hmh+}r(hohpXpyh0]h/]h-]h.]h2]hqXfunctionrhsjuh4Nh5hh]r(hu)r}r(h"X+get_bound_method_weakref(target, on_delete)h#jh$hxh)hyh+}r(h0]rh ah|h%Xcelery.utils.dispatch.saferefrr}rbh/]h-]h.]h2]rh ahXget_bound_method_weakrefrhUhuh4Nh5hh]r(h)r}r(h"Xcelery.utils.dispatch.saferef.h#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rh>Xcelery.utils.dispatch.saferef.rr}r(h"Uh#jubaubh)r}r(h"jh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rh>Xget_bound_method_weakrefrr}r(h"Uh#jubaubh)r}r(h"Uh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]r(h)r}r(h"Xtargeth+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xtargetrr}r(h"Uh#jubah)hubh)r}r(h"X on_deleteh+}r(h-]h.]h/]h0]h2]uh#jh]rh>X on_deleterr}r(h"Uh#jubah)hubeubeubh)r}r(h"Uh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rhR)r}r(h"XInstantiates the appropiate :class:`BoundMethodWeakRef`, depending on the details of the underlying class method implementation.h#jh$jh)hWh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>XInstantiates the appropiate rr}r(h"XInstantiates the appropiate h#jubh)r}r(h"X:class:`BoundMethodWeakRef`rh#jh$Nh)hh+}r(UreftypeXclasshhXBoundMethodWeakRefU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hhhNhhuh4Nh]rj)r}r(h"jh+}r(h-]h.]r(jjXpy-classreh/]h0]h2]uh#jh]rh>XBoundMethodWeakRefrr}r(h"Uh#jubah)j ubaubh>XI, depending on the details of the underlying class method implementation.rr}r(h"XI, depending on the details of the underlying class method implementation.h#jubeubaubeubhJ)r}r(h"Uh#h h$Nh)hMh+}r(h0]h/]h-]h.]h2]Uentries]r(hPX4safe_ref() (in module celery.utils.dispatch.saferef)hUtrauh4Nh5hh]ubhj)r}r(h"Uh#h h$Nh)hmh+}r(hohpXpyh0]h/]h-]h.]h2]hqXfunctionrhsjuh4Nh5hh]r(hu)r}r(h"X safe_ref(target, on_delete=None)h#jh$hxh)hyh+}r(h0]rhah|h%Xcelery.utils.dispatch.saferefrr}rbh/]h-]h.]h2]rhahXsafe_refrhUhuh4Nh5hh]r(h)r}r(h"Xcelery.utils.dispatch.saferef.h#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rh>Xcelery.utils.dispatch.saferef.rr}r(h"Uh#jubaubh)r}r(h"jh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]rh>Xsafe_refrr}r(h"Uh#jubaubh)r}r(h"Uh#jh$hxh)hh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]r(h)r}r(h"Xtargeth+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xtargetrr}r(h"Uh#jubah)hubh)r}r(h"Xon_delete=Noneh+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xon_delete=Nonerr}r(h"Uh#jubah)hubeubeubh)r }r (h"Uh#jh$hxh)hh+}r (h-]h.]h/]h0]h2]uh4Nh5hh]r (hR)r }r(h"X3Return a *safe* weak reference to a callable targetrh#j h$X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/dispatch/saferef.py:docstring of celery.utils.dispatch.saferef.safe_refrh)hWh+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>X Return a rr}r(h"X Return a h#j ubj2)r}r(h"X*safe*h+}r(h-]h.]h/]h0]h2]uh#j h]rh>Xsaferr}r(h"Uh#jubah)j:ubh>X$ weak reference to a callable targetrr}r(h"X$ weak reference to a callable targeth#j ubeubcdocutils.nodes field_list r )r!}r"(h"Uh#j h$Nh)U field_listr#h+}r$(h-]h.]h/]h0]h2]uh4Nh5hh]r%cdocutils.nodes field r&)r'}r((h"Uh+}r)(h-]h.]h/]h0]h2]uh#j!h]r*(cdocutils.nodes field_name r+)r,}r-(h"Uh+}r.(h-]h.]h/]h0]h2]uh#j'h]r/h>X Parametersr0r1}r2(h"Uh#j,ubah)U field_namer3ubcdocutils.nodes field_body r4)r5}r6(h"Uh+}r7(h-]h.]h/]h0]h2]uh#j'h]r8cdocutils.nodes bullet_list r9)r:}r;(h"Uh+}r<(h-]h.]h/]h0]h2]uh#j5h]r=(cdocutils.nodes list_item r>)r?}r@(h"Uh+}rA(h-]h.]h/]h0]h2]uh#j:h]rBhR)rC}rD(h"Uh+}rE(h-]h.]h/]h0]h2]uh#j?h]rF(cdocutils.nodes strong rG)rH}rI(h"Xtargeth+}rJ(h-]h.]h/]h0]h2]uh#jCh]rKh>XtargetrLrM}rN(h"Uh#jHubah)UstrongrOubh>X -- rPrQ}rR(h"Uh#jCubh>XTthe object to be weakly referenced, if it's a bound method reference, will create a rSrT}rU(h"XTthe object to be weakly referenced, if it's a bound method reference, will create a h#jCubh)rV}rW(h"X:class:`BoundMethodWeakref`rXh#jCh$Nh)hh+}rY(UreftypeXclasshhXBoundMethodWeakrefU refdomainXpyrZh0]h/]U refexplicith-]h.]h2]hhhNhhuh4Nh]r[j)r\}r](h"jXh+}r^(h-]h.]r_(jjZXpy-classr`eh/]h0]h2]uh#jVh]rah>XBoundMethodWeakrefrbrc}rd(h"Uh#j\ubah)j ubaubh>X, otherwise creates a simple rerf}rg(h"X, otherwise creates a simple h#jCubh)rh}ri(h"X:class:`weakref.ref`rjh#jCh$Nh)hh+}rk(UreftypeXclasshhX weakref.refU refdomainXpyrlh0]h/]U refexplicith-]h.]h2]hhhNhhuh4Nh]rmj)rn}ro(h"jjh+}rp(h-]h.]rq(jjlXpy-classrreh/]h0]h2]uh#jhh]rsh>X weakref.refrtru}rv(h"Uh#jnubah)j ubaubh>X.rw}rx(h"X.h#jCubeh)hWubah)U list_itemryubj>)rz}r{(h"Uh+}r|(h-]h.]h/]h0]h2]uh#j:h]r}hR)r~}r(h"Uh+}r(h-]h.]h/]h0]h2]uh#jzh]r(jG)r}r(h"X on_deleteh+}r(h-]h.]h/]h0]h2]uh#j~h]rh>X on_deleterr}r(h"Uh#jubah)jOubh>X -- rr}r(h"Uh#j~ubh>Xif provided, will have a hard reference stored to the callable to be called after the safe reference goes out of scope with the reference object, (either a rr}r(h"Xif provided, will have a hard reference stored to the callable to be called after the safe reference goes out of scope with the reference object, (either a h#j~ubh)r}r(h"X:class:`weakref.ref`rh#j~h$Nh)hh+}r(UreftypeXclasshhX weakref.refU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hhhNhhuh4Nh]rj)r}r(h"jh+}r(h-]h.]r(jjXpy-classreh/]h0]h2]uh#jh]rh>X weakref.refrr}r(h"Uh#jubah)j ubaubh>X or a rr}r(h"X or a h#j~ubh)r}r(h"X:class:`BoundMethodWeakref`rh#j~h$Nh)hh+}r(UreftypeXclasshhXBoundMethodWeakrefU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hhhNhhuh4Nh]rj)r}r(h"jh+}r(h-]h.]r(jjXpy-classreh/]h0]h2]uh#jh]rh>XBoundMethodWeakrefrr}r(h"Uh#jubah)j ubaubh>X) as argument.rr}r(h"X) as argument.h#j~ubeh)hWubah)jyubeh)U bullet_listrubah)U field_bodyrubeh)Ufieldrubaubeubeubeubah"UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh5hU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(h"Uh+}r(h-]UlevelKh0]h/]UsourcehEh.]h2]UlineKUtypeUINFOruh]rhR)r}r(h"Uh+}r(h-]h.]h/]h0]h2]uh#jh]rh>XJHyperlink target "module-celery.utils.dispatch.saferef" is not referenced.rr}r(h"Uh#jubah)hWubah)Usystem_messagerubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh;NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlr NUinput_encodingr U utf-8-sigr U_disable_configr NU id_prefixr UU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUo/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.dispatch.saferef.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr ]Ufile_insertion_enabledr!U raw_enabledr"KU dump_settingsr#NubUsymbol_footnote_startr$KUidsr%}r&(hjhjhjhjZhh h hvh jh hh jhIhChj~hcdocutils.nodes topic r')r(}r)(h"Uh#h h$h'h)Utopicr*h+}r+(h-]h.]r,(Ucontentsr-Ulocalr.eh/]h0]r/hah2]r0hauh4Kh5hh]r1cdocutils.nodes pending r2)r3}r4(h"X.. contents:: :local:h#j(U transformr5cdocutils.transforms.parts Contents r6Udetailsr7}r8UlocalNsh)Upendingr9h+}r:(h-]h.]h/]h0]h2]uh]ubaubhjuUsubstitution_namesr;}r<h)h5h+}r=(h-]h0]h/]Usourceh'h.]h2]uU footnotesr>]r?Urefidsr@}rAub.PKHDD4``Ocelery-2.0-archived/.doctrees/internals/reference/celery.utils.dispatch.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X'signal dispatch - celery.utils.dispatchqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startqKUnameidsq}q(hU%signal-dispatch-celery-utils-dispatchqhUcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.dispatch.rstqq}qbUtagnameqUsectionq U attributesq!}q"(Udupnamesq#]Uclassesq$]Ubackrefsq%]Uidsq&]q'haUnamesq(]q)hauUlineq*KUdocumentq+hh]q,(cdocutils.nodes title q-)q.}q/(hX'Signal Dispatch - celery.utils.dispatchq0hhhhhUtitleq1h!}q2(h#]h$]h%]h&]h(]uh*Kh+hh]q3cdocutils.nodes Text q4X'Signal Dispatch - celery.utils.dispatchq5q6}q7(hh0hh.ubaubcdocutils.nodes target q8)q9}q:(hUhhhU q;hUtargetqXmodule-celery.utils.dispatchq?ah%]Uismodh$]h(]uh*Kh+hh]ubcsphinx.addnodes index q@)qA}qB(hUhhhh;hUindexqCh!}qD(h&]h%]h#]h$]h(]Uentries]qE(UsingleqFXcelery.utils.dispatch (module)Xmodule-celery.utils.dispatchUtqGauh*Kh+hh]ubeubahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh+hU current_lineqUNUtransform_messagesqV]qWcdocutils.nodes system_message qX)qY}qZ(hUh!}q[(h#]UlevelKh&]h%]Usourceh;h$]h(]UlineKUtypeUINFOq\uh]q]cdocutils.nodes paragraph q^)q_}q`(hUh!}qa(h#]h$]h%]h&]h(]uhhYh]qbh4XBHyperlink target "module-celery.utils.dispatch" is not referenced.qcqd}qe(hUhh_ubahU paragraphqfubahUsystem_messageqgubaUreporterqhNUid_startqiKU autofootnotesqj]qkU citation_refsql}qmUindirect_targetsqn]qoUsettingsqp(cdocutils.frontend Values qqoqr}qs(Ufootnote_backlinksqtKUrecord_dependenciesquNU rfc_base_urlqvUhttp://tools.ietf.org/html/qwU tracebackqxUpep_referencesqyNUstrip_commentsqzNU toc_backlinksq{Uentryq|U language_codeq}Uenq~U datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh1NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.dispatch.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hhh?h9hcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh!}q(h#]h$]q(UcontentsqUlocalqeh%]h&]qhah(]qhauh*Kh+hh]qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh!}q(h#]h$]h%]h&]h(]uh]ubaubuUsubstitution_namesq}qhh+h!}q(h#]h&]h%]Usourcehh$]h(]uU footnotesq]qUrefidsq}qub.PKHDDVtXcelery-2.0-archived/.doctrees/internals/reference/celery.worker.control.registry.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X@remote control command registry - celery.worker.control.registryqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXp/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.control.registry.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U>remote-control-command-registry-celery-worker-control-registryq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX@Remote Control Command Registry - celery.worker.control.registryq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X@Remote Control Command Registry - celery.worker.control.registryq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUp/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.control.registry.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDfMMOcelery-2.0-archived/.doctrees/internals/reference/celery.worker.buckets.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X4token bucket (rate limiting) - celery.worker.bucketsqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.buckets.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U0token-bucket-rate-limiting-celery-worker-bucketsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX4Token Bucket (rate limiting) - celery.worker.bucketsq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X4Token Bucket (rate limiting) - celery.worker.bucketsq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUg/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.worker.buckets.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDW6Jcelery-2.0-archived/.doctrees/internals/reference/celery.db.models.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X$sqlalchemy models - celery.db.modelsqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXb/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.db.models.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U"sqlalchemy-models-celery-db-modelsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX$SQLAlchemy Models - celery.db.modelsq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X$SQLAlchemy Models - celery.db.modelsq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.db.session import ResultModelBase File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/db/session.py", line 5, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUb/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.db.models.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDD--Qcelery-2.0-archived/.doctrees/internals/reference/celery.backends.mongodb.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X*backend: mongodb - celery.backends.mongodbqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.mongodb.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U'backend-mongodb-celery-backends-mongodbq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX*Backend: MongoDB - celery.backends.mongodbq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X*Backend: MongoDB - celery.backends.mongodbq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUi/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.mongodb.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD9199Fcelery-2.0-archived/.doctrees/internals/reference/celery.utils.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery.utils.mpromise.evaluateqXcelery.utils.fun_takes_kwargsqXcelery.utils.gen_unique_idqXcelery.utils.promiseq Xcelery.utils.padlistq Xcelery.utils.mpromiseq Xcelery.utils.instantiateq Ucontentsq NXcelery.utils.mpromise.evaluatedqXcelery.utils.kwdictqXcelery.utils.get_cls_by_nameqXcelery.utils.get_full_cls_nameqXcelery.utils.firstqXcelery.utils.promise.evaluateqXcelery.utils.noopqXcelery.utils.retry_over_timeqXcelery.utils.firstmethodqXcelery.utils.maybe_promiseqXcelery.utils.mattrgetterqXutilities - celery.utilsqNXcelery.utils.is_iterableqXcelery.utils.chunksqXcelery.utils.mitemgetterqXcelery.utils.repeatlastquUsubstitution_defsq}qUparse_messagesq ]q!Ucurrent_sourceq"NU decorationq#NUautofootnote_startq$KUnameidsq%}q&(hhhhhhh h h h h h h h h Ucontentsq'hhhhhhhhhhhhhhhhhhhhhhhUutilities-celery-utilsq(hhhhhhhhuUchildrenq)]q*cdocutils.nodes section q+)q,}q-(U rawsourceq.UUparentq/hUsourceq0cdocutils.nodes reprunicode q1X^/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.rstq2q3}q4bUtagnameq5Usectionq6U attributesq7}q8(Udupnamesq9]Uclassesq:]Ubackrefsq;]Uidsq<]q=h(aUnamesq>]q?hauUlineq@KUdocumentqAhh)]qB(cdocutils.nodes title qC)qD}qE(h.XUtilities - celery.utilsqFh/h,h0h3h5UtitleqGh7}qH(h9]h:]h;]h<]h>]uh@KhAhh)]qIcdocutils.nodes Text qJXUtilities - celery.utilsqKqL}qM(h.hFh/hDubaubcdocutils.nodes target qN)qO}qP(h.Uh/h,h0U qQh5UtargetqRh7}qS(h9]h<]qTXmodule-celery.utilsqUah;]Uismodh:]h>]uh@KhAhh)]ubcsphinx.addnodes index qV)qW}qX(h.Uh/h,h0hQh5UindexqYh7}qZ(h<]h;]h9]h:]h>]Uentries]q[(Usingleq\Xcelery.utils (module)Xmodule-celery.utilsUtq]auh@KhAhh)]ubhV)q^}q_(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.chunksq`h5hYh7}qa(h<]h;]h9]h:]h>]Uentries]qb(h\X!chunks() (in module celery.utils)hUtqcauh@NhAhh)]ubcsphinx.addnodes desc qd)qe}qf(h.Uh/h,h0h`h5Udescqgh7}qh(UnoindexqiUdomainqjXpyh<]h;]h9]h:]h>]UobjtypeqkXfunctionqlUdesctypeqmhluh@NhAhh)]qn(csphinx.addnodes desc_signature qo)qp}qq(h.X chunks(it, n)h/heh0U qrh5Udesc_signatureqsh7}qt(h<]quhaUmoduleqvh1X celery.utilsqwqx}qybh;]h9]h:]h>]qzhaUfullnameq{Xchunksq|Uclassq}UUfirstq~uh@NhAhh)]q(csphinx.addnodes desc_addname q)q}q(h.X celery.utils.h/hph0hrh5U desc_addnameqh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]qhJX celery.utils.qq}q(h.Uh/hubaubcsphinx.addnodes desc_name q)q}q(h.h|h/hph0hrh5U desc_nameqh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]qhJXchunksqq}q(h.Uh/hubaubcsphinx.addnodes desc_parameterlist q)q}q(h.Uh/hph0hrh5Udesc_parameterlistqh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]q(csphinx.addnodes desc_parameter q)q}q(h.Xith7}q(h9]h:]h;]h<]h>]uh/hh)]qhJXitqq}q(h.Uh/hubah5Udesc_parameterqubh)q}q(h.Xnh7}q(h9]h:]h;]h<]h>]uh/hh)]qhJXnq}q(h.Uh/hubah5hubeubeubcsphinx.addnodes desc_content q)q}q(h.Uh/heh0hrh5U desc_contentqh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]q(cdocutils.nodes paragraph q)q}q(h.X7Split an iterator into chunks with ``n`` elements each.h/hh0h`h5U paragraphqh7}q(h9]h:]h;]h<]h>]uh@KhAhh)]q(hJX#Split an iterator into chunks with qq}q(h.X#Split an iterator into chunks with h/hubcdocutils.nodes literal q)q}q(h.X``n``h7}q(h9]h:]h;]h<]h>]uh/hh)]qhJXnq}q(h.Uh/hubah5UliteralqubhJX elements each.qq}q(h.X elements each.h/hubeubh)q}q(h.XExamplesqh/hh0h`h5hh7}q(h9]h:]h;]h<]h>]uh@KhAhh)]qhJXExamplesqƅq}q(h.hh/hubaubcdocutils.nodes block_quote q)q}q(h.Uh/hh0h`h5U block_quoteqh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]q(h)q}q(h.X# n == 2 >>> x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 2) >>> list(x) [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10]]qh/hh0h`h5hh7}q(h9]h:]h;]h<]h>]uh@Kh)]qhJX# n == 2 >>> x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 2) >>> list(x) [[0, 1], [2, 3], [4, 5], [6, 7], [8, 9], [10]]qԅq}q(h.hh/hubaubh)q}q(h.X{# n == 3 >>> x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 3) >>> list(x) [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]]qh/hh0h`h5hh7}q(h9]h:]h;]h<]h>]uh@K h)]qhJX{# n == 3 >>> x = chunks(iter([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), 3) >>> list(x) [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10]]q܅q}q(h.hh/hubaubeubeubeubhV)q}q(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.firstqh5hYh7}q(h<]h;]h9]h:]h>]Uentries]q(h\X first() (in module celery.utils)hUtqauh@NhAhh)]ubhd)q}q(h.Uh/h,h0hh5hgh7}q(hihjXpyh<]h;]h9]h:]h>]hkXfunctionqhmhuh@NhAhh)]q(ho)q}q(h.Xfirst(predicate, iterable)h/hh0hrh5hsh7}q(h<]qhahvh1X celery.utilsqq}qbh;]h9]h:]h>]qhah{Xfirstqh}Uh~uh@NhAhh)]q(h)q}q(h.X celery.utils.h/hh0hrh5hh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]qhJX celery.utils.qq}q(h.Uh/hubaubh)q}q(h.hh/hh0hrh5hh7}q(h9]h:]h;]h<]h>]uh@NhAhh)]qhJXfirstqr}r(h.Uh/hubaubh)r}r(h.Uh/hh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.X predicateh7}r(h9]h:]h;]h<]h>]uh/jh)]r hJX predicater r }r (h.Uh/jubah5hubh)r }r(h.Xiterableh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXiterablerr}r(h.Uh/j ubah5hubeubeubh)r}r(h.Uh/hh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rh)r}r(h.XZReturns the first element in ``iterable`` that ``predicate`` returns a ``True`` value for.h/jh0hh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]r(hJXReturns the first element in rr}r(h.XReturns the first element in h/jubh)r}r (h.X ``iterable``h7}r!(h9]h:]h;]h<]h>]uh/jh)]r"hJXiterabler#r$}r%(h.Uh/jubah5hubhJX that r&r'}r((h.X that h/jubh)r)}r*(h.X ``predicate``h7}r+(h9]h:]h;]h<]h>]uh/jh)]r,hJX predicater-r.}r/(h.Uh/j)ubah5hubhJX returns a r0r1}r2(h.X returns a h/jubh)r3}r4(h.X``True``h7}r5(h9]h:]h;]h<]h>]uh/jh)]r6hJXTruer7r8}r9(h.Uh/j3ubah5hubhJX value for.r:r;}r<(h.X value for.h/jubeubaubeubhV)r=}r>(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.firstmethodr?h5hYh7}r@(h<]h;]h9]h:]h>]Uentries]rA(h\X&firstmethod() (in module celery.utils)hUtrBauh@NhAhh)]ubhd)rC}rD(h.Uh/h,h0j?h5hgh7}rE(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrFhmjFuh@NhAhh)]rG(ho)rH}rI(h.Xfirstmethod(method)h/jCh0hrh5hsh7}rJ(h<]rKhahvh1X celery.utilsrLrM}rNbh;]h9]h:]h>]rOhah{X firstmethodrPh}Uh~uh@NhAhh)]rQ(h)rR}rS(h.X celery.utils.h/jHh0hrh5hh7}rT(h9]h:]h;]h<]h>]uh@NhAhh)]rUhJX celery.utils.rVrW}rX(h.Uh/jRubaubh)rY}rZ(h.jPh/jHh0hrh5hh7}r[(h9]h:]h;]h<]h>]uh@NhAhh)]r\hJX firstmethodr]r^}r_(h.Uh/jYubaubh)r`}ra(h.Uh/jHh0hrh5hh7}rb(h9]h:]h;]h<]h>]uh@NhAhh)]rch)rd}re(h.Xmethodh7}rf(h9]h:]h;]h<]h>]uh/j`h)]rghJXmethodrhri}rj(h.Uh/jdubah5hubaubeubh)rk}rl(h.Uh/jCh0hrh5hh7}rm(h9]h:]h;]h<]h>]uh@NhAhh)]rn(h)ro}rp(h.XvReturns a functions that with a list of instances, finds the first instance that returns a value for the given method.rqh/jkh0j?h5hh7}rr(h9]h:]h;]h<]h>]uh@KhAhh)]rshJXvReturns a functions that with a list of instances, finds the first instance that returns a value for the given method.rtru}rv(h.jqh/joubaubh)rw}rx(h.X6The list can also contain promises (:class:`promise`.)h/jkh0j?h5hh7}ry(h9]h:]h;]h<]h>]uh@KhAhh)]rz(hJX$The list can also contain promises (r{r|}r}(h.X$The list can also contain promises (h/jwubcsphinx.addnodes pending_xref r~)r}r(h.X:class:`promise`rh/jwh0Nh5U pending_xrefrh7}r(UreftypeXclassUrefwarnrU reftargetrXpromiseU refdomainXpyrh<]h;]U refexplicith9]h:]h>]UrefdocrX internals/reference/celery.utilsrUpy:classrNU py:modulerX celery.utilsruh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(UxrefrjXpy-classreh;]h<]h>]uh/jh)]rhJXpromiserr}r(h.Uh/jubah5hubaubhJX.)rr}r(h.X.)h/jwubeubeubeubhV)r}r(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.fun_takes_kwargsrh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X+fun_takes_kwargs() (in module celery.utils)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0jh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.X fun_takes_kwargs(fun, kwlist=[])h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsrr}rbh;]h9]h:]h>]rhah{Xfun_takes_kwargsrh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJXfun_takes_kwargsrr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.Xfunh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXfunrr}r(h.Uh/jubah5hubh)r}r(h.Xkwlist=h7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXkwlist=rr}r(h.Uh/jubah5hubcsphinx.addnodes desc_optional r)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]h5U desc_optionalrubeubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.XiWith a function, and a list of keyword arguments, returns arguments in the list which the function takes.rh/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXiWith a function, and a list of keyword arguments, returns arguments in the list which the function takes.rr}r(h.jh/jubaubh)r}r(h.XwIf the object has an ``argspec`` attribute that is used instead of using the :meth:`inspect.getargspec`` introspection.h/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]r(hJXIf the object has an rr}r(h.XIf the object has an h/jubh)r}r(h.X ``argspec``h7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXargspecrr}r(h.Uh/jubah5hubhJX- attribute that is used instead of using the rr}r(h.X- attribute that is used instead of using the h/jubj~)r}r(h.X:meth:`inspect.getargspec``rh/jh0Nh5jh7}r(UreftypeXmethjjXinspect.getargspec`U refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjNjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-methreh;]h<]h>]uh/jh)]rhJXinspect.getargspec`()rr}r(h.Uh/jubah5hubaubhJX introspection.rr}r(h.X introspection.h/jubeubcdocutils.nodes field_list r)r}r(h.Uh/jh0jh5U field_listrh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rcdocutils.nodes field r )r }r (h.Uh7}r (h9]h:]h;]h<]h>]uh/jh)]r (cdocutils.nodes field_name r)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/j h)]rhJX Parametersrr}r(h.Uh/jubah5U field_namerubcdocutils.nodes field_body r)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/j h)]rcdocutils.nodes bullet_list r)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]r (cdocutils.nodes list_item r!)r"}r#(h.Uh7}r$(h9]h:]h;]h<]h>]uh/jh)]r%h)r&}r'(h.Uh7}r((h9]h:]h;]h<]h>]uh/j"h)]r)(cdocutils.nodes strong r*)r+}r,(h.Xfunh7}r-(h9]h:]h;]h<]h>]uh/j&h)]r.hJXfunr/r0}r1(h.Uh/j+ubah5Ustrongr2ubhJX -- r3r4}r5(h.Uh/j&ubhJX%The function to inspect arguments of.r6r7}r8(h.X%The function to inspect arguments of.h/j&ubeh5hubah5U list_itemr9ubj!)r:}r;(h.Uh7}r<(h9]h:]h;]h<]h>]uh/jh)]r=h)r>}r?(h.Uh7}r@(h9]h:]h;]h<]h>]uh/j:h)]rA(j*)rB}rC(h.Xkwlisth7}rD(h9]h:]h;]h<]h>]uh/j>h)]rEhJXkwlistrFrG}rH(h.Uh/jBubah5j2ubhJX -- rIrJ}rK(h.Uh/j>ubhJXThe list of keyword arguments.rLrM}rN(h.XThe list of keyword arguments.h/j>ubeh5hubah5j9ubeh5U bullet_listrOubah5U field_bodyrPubeh5UfieldrQubaubh)rR}rS(h.XExamplesrTh/jh0jh5hh7}rU(h9]h:]h;]h<]h>]uh@K hAhh)]rVhJXExamplesrWrX}rY(h.jTh/jRubaubcdocutils.nodes doctest_block rZ)r[}r\(h.X>>> def foo(self, x, y, logfile=None, loglevel=None): ... return x * y >>> fun_takes_kwargs(foo, ["logfile", "loglevel", "task_id"]) ["logfile", "loglevel"]h/jh0Nh5U doctest_blockr]h7}r^(U xml:spacer_Upreserver`h<]h;]h9]h:]h>]uh@NhAhh)]rahJX>>> def foo(self, x, y, logfile=None, loglevel=None): ... return x * y >>> fun_takes_kwargs(foo, ["logfile", "loglevel", "task_id"]) ["logfile", "loglevel"]rbrc}rd(h.Uh/j[ubaubjZ)re}rf(h.X>>> def foo(self, x, y, **kwargs): >>> fun_takes_kwargs(foo, ["logfile", "loglevel", "task_id"]) ["logfile", "loglevel", "task_id"]h/jh0Nh5j]h7}rg(j_j`h<]h;]h9]h:]h>]uh@NhAhh)]rhhJX>>> def foo(self, x, y, **kwargs): >>> fun_takes_kwargs(foo, ["logfile", "loglevel", "task_id"]) ["logfile", "loglevel", "task_id"]rirj}rk(h.Uh/jeubaubeubeubhV)rl}rm(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.gen_unique_idrnh5hYh7}ro(h<]h;]h9]h:]h>]Uentries]rp(h\X(gen_unique_id() (in module celery.utils)hUtrqauh@NhAhh)]ubhd)rr}rs(h.Uh/h,h0jnh5hgh7}rt(hihjXpyh<]h;]h9]h:]h>]hkXfunctionruhmjuuh@NhAhh)]rv(ho)rw}rx(h.Xgen_unique_id()h/jrh0hrh5hsh7}ry(h<]rzhahvh1X celery.utilsr{r|}r}bh;]h9]h:]h>]r~hah{X gen_unique_idrh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jwh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jwh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX gen_unique_idrr}r(h.Uh/jubaubh)r}r(h.Uh/jwh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]ubeubh)r}r(h.Uh/jrh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.XMGenerate a unique id, having - hopefully - a very small chance of collission.rh/jh0jnh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXMGenerate a unique id, having - hopefully - a very small chance of collission.rr}r(h.jh/jubaubh)r}r(h.X/For now this is provided by :func:`uuid.uuid4`.h/jh0jnh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]r(hJXFor now this is provided by rr}r(h.XFor now this is provided by h/jubj~)r}r(h.X:func:`uuid.uuid4`rh/jh0Nh5jh7}r(UreftypeXfuncjjX uuid.uuid4U refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjNjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-funcreh;]h<]h>]uh/jh)]rhJX uuid.uuid4()rr}r(h.Uh/jubah5hubaubhJX.r}r(h.X.h/jubeubeubeubhV)r}r(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.get_cls_by_namerh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X*get_cls_by_name() (in module celery.utils)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0jh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.X!get_cls_by_name(name, aliases={})h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsrr}rbh;]h9]h:]h>]rhah{Xget_cls_by_namerh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJXget_cls_by_namerr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.Xnameh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXnamerr}r(h.Uh/jubah5hubh)r}r(h.X aliases={}h7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX aliases={}rr}r(h.Uh/jubah5hubeubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.XGet class by name.rh/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXGet class by name.rr}r(h.jh/jubaubh)r}r(h.X=The name should be the full dot-separated path to the class::h/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJX<The name should be the full dot-separated path to the class:rr}r(h.X<The name should be the full dot-separated path to the class:h/jubaubcdocutils.nodes literal_block r)r}r(h.Xmodulename.ClassNameh/jh0jh5U literal_blockrh7}r(j_j`h<]h;]h9]h:]h>]uh@KRhAhh)]rhJXmodulename.ClassNamerr}r(h.Uh/jubaubh)r}r(h.X Example::h/jh0jh5hh7}r (h9]h:]h;]h<]h>]uh@KhAhh)]r hJXExample:r r }r (h.XExample:h/jubaubj)r}r(h.XOcelery.concurrency.processes.TaskPool ^- class nameh/jh0jh5jh7}r(j_j`h<]h;]h9]h:]h>]uh@KVhAhh)]rhJXOcelery.concurrency.processes.TaskPool ^- class namerr}r(h.Uh/jubaubh)r}r(h.XxIf ``aliases`` is provided, a dict containing short name/long name mappings, the name is looked up in the aliases first.h/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@K hAhh)]r(hJXIf rr}r(h.XIf h/jubh)r}r(h.X ``aliases``h7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXaliasesr r!}r"(h.Uh/jubah5hubhJXj is provided, a dict containing short name/long name mappings, the name is looked up in the aliases first.r#r$}r%(h.Xj is provided, a dict containing short name/long name mappings, the name is looked up in the aliases first.h/jubeubh)r&}r'(h.X Examples:r(h/jh0jh5hh7}r)(h9]h:]h;]h<]h>]uh@KhAhh)]r*hJX Examples:r+r,}r-(h.j(h/j&ubaubh)r.}r/(h.Uh/jh0jh5hh7}r0(h9]h:]h;]h<]h>]uh@NhAhh)]r1(jZ)r2}r3(h.Xl>>> get_cls_by_name("celery.concurrency.processes.TaskPool") h7}r4(j_j`h<]h;]h9]h:]h>]uh/j.h)]r5hJXl>>> get_cls_by_name("celery.concurrency.processes.TaskPool") r6r7}r8(h.Uh/j2ubah5j]ubjZ)r9}r:(h.X>>> get_cls_by_name("default", { ... "default": "celery.concurrency.processes.TaskPool"}) h7}r;(j_j`h<]h;]h9]h:]h>]uh/j.h)]r<hJX>>> get_cls_by_name("default", { ... "default": "celery.concurrency.processes.TaskPool"}) r=r>}r?(h.Uh/j9ubah5j]ubh)r@}rA(h.X# Does not try to look up non-string names. >>> from celery.concurrency.processes import TaskPool >>> get_cls_by_name(TaskPool) is TaskPool TruerBh/j.h0jh5hh7}rC(h9]h:]h;]h<]h>]uh@Kh)]rDhJX# Does not try to look up non-string names. >>> from celery.concurrency.processes import TaskPool >>> get_cls_by_name(TaskPool) is TaskPool TruerErF}rG(h.jBh/j@ubaubeubeubeubhV)rH}rI(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.get_full_cls_namerJh5hYh7}rK(h<]h;]h9]h:]h>]Uentries]rL(h\X,get_full_cls_name() (in module celery.utils)hUtrMauh@NhAhh)]ubhd)rN}rO(h.Uh/h,h0jJh5hgh7}rP(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrQhmjQuh@NhAhh)]rR(ho)rS}rT(h.Xget_full_cls_name(cls)h/jNh0hrh5hsh7}rU(h<]rVhahvh1X celery.utilsrWrX}rYbh;]h9]h:]h>]rZhah{Xget_full_cls_namer[h}Uh~uh@NhAhh)]r\(h)r]}r^(h.X celery.utils.h/jSh0hrh5hh7}r_(h9]h:]h;]h<]h>]uh@NhAhh)]r`hJX celery.utils.rarb}rc(h.Uh/j]ubaubh)rd}re(h.j[h/jSh0hrh5hh7}rf(h9]h:]h;]h<]h>]uh@NhAhh)]rghJXget_full_cls_namerhri}rj(h.Uh/jdubaubh)rk}rl(h.Uh/jSh0hrh5hh7}rm(h9]h:]h;]h<]h>]uh@NhAhh)]rnh)ro}rp(h.Xclsh7}rq(h9]h:]h;]h<]h>]uh/jkh)]rrhJXclsrsrt}ru(h.Uh/joubah5hubaubeubh)rv}rw(h.Uh/jNh0hrh5hh7}rx(h9]h:]h;]h<]h>]uh@NhAhh)]ryh)rz}r{(h.X1With a class, get its full module and class name.r|h/jvh0jJh5hh7}r}(h9]h:]h;]h<]h>]uh@KhAhh)]r~hJX1With a class, get its full module and class name.rr}r(h.j|h/jzubaubaubeubhV)r}r(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.instantiaterh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X&instantiate() (in module celery.utils)h Utrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0jh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.X"instantiate(name, *args, **kwargs)h/jh0hrh5hsh7}r(h<]rh ahvh1X celery.utilsrr}rbh;]h9]h:]h>]rh ah{X instantiaterh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX instantiaterr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.Xnameh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXnamerr}r(h.Uh/jubah5hubh)r}r(h.X*argsh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX*argsrr}r(h.Uh/jubah5hubh)r}r(h.X**kwargsh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX**kwargsrr}r(h.Uh/jubah5hubeubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.XInstantiate class by name.rh/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXInstantiate class by name.rr}r(h.jh/jubaubh)r}r(h.XSee :func:`get_cls_by_name`.h/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]r(hJXSee rr}r(h.XSee h/jubj~)r}r(h.X:func:`get_cls_by_name`rh/jh0Nh5jh7}r(UreftypeXfuncjjXget_cls_by_nameU refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjNjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-funcreh;]h<]h>]uh/jh)]rhJXget_cls_by_name()rr}r(h.Uh/jubah5hubaubhJX.r}r(h.X.h/jubeubeubeubhV)r}r(h.Uh/h,h0Nh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X&is_iterable() (in module celery.utils)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0Nh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.Xis_iterable(obj)h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsrr}rbh;]h9]h:]h>]rhah{X is_iterablerh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX is_iterablerr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rh)r}r (h.Xobjh7}r (h9]h:]h;]h<]h>]uh/jh)]r hJXobjr r }r(h.Uh/jubah5hubaubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]ubeubhV)r}r(h.Uh/h,h0Nh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X!kwdict() (in module celery.utils)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0Nh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.Xkwdict(kwargs)h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsr r!}r"bh;]h9]h:]h>]r#hah{Xkwdictr$h}Uh~uh@NhAhh)]r%(h)r&}r'(h.X celery.utils.h/jh0hrh5hh7}r((h9]h:]h;]h<]h>]uh@NhAhh)]r)hJX celery.utils.r*r+}r,(h.Uh/j&ubaubh)r-}r.(h.j$h/jh0hrh5hh7}r/(h9]h:]h;]h<]h>]uh@NhAhh)]r0hJXkwdictr1r2}r3(h.Uh/j-ubaubh)r4}r5(h.Uh/jh0hrh5hh7}r6(h9]h:]h;]h<]h>]uh@NhAhh)]r7h)r8}r9(h.Xkwargsh7}r:(h9]h:]h;]h<]h>]uh/j4h)]r;hJXkwargsr<r=}r>(h.Uh/j8ubah5hubaubeubh)r?}r@(h.Uh/jh0hrh5hh7}rA(h9]h:]h;]h<]h>]uh@NhAhh)]rB(h)rC}rD(h.X/Make sure keyword arguments are not in unicode.rEh/j?h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.kwdictrFh5hh7}rG(h9]h:]h;]h<]h>]uh@KhAhh)]rHhJX/Make sure keyword arguments are not in unicode.rIrJ}rK(h.jEh/jCubaubcdocutils.nodes definition_list rL)rM}rN(h.Uh/j?h0jFh5Udefinition_listrOh7}rP(h9]h:]h;]h<]h>]uh@NhAhh)]rQcdocutils.nodes definition_list_item rR)rS}rT(h.XUThis should be fixed in newer Python versions, see: http://bugs.python.org/issue4978.h/jMh0jFh5Udefinition_list_itemrUh7}rV(h9]h:]h;]h<]h>]uh@Kh)]rW(cdocutils.nodes term rX)rY}rZ(h.X.This should be fixed in newer Python versions,r[h/jSh0jFh5Utermr\h7}r](h9]h:]h;]h<]h>]uh@Kh)]r^hJX.This should be fixed in newer Python versions,r_r`}ra(h.j[h/jYubaubcdocutils.nodes definition rb)rc}rd(h.Uh7}re(h9]h:]h;]h<]h>]uh/jSh)]rfh)rg}rh(h.X&see: http://bugs.python.org/issue4978.h/jch0jFh5hh7}ri(h9]h:]h;]h<]h>]uh@Kh)]rj(hJXsee: rkrl}rm(h.Xsee: h/jgubcdocutils.nodes reference rn)ro}rp(h.X http://bugs.python.org/issue4978rqh7}rr(Urefurijqh<]h;]h9]h:]h>]uh/jgh)]rshJX http://bugs.python.org/issue4978rtru}rv(h.Uh/joubah5U referencerwubhJX.rx}ry(h.X.h/jgubeubah5U definitionrzubeubaubeubeubhV)r{}r|(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.mattrgetterr}h5hYh7}r~(h<]h;]h9]h:]h>]Uentries]r(h\X&mattrgetter() (in module celery.utils)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0j}h5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.Xmattrgetter(*attrs)h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsrr}rbh;]h9]h:]h>]rhah{X mattrgetterrh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX mattrgetterrr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rh)r}r(h.X*attrsh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX*attrsrr}r(h.Uh/jubah5hubaubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rh)r}r(h.XuLike :func:`operator.itemgetter` but returns ``None`` on missing attributes instead of raising :exc:`AttributeError`.h/jh0j}h5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]r(hJXLike rr}r(h.XLike h/jubj~)r}r(h.X:func:`operator.itemgetter`rh/jh0Nh5jh7}r(UreftypeXfuncjjXoperator.itemgetterU refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjNjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-funcreh;]h<]h>]uh/jh)]rhJXoperator.itemgetter()rr}r(h.Uh/jubah5hubaubhJX but returns rr}r(h.X but returns h/jubh)r}r(h.X``None``h7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXNonerr}r(h.Uh/jubah5hubhJX* on missing attributes instead of raising rr}r(h.X* on missing attributes instead of raising h/jubj~)r}r(h.X:exc:`AttributeError`rh/jh0Nh5jh7}r(UreftypeXexcjjXAttributeErrorU refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjNjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-excreh;]h<]h>]uh/jh)]rhJXAttributeErrorrr}r(h.Uh/jubah5hubaubhJX.r}r(h.X.h/jubeubaubeubhV)r}r(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.maybe_promiserh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X(maybe_promise() (in module celery.utils)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0jh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.Xmaybe_promise(value)h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsrr}rbh;]h9]h:]h>]rhah{X maybe_promiserh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX maybe_promiserr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rh)r}r (h.Xvalueh7}r (h9]h:]h;]h<]h>]uh/jh)]r hJXvaluer r }r(h.Uh/jubah5hubaubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rh)r}r(h.X$Evaluates if the value is a promise.rh/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJX$Evaluates if the value is a promise.rr}r(h.jh/jubaubaubeubhV)r}r(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.mitemgetterrh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X&mitemgetter() (in module celery.utils)hUtr auh@NhAhh)]ubhd)r!}r"(h.Uh/h,h0jh5hgh7}r#(hihjXpyh<]h;]h9]h:]h>]hkXfunctionr$hmj$uh@NhAhh)]r%(ho)r&}r'(h.Xmitemgetter(*items)h/j!h0hrh5hsh7}r((h<]r)hahvh1X celery.utilsr*r+}r,bh;]h9]h:]h>]r-hah{X mitemgetterr.h}Uh~uh@NhAhh)]r/(h)r0}r1(h.X celery.utils.h/j&h0hrh5hh7}r2(h9]h:]h;]h<]h>]uh@NhAhh)]r3hJX celery.utils.r4r5}r6(h.Uh/j0ubaubh)r7}r8(h.j.h/j&h0hrh5hh7}r9(h9]h:]h;]h<]h>]uh@NhAhh)]r:hJX mitemgetterr;r<}r=(h.Uh/j7ubaubh)r>}r?(h.Uh/j&h0hrh5hh7}r@(h9]h:]h;]h<]h>]uh@NhAhh)]rAh)rB}rC(h.X*itemsh7}rD(h9]h:]h;]h<]h>]uh/j>h)]rEhJX*itemsrFrG}rH(h.Uh/jBubah5hubaubeubh)rI}rJ(h.Uh/j!h0hrh5hh7}rK(h9]h:]h;]h<]h>]uh@NhAhh)]rLh)rM}rN(h.XjLike :func:`operator.itemgetter` but returns ``None`` on missing items instead of raising :exc:`KeyError`.h/jIh0jh5hh7}rO(h9]h:]h;]h<]h>]uh@KhAhh)]rP(hJXLike rQrR}rS(h.XLike h/jMubj~)rT}rU(h.X:func:`operator.itemgetter`rVh/jMh0Nh5jh7}rW(UreftypeXfuncjjXoperator.itemgetterU refdomainXpyrXh<]h;]U refexplicith9]h:]h>]jjjNjjuh@Nh)]rYh)rZ}r[(h.jVh7}r\(h9]h:]r](jjXXpy-funcr^eh;]h<]h>]uh/jTh)]r_hJXoperator.itemgetter()r`ra}rb(h.Uh/jZubah5hubaubhJX but returns rcrd}re(h.X but returns h/jMubh)rf}rg(h.X``None``h7}rh(h9]h:]h;]h<]h>]uh/jMh)]rihJXNonerjrk}rl(h.Uh/jfubah5hubhJX% on missing items instead of raising rmrn}ro(h.X% on missing items instead of raising h/jMubj~)rp}rq(h.X:exc:`KeyError`rrh/jMh0Nh5jh7}rs(UreftypeXexcjjXKeyErrorU refdomainXpyrth<]h;]U refexplicith9]h:]h>]jjjNjjuh@Nh)]ruh)rv}rw(h.jrh7}rx(h9]h:]ry(jjtXpy-excrzeh;]h<]h>]uh/jph)]r{hJXKeyErrorr|r}}r~(h.Uh/jvubah5hubaubhJX.r}r(h.X.h/jMubeubaubeubhV)r}r(h.Uh/h,h0Nh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X mpromise (class in celery.utils)h Utrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0Nh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXclassrhmjuh@NhAhh)]r(ho)r}r(h.Xmpromise(fun, *args, **kwargs)h/jh0hrh5hsh7}r(h<]rh ahvh1X celery.utilsrr}rbh;]h9]h:]h>]rh ah{Xmpromiserh}Uh~uh@NhAhh)]r(csphinx.addnodes desc_annotation r)r}r(h.Xclass h/jh0hrh5Udesc_annotationrh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJXclass rr}r(h.Uh/jubaubh)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJXmpromiserr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.Xfunh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXfunrr}r(h.Uh/jubah5hubh)r}r(h.X*argsh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX*argsrr}r(h.Uh/jubah5hubh)r}r(h.X**kwargsh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX**kwargsrr}r(h.Uh/jubah5hubeubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.XMemoized promise.rh/jh0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.mpromiserh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXMemoized promise.rr}r(h.jh/jubaubh)r}r(h.XXThe function is only evaluated once, every subsequent access will return the same value.rh/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXXThe function is only evaluated once, every subsequent access will return the same value.rr}r(h.jh/jubaubhV)r}r(h.Uh/jh0jh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X+evaluated (celery.utils.mpromise attribute)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/jh0jh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkX attributerhmjuh@NhAhh)]r(ho)r}r(h.X evaluatedrh/jh0hQh5hsh7}r(h<]rhahvjh;]h9]h:]h>]rhah{Xmpromise.evaluatedh}jh~uh@KhAhh)]rh)r}r(h.jh/jh0hQh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJX evaluatedrr}r(h.Uh/jubaubaubh)r}r(h.Uh/jh0hQh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rh)r}r(h.X=Set to to :const:`True` after the promise has been evaluated.h/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]r(hJX Set to to rr}r(h.X Set to to h/jubj~)r}r(h.X :const:`True`rh/jh0Nh5jh7}r(UreftypeXconstjjXTrueU refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjjjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-constreh;]h<]h>]uh/jh)]rhJXTruer r }r (h.Uh/jubah5hubaubhJX& after the promise has been evaluated.r r }r(h.X& after the promise has been evaluated.h/jubeubaubeubhV)r}r(h.Uh/jh0Nh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X)evaluate() (celery.utils.mpromise method)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/jh0Nh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXmethodrhmjuh@NhAhh)]r(ho)r}r(h.Xmpromise.evaluate()h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsrr}rbh;]h9]h:]h>]r hah{Xmpromise.evaluateh}jh~uh@NhAhh)]r!(h)r"}r#(h.Xevaluateh/jh0hrh5hh7}r$(h9]h:]h;]h<]h>]uh@NhAhh)]r%hJXevaluater&r'}r((h.Uh/j"ubaubh)r)}r*(h.Uh/jh0hrh5hh7}r+(h9]h:]h;]h<]h>]uh@NhAhh)]ubeubh)r,}r-(h.Uh/jh0hrh5hh7}r.(h9]h:]h;]h<]h>]uh@NhAhh)]ubeubhV)r/}r0(h.Uh/jh0Nh5hYh7}r1(h<]h;]h9]h:]h>]Uentries]r2(h\X+evaluated (celery.utils.mpromise attribute)Xcelery.utils.mpromise.evaluatedUtr3auh@NhAhh)]ubhd)r4}r5(h.Uh/jh0Nh5hgh7}r6(hihjXpyh<]h;]h9]h:]h>]hkX attributer7hmj7uh@NhAhh)]r8(ho)r9}r:(h.Xmpromise.evaluatedh/j4h0U r;h5hsh7}r<(h<]hvh1X celery.utilsr=r>}r?bh;]h9]h:]h>]h{Xmpromise.evaluatedh}jh~uh@NhAhh)]r@(h)rA}rB(h.X evaluatedh/j9h0j;h5hh7}rC(h9]h:]h;]h<]h>]uh@NhAhh)]rDhJX evaluatedrErF}rG(h.Uh/jAubaubj)rH}rI(h.X = Falseh/j9h0j;h5jh7}rJ(h9]h:]h;]h<]h>]uh@NhAhh)]rKhJX = FalserLrM}rN(h.Uh/jHubaubeubh)rO}rP(h.Uh/j4h0j;h5hh7}rQ(h9]h:]h;]h<]h>]uh@NhAhh)]ubeubeubeubhV)rR}rS(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.nooprTh5hYh7}rU(h<]h;]h9]h:]h>]Uentries]rV(h\Xnoop() (in module celery.utils)hUtrWauh@NhAhh)]ubhd)rX}rY(h.Uh/h,h0jTh5hgh7}rZ(hihjXpyh<]h;]h9]h:]h>]hkXfunctionr[hmj[uh@NhAhh)]r\(ho)r]}r^(h.Xnoop(*args, **kwargs)h/jXh0hrh5hsh7}r_(h<]r`hahvh1X celery.utilsrarb}rcbh;]h9]h:]h>]rdhah{Xnoopreh}Uh~uh@NhAhh)]rf(h)rg}rh(h.X celery.utils.h/j]h0hrh5hh7}ri(h9]h:]h;]h<]h>]uh@NhAhh)]rjhJX celery.utils.rkrl}rm(h.Uh/jgubaubh)rn}ro(h.jeh/j]h0hrh5hh7}rp(h9]h:]h;]h<]h>]uh@NhAhh)]rqhJXnooprrrs}rt(h.Uh/jnubaubh)ru}rv(h.Uh/j]h0hrh5hh7}rw(h9]h:]h;]h<]h>]uh@NhAhh)]rx(h)ry}rz(h.X*argsh7}r{(h9]h:]h;]h<]h>]uh/juh)]r|hJX*argsr}r~}r(h.Uh/jyubah5hubh)r}r(h.X**kwargsh7}r(h9]h:]h;]h<]h>]uh/juh)]rhJX**kwargsrr}r(h.Uh/jubah5hubeubeubh)r}r(h.Uh/jXh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.X No operation.rh/jh0jTh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJX No operation.rr}r(h.jh/jubaubh)r}r(h.X7Takes any arguments/keyword arguments and does nothing.rh/jh0jTh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJX7Takes any arguments/keyword arguments and does nothing.rr}r(h.jh/jubaubeubeubhV)r}r(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.padlistrh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X"padlist() (in module celery.utils)h Utrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0jh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.X&padlist(container, size, default=None)h/jh0hrh5hsh7}r(h<]rh ahvh1X celery.utilsrr}rbh;]h9]h:]h>]rh ah{Xpadlistrh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJXpadlistrr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.X containerh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX containerrr}r(h.Uh/jubah5hubh)r}r(h.Xsizeh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXsizerr}r(h.Uh/jubah5hubh)r}r(h.X default=Noneh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX default=Nonerr}r(h.Uh/jubah5hubeubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r(h.XPad list with default elements.rh/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXPad list with default elements.rr}r(h.jh/jubaubh)r}r(h.X Examples:rh/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJX Examples:rr}r(h.jh/jubaubjZ)r}r(h.Xb>>> first, last, city = padlist(["George", "Costanza", "NYC"], 3) ("George", "Costanza", "NYC") >>> first, last, city = padlist(["George", "Costanza"], 3) ("George", "Costanza", None) >>> first, last, city, planet = padlist(["George", "Costanza", "NYC"], 4, default="Earth") ("George", "Costanza", "NYC", "Earth")h/jh0Nh5j]h7}r(j_j`h<]h;]h9]h:]h>]uh@NhAhh)]rhJXb>>> first, last, city = padlist(["George", "Costanza", "NYC"], 3) ("George", "Costanza", "NYC") >>> first, last, city = padlist(["George", "Costanza"], 3) ("George", "Costanza", None) >>> first, last, city, planet = padlist(["George", "Costanza", "NYC"], 4, default="Earth") ("George", "Costanza", "NYC", "Earth")rr}r(h.Uh/jubaubeubeubhV)r}r(h.Uh/h,h0Nh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\Xpromise (class in celery.utils)h Utrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0Nh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXclassrhmjuh@NhAhh)]r(ho)r}r(h.Xpromise(fun, *args, **kwargs)h/jh0hrh5hsh7}r(h<]rh ahvh1X celery.utilsrr}rbh;]h9]h:]h>]rh ah{Xpromiserh}Uh~uh@NhAhh)]r(j)r}r(h.Xclass h/jh0hrh5jh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r hJXclass r r }r (h.Uh/jubaubh)r }r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/j ubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJXpromiserr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]r(h)r}r (h.Xfunh7}r!(h9]h:]h;]h<]h>]uh/jh)]r"hJXfunr#r$}r%(h.Uh/jubah5hubh)r&}r'(h.X*argsh7}r((h9]h:]h;]h<]h>]uh/jh)]r)hJX*argsr*r+}r,(h.Uh/j&ubah5hubh)r-}r.(h.X**kwargsh7}r/(h9]h:]h;]h<]h>]uh/jh)]r0hJX**kwargsr1r2}r3(h.Uh/j-ubah5hubeubeubh)r4}r5(h.Uh/jh0hrh5hh7}r6(h9]h:]h;]h<]h>]uh@NhAhh)]r7(h)r8}r9(h.X A promise.r:h/j4h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.promiser;h5hh7}r<(h9]h:]h;]h<]h>]uh@KhAhh)]r=hJX A promise.r>r?}r@(h.j:h/j8ubaubh)rA}rB(h.XEvaluated when called or if the :meth:`evaluate` method is called. The function is evaluated on every access, so the value is not memoized (see :class:`mpromise`).h/j4h0j;h5hh7}rC(h9]h:]h;]h<]h>]uh@KhAhh)]rD(hJX Evaluated when called or if the rErF}rG(h.X Evaluated when called or if the h/jAubj~)rH}rI(h.X:meth:`evaluate`rJh/jAh0Nh5jh7}rK(UreftypeXmethjjXevaluateU refdomainXpyrLh<]h;]U refexplicith9]h:]h>]jjjjjjuh@Nh)]rMh)rN}rO(h.jJh7}rP(h9]h:]rQ(jjLXpy-methrReh;]h<]h>]uh/jHh)]rShJX evaluate()rTrU}rV(h.Uh/jNubah5hubaubhJX` method is called. The function is evaluated on every access, so the value is not memoized (see rWrX}rY(h.X` method is called. The function is evaluated on every access, so the value is not memoized (see h/jAubj~)rZ}r[(h.X:class:`mpromise`r\h/jAh0Nh5jh7}r](UreftypeXclassjjXmpromiseU refdomainXpyr^h<]h;]U refexplicith9]h:]h>]jjjjjjuh@Nh)]r_h)r`}ra(h.j\h7}rb(h9]h:]rc(jj^Xpy-classrdeh;]h<]h>]uh/jZh)]rehJXmpromiserfrg}rh(h.Uh/j`ubah5hubaubhJX).rirj}rk(h.X).h/jAubeubjL)rl}rm(h.Uh/j4h0hQh5jOh7}rn(h9]h:]h;]h<]h>]uh@NhAhh)]rojR)rp}rq(h.XlOverloaded operations that will evaluate the promise: :meth:`__str__`, :meth:`__repr__`, :meth:`__cmp__`. h/jlh0j;h5jUh7}rr(h9]h:]h;]h<]h>]uh@K h)]rs(jX)rt}ru(h.X5Overloaded operations that will evaluate the promise:rvh/jph0j;h5j\h7}rw(h9]h:]h;]h<]h>]uh@K h)]rxhJX5Overloaded operations that will evaluate the promise:ryrz}r{(h.jvh/jtubaubjb)r|}r}(h.Uh7}r~(h9]h:]h;]h<]h>]uh/jph)]rh)r}r(h.X3:meth:`__str__`, :meth:`__repr__`, :meth:`__cmp__`.h/j|h0j;h5hh7}r(h9]h:]h;]h<]h>]uh@Kh)]r(j~)r}r(h.X:meth:`__str__`rh/jh0Nh5jh7}r(UreftypeXmethjjX__str__U refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjjjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-methreh;]h<]h>]uh/jh)]rhJX __str__()rr}r(h.Uh/jubah5hubaubhJX, rr}r(h.X, h/jubj~)r}r(h.X:meth:`__repr__`rh/jh0Nh5jh7}r(UreftypeXmethjjX__repr__U refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjjjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-methreh;]h<]h>]uh/jh)]rhJX __repr__()rr}r(h.Uh/jubah5hubaubhJX, rr}r(h.X, h/jubj~)r}r(h.X:meth:`__cmp__`rh/jh0Nh5jh7}r(UreftypeXmethjjX__cmp__U refdomainXpyrh<]h;]U refexplicith9]h:]h>]jjjjjjuh@Nh)]rh)r}r(h.jh7}r(h9]h:]r(jjXpy-methreh;]h<]h>]uh/jh)]rhJX __cmp__()rr}r(h.Uh/jubah5hubaubhJX.r}r(h.X.h/jubeubah5jzubeubaubhV)r}r(h.Uh/j4h0Nh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X(evaluate() (celery.utils.promise method)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/j4h0Nh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXmethodrhmjuh@NhAhh)]r(ho)r}r(h.Xpromise.evaluate()h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsrr}rbh;]h9]h:]h>]rhah{Xpromise.evaluateh}jh~uh@NhAhh)]r(h)r}r(h.Xevaluateh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJXevaluaterr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]ubeubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]ubeubeubeubhV)r}r(h.Uh/h,h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.repeatlastrh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X%repeatlast() (in module celery.utils)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0jh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.Xrepeatlast(it)h/jh0hrh5hsh7}r(h<]rhahvh1X celery.utilsrr}rbh;]h9]h:]h>]rhah{X repeatlastrh}Uh~uh@NhAhh)]r(h)r}r(h.X celery.utils.h/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX celery.utils.rr}r(h.Uh/jubaubh)r}r(h.jh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rhJX repeatlastrr}r(h.Uh/jubaubh)r}r(h.Uh/jh0hrh5hh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rh)r}r(h.Xith7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXitrr}r(h.Uh/jubah5hubaubeubh)r}r(h.Uh/jh0hrh5hh7}r (h9]h:]h;]h<]h>]uh@NhAhh)]r h)r }r (h.XbIterate over all elements in the iterator, and when its exhausted yield the last value infinitely.r h/jh0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXbIterate over all elements in the iterator, and when its exhausted yield the last value infinitely.rr}r(h.j h/j ubaubaubeubhV)r}r(h.Uh/h,h0Nh5hYh7}r(h<]h;]h9]h:]h>]Uentries]r(h\X*retry_over_time() (in module celery.utils)hUtrauh@NhAhh)]ubhd)r}r(h.Uh/h,h0Nh5hgh7}r(hihjXpyh<]h;]h9]h:]h>]hkXfunctionrhmjuh@NhAhh)]r(ho)r}r(h.Xretry_over_time(fun, catch, args=[], kwargs={}, errback=, max_retries=None, interval_start=2, interval_step=2, interval_max=30)h/jh0hrh5hsh7}r(h<]r hahvh1X celery.utilsr!r"}r#bh;]h9]h:]h>]r$hah{Xretry_over_timer%h}Uh~uh@NhAhh)]r&(h)r'}r((h.X celery.utils.h/jh0hrh5hh7}r)(h9]h:]h;]h<]h>]uh@NhAhh)]r*hJX celery.utils.r+r,}r-(h.Uh/j'ubaubh)r.}r/(h.j%h/jh0hrh5hh7}r0(h9]h:]h;]h<]h>]uh@NhAhh)]r1hJXretry_over_timer2r3}r4(h.Uh/j.ubaubh)r5}r6(h.Uh/jh0hrh5hh7}r7(h9]h:]h;]h<]h>]uh@NhAhh)]r8(h)r9}r:(h.Xfunh7}r;(h9]h:]h;]h<]h>]uh/j5h)]r<hJXfunr=r>}r?(h.Uh/j9ubah5hubh)r@}rA(h.Xcatchh7}rB(h9]h:]h;]h<]h>]uh/j5h)]rChJXcatchrDrE}rF(h.Uh/j@ubah5hubh)rG}rH(h.Xargs=h7}rI(h9]h:]h;]h<]h>]uh/j5h)]rJhJXargs=rKrL}rM(h.Uh/jGubah5hubj)rN}rO(h.Uh7}rP(h9]h:]h;]h<]h>]uh/j5h)]h5jubh)rQ}rR(h.X kwargs={}h7}rS(h9]h:]h;]h<]h>]uh/j5h)]rThJX kwargs={}rUrV}rW(h.Uh/jQubah5hubh)rX}rY(h.X$errback=h7}rZ(h9]h:]h;]h<]h>]uh/j5h)]r[hJX$errback=r\r]}r^(h.Uh/jXubah5hubh)r_}r`(h.Xmax_retries=Noneh7}ra(h9]h:]h;]h<]h>]uh/j5h)]rbhJXmax_retries=Nonercrd}re(h.Uh/j_ubah5hubh)rf}rg(h.Xinterval_start=2h7}rh(h9]h:]h;]h<]h>]uh/j5h)]rihJXinterval_start=2rjrk}rl(h.Uh/jfubah5hubh)rm}rn(h.Xinterval_step=2h7}ro(h9]h:]h;]h<]h>]uh/j5h)]rphJXinterval_step=2rqrr}rs(h.Uh/jmubah5hubh)rt}ru(h.Xinterval_max=30h7}rv(h9]h:]h;]h<]h>]uh/j5h)]rwhJXinterval_max=30rxry}rz(h.Uh/jtubah5hubeubeubh)r{}r|(h.Uh/jh0hrh5hh7}r}(h9]h:]h;]h<]h>]uh@NhAhh)]r~(h)r}r(h.X?Retry the function over and over until max retries is exceeded.rh/j{h0X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py:docstring of celery.utils.retry_over_timerh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJX?Retry the function over and over until max retries is exceeded.rr}r(h.jh/jubaubh)r}r(h.XFor each retry we sleep a for a while before we try again, this interval is increased for every retry until the max seconds is reached.rh/j{h0jh5hh7}r(h9]h:]h;]h<]h>]uh@KhAhh)]rhJXFor each retry we sleep a for a while before we try again, this interval is increased for every retry until the max seconds is reached.rr}r(h.jh/jubaubj)r}r(h.Uh/j{h0Nh5jh7}r(h9]h:]h;]h<]h>]uh@NhAhh)]rj )r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]r(j)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJX Parametersrr}r(h.Uh/jubah5jubj)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rj)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]r(j!)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rh)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]r(j*)r}r(h.Xfunh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXfunrr}r(h.Uh/jubah5j2ubhJX -- rr}r(h.Uh/jubhJXThe function to tryrr}r(h.XThe function to tryrh/jubeh5hubah5j9ubj!)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rh)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]r(j*)r}r(h.Xcatchh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXcatchrr}r(h.Uh/jubah5j2ubhJX -- rr}r(h.Uh/jubhJXEExceptions to catch, can be either tuple or a single exception class.rr}r(h.XEExceptions to catch, can be either tuple or a single exception class.rh/jubeh5hubah5j9ubj!)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rh)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]r(j*)r}r(h.Xargsh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXargsrr}r(h.Uh/jubah5j2ubhJX -- rr}r(h.Uh/jubhJX/Positional arguments passed on to the function.rr}r(h.X/Positional arguments passed on to the function.rh/jubeh5hubah5j9ubj!)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]rh)r}r(h.Uh7}r(h9]h:]h;]h<]h>]uh/jh)]r(j*)r}r(h.Xkwargsh7}r(h9]h:]h;]h<]h>]uh/jh)]rhJXkwargsrr}r(h.Uh/jubah5j2ubhJX -- rr}r(h.Uh/jubhJX,Keyword arguments passed on to the function.rr}r(h.X,Keyword arguments passed on to the function.rh/jubeh5hubah5j9ubj!)r}r (h.Uh7}r (h9]h:]h;]h<]h>]uh/jh)]r h)r }r (h.Uh7}r (h9]h:]h;]h<]h>]uh/jh)]r (j*)r }r (h.Xerrbackh7}r (h9]h:]h;]h<]h>]uh/j h)]r hJXerrbackr r }r (h.Uh/j ubah5j2ubhJX -- r r }r (h.Uh/j ubhJX"Callback for when an exception in r r }r (h.X"Callback for when an exception in h/j ubh)r }r (h.X ``catch``h7}r (h9]h:]h;]h<]h>]uh/j h)]r hJXcatchr r }r (h.Uh/j ubah5hubhJX2 is raised. The callback must take two arguments: r r }r (h.X2 is raised. The callback must take two arguments: h/j ubh)r }r (h.X``exc``h7}r (h9]h:]h;]h<]h>]uh/j h)]r! hJXexcr" r# }r$ (h.Uh/j ubah5hubhJX and r% r& }r' (h.X and h/j ubh)r( }r) (h.X ``interval``h7}r* (h9]h:]h;]h<]h>]uh/j h)]r+ hJXintervalr, r- }r. (h.Uh/j( ubah5hubhJX, where r/ r0 }r1 (h.X, where h/j ubh)r2 }r3 (h.X``exc``h7}r4 (h9]h:]h;]h<]h>]uh/j h)]r5 hJXexcr6 r7 }r8 (h.Uh/j2 ubah5hubhJX is the exception instance, and r9 r: }r; (h.X is the exception instance, and h/j ubh)r< }r= (h.X ``interval``h7}r> (h9]h:]h;]h<]h>]uh/j h)]r? hJXintervalr@ rA }rB (h.Uh/j< ubah5hubhJX' is the time in seconds to sleep next..rC rD }rE (h.X' is the time in seconds to sleep next..h/j ubeh5hubah5j9ubj!)rF }rG (h.Uh7}rH (h9]h:]h;]h<]h>]uh/jh)]rI h)rJ }rK (h.Uh7}rL (h9]h:]h;]h<]h>]uh/jF h)]rM (j*)rN }rO (h.X max_retriesh7}rP (h9]h:]h;]h<]h>]uh/jJ h)]rQ hJX max_retriesrR rS }rT (h.Uh/jN ubah5j2ubhJX -- rU rV }rW (h.Uh/jJ ubhJXWMaximum number of retries before we give up. If this is not set, we will retry forever.rX rY }rZ (h.XWMaximum number of retries before we give up. If this is not set, we will retry forever.r[ h/jJ ubeh5hubah5j9ubj!)r\ }r] (h.Uh7}r^ (h9]h:]h;]h<]h>]uh/jh)]r_ h)r` }ra (h.Uh7}rb (h9]h:]h;]h<]h>]uh/j\ h)]rc (j*)rd }re (h.Xinterval_starth7}rf (h9]h:]h;]h<]h>]uh/j` h)]rg hJXinterval_startrh ri }rj (h.Uh/jd ubah5j2ubhJX -- rk rl }rm (h.Uh/j` ubhJX8How long (in seconds) we start sleeping between retries.rn ro }rp (h.X8How long (in seconds) we start sleeping between retries.rq h/j` ubeh5hubah5j9ubj!)rr }rs (h.Uh7}rt (h9]h:]h;]h<]h>]uh/jh)]ru h)rv }rw (h.Uh7}rx (h9]h:]h;]h<]h>]uh/jr h)]ry (j*)rz }r{ (h.X interval_steph7}r| (h9]h:]h;]h<]h>]uh/jv h)]r} hJX interval_stepr~ r }r (h.Uh/jz ubah5j2ubhJX -- r r }r (h.Uh/jv ubhJX5By how much the interval is increased for each retry.r r }r (h.X5By how much the interval is increased for each retry.r h/jv ubeh5hubah5j9ubj!)r }r (h.Uh7}r (h9]h:]h;]h<]h>]uh/jh)]r h)r }r (h.Uh7}r (h9]h:]h;]h<]h>]uh/j h)]r (j*)r }r (h.X interval_maxh7}r (h9]h:]h;]h<]h>]uh/j h)]r hJX interval_maxr r }r (h.Uh/j ubah5j2ubhJX -- r r }r (h.Uh/j ubhJX3Maximum number of seconds to sleep between retries.r r }r (h.X3Maximum number of seconds to sleep between retries.r h/j ubeh5hubah5j9ubeh5jOubah5jPubeh5jQubaubeubeubeubah.UU transformerr NU footnote_refsr }r Urefnamesr }r Usymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr ]r U citationsr ]r hAhU current_liner NUtransform_messagesr ]r cdocutils.nodes system_message r )r }r (h.Uh7}r (h9]UlevelKh<]h;]UsourcehQh:]h>]UlineKUtypeUINFOr uh)]r h)r }r (h.Uh7}r (h9]h:]h;]h<]h>]uh/j h)]r hJX9Hyperlink target "module-celery.utils" is not referenced.r r }r (h.Uh/j ubah5hubah5Usystem_messager ubaUreporterr NUid_startr KU autofootnotesr ]r U citation_refsr }r Uindirect_targetsr ]r Usettingsr (cdocutils.frontend Values r or }r (Ufootnote_backlinksr KUrecord_dependenciesr NU rfc_base_urlr Uhttp://tools.ietf.org/html/r U tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr NhGNUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformr KUwarning_streamr NUpep_file_url_templater Upep-%04dr Uexit_status_levelr KUconfigr NUstrict_visitorr NUcloak_email_addressesr Utrim_footnote_reference_spacer Uenvr NUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformr U source_linkr NUrfc_referencesr NUoutput_encodingr Uutf-8r U source_urlr NUinput_encodingr U utf-8-sigr U_disable_configr NU id_prefixr UU tab_widthr KUerror_encodingr UUTF-8r U_sourcer U^/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.utils.rstr Ugettext_compactr U generatorr NUdump_internalsr NU smart_quotesr U pep_base_urlr Uhttp://www.python.org/dev/peps/r Usyntax_highlightr Ulongr Uinput_encoding_error_handlerr j Uauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledr U raw_enabledr KU dump_settingsr NubUsymbol_footnote_startr KUidsr }r (hjhjhjwh jh jh jh jhUhOh'cdocutils.nodes topic r )r }r (h.Uh/h,h0h3h5Utopicr h7}r (h9]h:]r (Ucontentsr Ulocalr eh;]h<]r h'ah>]r h auh@KhAhh)]r cdocutils.nodes pending r )r }r (h.X.. contents:: :local:h/j U transformr cdocutils.transforms.parts Contents r Udetailsr }r UlocalNsh5Upendingr! h7}r" (h9]h:]h;]h<]h>]uh)]ubaubhjhjhjhjShhhjhj]hjhjHhjhjhjhhphj&h(h,hjuUsubstitution_namesr# }r$ h5hAh7}r% (h9]h<]h;]Usourceh3h:]h>]uU footnotesr& ]r' Urefidsr( }r) ub.PKHDDCωNcelery-2.0-archived/.doctrees/internals/reference/celery.execute.trace.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X(tracing execution - celery.execute.traceqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXf/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.execute.trace.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U&tracing-execution-celery-execute-traceq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX(Tracing Execution - celery.execute.traceq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X(Tracing Execution - celery.execute.traceq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUf/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.execute.trace.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD?Ncelery-2.0-archived/.doctrees/internals/reference/celery.backends.amqp.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X$backend: amqp - celery.backends.amqpqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXf/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.amqp.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U!backend-amqp-celery-backends-amqpq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX$Backend: AMQP - celery.backends.amqpq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X$Backend: AMQP - celery.backends.amqpq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUf/var/build/user_builds/celery/checkouts/2.0-archived/docs/internals/reference/celery.backends.amqp.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDx<<<celery-2.0-archived/.doctrees/userguide/remote-tasks.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XbasicsqNXexecuting webhook tasksqNXhttp callback tasks (webhooks)qNXdjango webhook exampleq NXruby on rails webhook exampleq NUcontentsq NuUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUbasicsqhUexecuting-webhook-tasksqhUhttp-callback-tasks-webhooksqh Udjango-webhook-exampleqh Uruby-on-rails-webhook-exampleqh UcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceq UUparentq!hUsourceq"cdocutils.nodes reprunicode q#XT/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/remote-tasks.rstq$q%}q&bUtagnameq'Usectionq(U attributesq)}q*(Udupnamesq+]Uclassesq,]Ubackrefsq-]Uidsq.]q/(Xmodule-celery.task.httpq0heUnamesq1]q2hauUlineq3KUdocumentq4hh]q5(cdocutils.nodes title q6)q7}q8(h XHTTP Callback Tasks (Webhooks)q9h!hh"h%h'Utitleq:h)}q;(h+]h,]h-]h.]h1]uh3Kh4hh]qq?}q@(h h9h!h7ubaubcsphinx.addnodes index qA)qB}qC(h Uh!hh"h%h'UindexqDh)}qE(h.]h-]h+]h,]h1]Uentries]qF(UsingleqGXcelery.task.http (module)Xmodule-celery.task.httpUtqHauh3Kh4hh]ubcdocutils.nodes topic qI)qJ}qK(h Uh!hh"h%h'UtopicqLh)}qM(h+]h,]qN(UcontentsqOUlocalqPeh-]h.]qQhah1]qRh auh3Kh4hh]qScdocutils.nodes bullet_list qT)qU}qV(h Uh!hJh"Nh'U bullet_listqWh)}qX(h+]h,]h-]h.]h1]uh3Nh4hh]qY(cdocutils.nodes list_item qZ)q[}q\(h Uh)}q](h+]h,]h-]h.]h1]uh!hUh]q^cdocutils.nodes paragraph q_)q`}qa(h Uh)}qb(h+]h,]h-]h.]h1]uh!h[h]qccdocutils.nodes reference qd)qe}qf(h Uh)}qg(h.]qhUid1qiah-]h+]h,]h1]Urefidhuh!h`h]qjh=XBasicsqkql}qm(h XBasicsqnh!heubah'U referenceqoubah'U paragraphqpubah'U list_itemqqubhZ)qr}qs(h Uh)}qt(h+]h,]h-]h.]h1]uh!hUh]quh_)qv}qw(h Uh)}qx(h+]h,]h-]h.]h1]uh!hrh]qyhd)qz}q{(h Uh)}q|(h.]q}Uid2q~ah-]h+]h,]h1]Urefidhuh!hvh]qh=XDjango webhook exampleqq}q(h XDjango webhook exampleqh!hzubah'houbah'hpubah'hqubhZ)q}q(h Uh)}q(h+]h,]h-]h.]h1]uh!hUh]qh_)q}q(h Uh)}q(h+]h,]h-]h.]h1]uh!hh]qhd)q}q(h Uh)}q(h.]qUid3qah-]h+]h,]h1]Urefidhuh!hh]qh=XRuby on Rails webhook exampleqq}q(h XRuby on Rails webhook exampleqh!hubah'houbah'hpubah'hqubhZ)q}q(h Uh)}q(h+]h,]h-]h.]h1]uh!hUh]qh_)q}q(h Uh)}q(h+]h,]h-]h.]h1]uh!hh]qhd)q}q(h Uh)}q(h.]qUid4qah-]h+]h,]h1]Urefidhuh!hh]qh=XExecuting webhook tasksqq}q(h XExecuting webhook tasksqh!hubah'houbah'hpubah'hqubeubaubh)q}q(h Uh!hh"h%h'h(h)}q(h+]h,]h-]h.]qhah1]qhauh3K h4hh]q(h6)q}q(h hnh!hh"h%h'h:h)}q(h.]h-]h+]h,]h1]Urefidqhiuh3K h4hh]qh=XBasicsqq}q(h hnh!hubaubh_)q}q(h XlIf you need to call into another language, framework or similar, you can do so by using HTTP callback tasks.qh!hh"h%h'hph)}q(h+]h,]h-]h.]h1]uh3K h4hh]qh=XlIf you need to call into another language, framework or similar, you can do so by using HTTP callback tasks.qq}q(h hh!hubaubh_)q}q(h X{The HTTP callback tasks use GET/POST arguments and a simple JSON response to return results. The scheme to call a task is::h!hh"h%h'hph)}q(h+]h,]h-]h.]h1]uh3Kh4hh]qh=XzThe HTTP callback tasks use GET/POST arguments and a simple JSON response to return results. The scheme to call a task is:q…q}q(h XzThe HTTP callback tasks use GET/POST arguments and a simple JSON response to return results. The scheme to call a task is:h!hubaubcdocutils.nodes literal_block q)q}q(h X3GET http://example.com/mytask/?arg1=a&arg2=b&arg3=ch!hh"h%h'U literal_blockqh)}q(U xml:spaceqUpreserveqh.]h-]h+]h,]h1]uh3Kh4hh]qh=X3GET http://example.com/mytask/?arg1=a&arg2=b&arg3=cqͅq}q(h Uh!hubaubh_)q}q(h Xor using POST::qh!hh"h%h'hph)}q(h+]h,]h-]h.]h1]uh3Kh4hh]qh=Xor using POST:qՅq}q(h Xor using POST:h!hubaubh)q}q(h XPOST http://example.com/mytaskh!hh"h%h'hh)}q(hhh.]h-]h+]h,]h1]uh3Kh4hh]qh=XPOST http://example.com/mytaskq܅q}q(h Uh!hubaubh_)q}q(h Xj**Note:** POST data has to be form encoded. Whether to use GET or POST is up to you and your requirements.h!hh"h%h'hph)}q(h+]h,]h-]h.]h1]uh3Kh4hh]q(cdocutils.nodes strong q)q}q(h X **Note:**h)}q(h+]h,]h-]h.]h1]uh!hh]qh=XNote:q腁q}q(h Uh!hubah'Ustrongqubh=Xa POST data has to be form encoded. Whether to use GET or POST is up to you and your requirements.q셁q}q(h Xa POST data has to be form encoded. Whether to use GET or POST is up to you and your requirements.h!hubeubh_)q}q(h XdThe web page should then return a response in the following format if the execution was successful::h!hh"h%h'hph)}q(h+]h,]h-]h.]h1]uh3Kh4hh]qh=XcThe web page should then return a response in the following format if the execution was successful:qq}q(h XcThe web page should then return a response in the following format if the execution was successful:h!hubaubh)q}q(h X%{"status": "success", "retval": ....}h!hh"h%h'hh)}q(hhh.]h-]h+]h,]h1]uh3Kh4hh]qh=X%{"status": "success", "retval": ....}qq}q(h Uh!hubaubh_)q}q(h Xor if there was an error::qh!hh"h%h'hph)}r(h+]h,]h-]h.]h1]uh3K!h4hh]rh=Xor if there was an error:rr}r(h Xor if there was an error:h!hubaubh)r}r(h X:{"status": "failure": "reason": "Invalid moon alignment."}h!hh"h%h'hh)}r(hhh.]h-]h+]h,]h1]uh3K#h4hh]rh=X:{"status": "failure": "reason": "Invalid moon alignment."}r r }r (h Uh!jubaubeubh)r }r (h Uh!hh"h%h'h(h)}r(h+]h,]h-]h.]rhah1]rh auh3K&h4hh]r(h6)r}r(h hh!j h"h%h'h:h)}r(h.]h-]h+]h,]h1]hh~uh3K&h4hh]rh=XDjango webhook examplerr}r(h hh!jubaubh_)r}r(h X?With this information you could define a simple task in Django:rh!j h"h%h'hph)}r(h+]h,]h-]h.]h1]uh3K(h4hh]rh=X?With this information you could define a simple task in Django:rr}r (h jh!jubaubh)r!}r"(h X+from django.http import HttpResponse from anyjson import serialize def multiply(request): x = int(request.GET["x"]) y = int(request.GET["y"]) result = x * y response = {"status": "success", "retval": result} return HttpResponse(serialize(response), mimetype="application/json")h!j h"h%h'hh)}r#(Ulinenosr$Ulanguager%Xpythonhhh.]h-]h+]h,]h1]uh3K*h4hh]r&h=X+from django.http import HttpResponse from anyjson import serialize def multiply(request): x = int(request.GET["x"]) y = int(request.GET["y"]) result = x * y response = {"status": "success", "retval": result} return HttpResponse(serialize(response), mimetype="application/json")r'r(}r)(h Uh!j!ubaubeubh)r*}r+(h Uh!hh"h%h'h(h)}r,(h+]h,]h-]h.]r-hah1]r.h auh3K8h4hh]r/(h6)r0}r1(h hh!j*h"h%h'h:h)}r2(h.]h-]h+]h,]h1]hhuh3K8h4hh]r3h=XRuby on Rails webhook exampler4r5}r6(h hh!j0ubaubh_)r7}r8(h Xor in Ruby on Rails:r9h!j*h"h%h'hph)}r:(h+]h,]h-]h.]h1]uh3K:h4hh]r;h=Xor in Ruby on Rails:r<r=}r>(h j9h!j7ubaubh)r?}r@(h Xdef multiply @x = params[:x].to_i @y = params[:y].to_i @status = {:status => "success", :retval => @x * @y} render :json => @status endh!j*h"h%h'hh)}rA(j$j%Xrubyhhh.]h-]h+]h,]h1]uh3K "success", :retval => @x * @y} render :json => @status endrCrD}rE(h Uh!j?ubaubh_)rF}rG(h XgYou can easily port this scheme to any language/framework; new examples and libraries are very welcome.rHh!j*h"h%h'hph)}rI(h+]h,]h-]h.]h1]uh3KGh4hh]rJh=XgYou can easily port this scheme to any language/framework; new examples and libraries are very welcome.rKrL}rM(h jHh!jFubaubeubh)rN}rO(h Uh!hh"h%h'h(h)}rP(h+]h,]h-]h.]rQhah1]rRhauh3KKh4hh]rS(h6)rT}rU(h hh!jNh"h%h'h:h)}rV(h.]h-]h+]h,]h1]hhuh3KKh4hh]rWh=XExecuting webhook tasksrXrY}rZ(h hh!jTubaubh_)r[}r\(h X3To execute the task you use the :class:`URL` class:r]h!jNh"h%h'hph)}r^(h+]h,]h-]h.]h1]uh3KMh4hh]r_(h=X To execute the task you use the r`ra}rb(h X To execute the task you use the h!j[ubcsphinx.addnodes pending_xref rc)rd}re(h X :class:`URL`rfh!j[h"h%h'U pending_xrefrgh)}rh(UreftypeXclassUrefwarnriU reftargetrjXURLU refdomainXpyrkh.]h-]U refexplicith+]h,]h1]UrefdocrlXuserguide/remote-tasksrmUpy:classrnNU py:moduleroXcelery.task.httprpuh3KMh]rqcdocutils.nodes literal rr)rs}rt(h jfh)}ru(h+]h,]rv(UxrefrwjkXpy-classrxeh-]h.]h1]uh!jdh]ryh=XURLrzr{}r|(h Uh!jsubah'Uliteralr}ubaubh=X class:r~r}r(h X class:h!j[ubeubcdocutils.nodes doctest_block r)r}r(h Xg>>> from celery.task.http import URL >>> res = URL("http://example.com/multiply").get_async(x=10, y=10)h!jNh"Nh'U doctest_blockrh)}r(hhh.]h-]h+]h,]h1]uh3Nh4hh]rh=Xg>>> from celery.task.http import URL >>> res = URL("http://example.com/multiply").get_async(x=10, y=10)rr}r(h Uh!jubaubh_)r}r(h Xo:class:`URL` is a shortcut to the :class:`HttpDispatchTask`. You can subclass this to extend the functionality.h!jNh"h%h'hph)}r(h+]h,]h-]h.]h1]uh3KSh4hh]r(jc)r}r(h X :class:`URL`rh!jh"h%h'jgh)}r(UreftypeXclassjijjXURLU refdomainXpyrh.]h-]U refexplicith+]h,]h1]jljmjnNjojpuh3KSh]rjr)r}r(h jh)}r(h+]h,]r(jwjXpy-classreh-]h.]h1]uh!jh]rh=XURLrr}r(h Uh!jubah'j}ubaubh=X is a shortcut to the rr}r(h X is a shortcut to the h!jubjc)r}r(h X:class:`HttpDispatchTask`rh!jh"h%h'jgh)}r(UreftypeXclassjijjXHttpDispatchTaskU refdomainXpyrh.]h-]U refexplicith+]h,]h1]jljmjnNjojpuh3KSh]rjr)r}r(h jh)}r(h+]h,]r(jwjXpy-classreh-]h.]h1]uh!jh]rh=XHttpDispatchTaskrr}r(h Uh!jubah'j}ubaubh=X4. You can subclass this to extend the functionality.rr}r(h X4. You can subclass this to extend the functionality.h!jubeubj)r}r(h X>>> from celery.task.http import HttpDispatchTask >>> res = HttpDispatchTask.delay(url="http://example.com/multiply", method="GET", x=10, y=10) >>> res.get() 100h!jNh"Nh'jh)}r(hhh.]h-]h+]h,]h1]uh3Nh4hh]rh=X>>> from celery.task.http import HttpDispatchTask >>> res = HttpDispatchTask.delay(url="http://example.com/multiply", method="GET", x=10, y=10) >>> res.get() 100rr}r(h Uh!jubaubh_)r}r(h XbThe output of celeryd (or the logfile if you've enabled it) should show the task being processed::rh!jNh"h%h'hph)}r(h+]h,]h-]h.]h1]uh3K[h4hh]rh=XaThe output of celeryd (or the logfile if you've enabled it) should show the task being processed:rr}r(h XaThe output of celeryd (or the logfile if you've enabled it) should show the task being processed:h!jubaubh)r}r(h Xw[INFO/MainProcess] Task celery.task.http.HttpDispatchTask [f2cc8efc-2a14-40cd-85ad-f1c77c94beeb] processed: 100h!jNh"h%h'hh)}r(hhh.]h-]h+]h,]h1]uh3K]h4hh]rh=Xw[INFO/MainProcess] Task celery.task.http.HttpDispatchTask [f2cc8efc-2a14-40cd-85ad-f1c77c94beeb] processed: 100rr}r(h Uh!jubaubh_)r}r(h XSince applying tasks can be done via HTTP using the ``celery.views.apply`` view, executing tasks from other languages is easy. For an example service exposing tasks via HTTP you should have a look at ``examples/celery_http_gateway``.h!jNh"h%h'hph)}r(h+]h,]h-]h.]h1]uh3K`h4hh]r(h=X4Since applying tasks can be done via HTTP using the rr}r(h X4Since applying tasks can be done via HTTP using the h!jubjr)r}r(h X``celery.views.apply``h)}r(h+]h,]h-]h.]h1]uh!jh]rh=Xcelery.views.applyrr}r(h Uh!jubah'j}ubh=X~ view, executing tasks from other languages is easy. For an example service exposing tasks via HTTP you should have a look at rr}r(h X~ view, executing tasks from other languages is easy. For an example service exposing tasks via HTTP you should have a look at h!jubjr)r}r(h X ``examples/celery_http_gateway``h)}r(h+]h,]h-]h.]h1]uh!jh]rh=Xexamples/celery_http_gatewayrr}r(h Uh!jubah'j}ubh=X.r}r(h X.h!jubeubeubeubah UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh4hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr Nh:NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlr NUexpose_internalsr!NUsectsubtitle_xformr"U source_linkr#NUrfc_referencesr$NUoutput_encodingr%Uutf-8r&U source_urlr'NUinput_encodingr(U utf-8-sigr)U_disable_configr*NU id_prefixr+UU tab_widthr,KUerror_encodingr-UUTF-8r.U_sourcer/UT/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/remote-tasks.rstr0Ugettext_compactr1U generatorr2NUdump_internalsr3NU smart_quotesr4U pep_base_urlr5Uhttp://www.python.org/dev/peps/r6Usyntax_highlightr7Ulongr8Uinput_encoding_error_handlerr9jUauto_id_prefixr:Uidr;Udoctitle_xformr<Ustrip_elements_with_classesr=NU _config_filesr>]Ufile_insertion_enabledr?U raw_enabledr@KU dump_settingsrANubUsymbol_footnote_startrBKUidsrC}rD(hhhhhj h~hzhhhj*hiheh0cdocutils.nodes target rE)rF}rG(h Uh!hh"h%h'UtargetrHh)}rI(h+]h.]rJh0ah-]Uismodh,]h1]uh3Kh4hh]ubhjNhhhhJuUsubstitution_namesrK}rLh'h4h)}rM(h+]h.]h-]Usourceh%h,]h1]uU footnotesrN]rOUrefidsrP}rQub.PKHDD{\\7celery-2.0-archived/.doctrees/userguide/routing.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xhands-on with the apiqNX rabbitmq faqqX&changing the name of the default queueqNXNexchange.declare(exchange_name, type, passive, durable, auto_delete, internal)q NXautomatic routingq NUcontentsq NXexchange typesq NXstandard exchange typesq X exchange.delete(name, if_unused)qNXlast-value-cache plug-inqX#exchanges, queues and routing keys.qNX amqp primerqXrabbits and warrensqXrelated api commandsqNXtopic exchangesqNXroutersqXmanual routingqNXdefining queuesqNXspecifying task destinationqNX'queue.delete(name, if_unused, if_empty)qNX routing tasksqNXCqueue.declare(queue_name, passive, durable, exclusive, auto_delete)qNXhow the queues are definedqNX producers, consumers and brokersqNXbasicsqNX mailinglistqX2queue.bind(queue_name, exchange_name, routing_key)q NXmessagesq!NXdirect exchangesq"NXflexible routing modelq#uUsubstitution_defsq$}q%Uparse_messagesq&]q'(cdocutils.nodes system_message q()q)}q*(U rawsourceq+UUparentq,cdocutils.nodes section q-)q.}q/(h+UU referencedq0Kh,h-)q1}q2(h+Uh0Kh,hUsourceq3cdocutils.nodes reprunicode q4XO/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/routing.rstq5q6}q7bUtagnameq8Usectionq9U attributesq:}q;(Udupnamesq<]q=X routing tasksq>aUclassesq?]Ubackrefsq@]UidsqA]qBU routing-tasksqCaUnamesqD]uUlineqEKUdocumentqFhUchildrenqG]qH(cdocutils.nodes title qI)qJ}qK(h+X Routing TasksqLh,h1h3h6h8UtitleqMh:}qN(h<]h?]h@]hA]hD]uhEKhFhhG]qOcdocutils.nodes Text qPX Routing TasksqQqR}qS(h+hLh,hJubaubcdocutils.nodes paragraph qT)qU}qV(h+X**NOTE** This document refers to functionality only available in brokers using AMQP. Other brokers may implement some functionality, see their respective documenation for more information, or contact the `mailinglist`_.h,h1h3h6h8U paragraphqWh:}qX(h<]h?]h@]hA]hD]uhEKhFhhG]qY(cdocutils.nodes strong qZ)q[}q\(h+X**NOTE**h:}q](h<]h?]h@]hA]hD]uh,hUhG]q^hPXNOTEq_q`}qa(h+Uh,h[ubah8UstrongqbubhPX This document refers to functionality only available in brokers using AMQP. Other brokers may implement some functionality, see their respective documenation for more information, or contact the qcqd}qe(h+X This document refers to functionality only available in brokers using AMQP. Other brokers may implement some functionality, see their respective documenation for more information, or contact the h,hUubcdocutils.nodes reference qf)qg}qh(h+X`mailinglist`_UresolvedqiKh,hUh8U referenceqjh:}qk(UnameX mailinglistqlUrefuriqmX+http://groups.google.com/group/celery-usersqnhA]h@]h<]h?]hD]uhG]qohPX mailinglistqpqq}qr(h+Uh,hgubaubhPX.qs}qt(h+X.h,hUubeubcdocutils.nodes target qu)qv}qw(h+X>.. _`mailinglist`: http://groups.google.com/group/celery-usersh0Kh,h1h3h6h8Utargetqxh:}qy(hmhnhA]qzU mailinglistq{ah@]h<]h?]hD]q|hauhEK hFhhG]ubcdocutils.nodes topic q})q~}q(h+Uh,h1h3h6h8Utopicqh:}q(h<]h?]q(UcontentsqUlocalqeh@]hA]qUcontentsqahD]qh auhEK hFhhG]qcdocutils.nodes bullet_list q)q}q(h+Uh,h~h3Nh8U bullet_listqh:}q(h<]h?]h@]hA]hD]uhENhFhhG]q(cdocutils.nodes list_item q)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]q(hT)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhf)q}q(h+Uh:}q(hA]qUid4qah@]h<]h?]hD]UrefidUbasicsquh,hhG]qhPXBasicsqq}q(h+XBasicsqh,hubah8hjubah8hWubh)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]q(h)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]q(hT)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhf)q}q(h+Uh:}q(hA]qUid5qah@]h<]h?]hD]UrefidUautomatic-routingquh,hhG]qhPXAutomatic routingqq}q(h+XAutomatic routingqh,hubah8hjubah8hWubh)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]q(h)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhT)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhf)q}q(h+Uh:}q(hA]qUid6qah@]h<]h?]hD]UrefidU&changing-the-name-of-the-default-queuequh,hhG]qhPX&Changing the name of the default queueqͅq}q(h+X&Changing the name of the default queueqh,hubah8hjubah8hWubah8U list_itemqubh)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhT)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhf)q}q(h+Uh:}q(hA]qUid7qah@]h<]h?]hD]UrefidUhow-the-queues-are-definedquh,hhG]qhPXHow the queues are definedqᅁq}q(h+XHow the queues are definedqh,hubah8hjubah8hWubah8hubeh8hubeh8hubh)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhT)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhf)q}q(h+Uh:}q(hA]qUid8qah@]h<]h?]hD]UrefidUmanual-routingquh,hhG]qhPXManual routingqq}q(h+XManual routingqh,hubah8hjubah8hWubah8hubeh8hubeh8hubh)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]q(hT)q}q(h+Uh:}q(h<]h?]h@]hA]hD]uh,hhG]qhf)r}r(h+Uh:}r(hA]rUid9rah@]h<]h?]hD]UrefidU amqp-primerruh,hhG]rhPX AMQP Primerrr}r (h+X AMQP Primerr h,jubah8hjubah8hWubh)r }r (h+Uh:}r (h<]h?]h@]hA]hD]uh,hhG]r(h)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,j hG]rhT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid10rah@]h<]h?]hD]UrefidUmessagesruh,jhG]rhPXMessagesrr}r (h+XMessagesr!h,jubah8hjubah8hWubah8hubh)r"}r#(h+Uh:}r$(h<]h?]h@]hA]hD]uh,j hG]r%hT)r&}r'(h+Uh:}r((h<]h?]h@]hA]hD]uh,j"hG]r)hf)r*}r+(h+Uh:}r,(hA]r-Uid11r.ah@]h<]h?]hD]UrefidUproducers-consumers-and-brokersr/uh,j&hG]r0hPX Producers, consumers and brokersr1r2}r3(h+X Producers, consumers and brokersr4h,j*ubah8hjubah8hWubah8hubh)r5}r6(h+Uh:}r7(h<]h?]h@]hA]hD]uh,j hG]r8hT)r9}r:(h+Uh:}r;(h<]h?]h@]hA]hD]uh,j5hG]r<hf)r=}r>(h+Uh:}r?(hA]r@Uid12rAah@]h<]h?]hD]UrefidU!exchanges-queues-and-routing-keysrBuh,j9hG]rChPX#Exchanges, queues and routing keys.rDrE}rF(h+X#Exchanges, queues and routing keys.rGh,j=ubah8hjubah8hWubah8hubh)rH}rI(h+Uh:}rJ(h<]h?]h@]hA]hD]uh,j hG]rK(hT)rL}rM(h+Uh:}rN(h<]h?]h@]hA]hD]uh,jHhG]rOhf)rP}rQ(h+Uh:}rR(hA]rSUid13rTah@]h<]h?]hD]UrefidUexchange-typesrUuh,jLhG]rVhPXExchange typesrWrX}rY(h+XExchange typesrZh,jPubah8hjubah8hWubh)r[}r\(h+Uh:}r](h<]h?]h@]hA]hD]uh,jHhG]r^(h)r_}r`(h+Uh:}ra(h<]h?]h@]hA]hD]uh,j[hG]rbhT)rc}rd(h+Uh:}re(h<]h?]h@]hA]hD]uh,j_hG]rfhf)rg}rh(h+Uh:}ri(hA]rjUid14rkah@]h<]h?]hD]UrefidUdirect-exchangesrluh,jchG]rmhPXDirect exchangesrnro}rp(h+XDirect exchangesrqh,jgubah8hjubah8hWubah8hubh)rr}rs(h+Uh:}rt(h<]h?]h@]hA]hD]uh,j[hG]ruhT)rv}rw(h+Uh:}rx(h<]h?]h@]hA]hD]uh,jrhG]ryhf)rz}r{(h+Uh:}r|(hA]r}Uid15r~ah@]h<]h?]hD]UrefidUtopic-exchangesruh,jvhG]rhPXTopic exchangesrr}r(h+XTopic exchangesrh,jzubah8hjubah8hWubah8hubeh8hubeh8hubh)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,j hG]r(hT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid16rah@]h<]h?]hD]UrefidUrelated-api-commandsruh,jhG]rhPXRelated API commandsrr}r(h+XRelated API commandsrh,jubah8hjubah8hWubh)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]r(h)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid17rah@]h<]h?]hD]UrefidUHexchange-declare-exchange-name-type-passive-durable-auto-delete-internalruh,jhG]rhPXNexchange.declare(exchange_name, type, passive, durable, auto_delete, internal)rr}r(h+XNexchange.declare(exchange_name, type, passive, durable, auto_delete, internal)rh,jubah8hjubah8hWubah8hubh)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid18rah@]h<]h?]hD]UrefidU>queue-declare-queue-name-passive-durable-exclusive-auto-deleteruh,jhG]rhPXCqueue.declare(queue_name, passive, durable, exclusive, auto_delete)rr}r(h+XCqueue.declare(queue_name, passive, durable, exclusive, auto_delete)rh,jubah8hjubah8hWubah8hubh)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid19rah@]h<]h?]hD]UrefidU/queue-bind-queue-name-exchange-name-routing-keyruh,jhG]rhPX2queue.bind(queue_name, exchange_name, routing_key)rr}r(h+X2queue.bind(queue_name, exchange_name, routing_key)rh,jubah8hjubah8hWubah8hubh)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid20rah@]h<]h?]hD]UrefidU$queue-delete-name-if-unused-if-emptyruh,jhG]rhPX'queue.delete(name, if_unused, if_empty)rr}r(h+X'queue.delete(name, if_unused, if_empty)rh,jubah8hjubah8hWubah8hubh)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid21rah@]h<]h?]hD]UrefidUexchange-delete-name-if-unusedruh,jhG]rhPX exchange.delete(name, if_unused)rr}r(h+X exchange.delete(name, if_unused)rh,jubah8hjubah8hWubah8hubeh8hubeh8hubh)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,j hG]rhT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid22rah@]h<]h?]hD]UrefidUhands-on-with-the-apiruh,jhG]r hPXHands-on with the APIr r }r (h+XHands-on with the APIr h,jubah8hjubah8hWubah8hubeh8hubeh8hubh)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,hhG]r(hT)r}r(h+Uh:}r(h<]h?]h@]hA]hD]uh,jhG]rhf)r}r(h+Uh:}r(hA]rUid23rah@]h<]h?]hD]UrefidUid2ruh,jhG]rhPX Routing Tasksrr}r(h+X Routing Tasksr h,jubah8hjubah8hWubh)r!}r"(h+Uh:}r#(h<]h?]h@]hA]hD]uh,jhG]r$(h)r%}r&(h+Uh:}r'(h<]h?]h@]hA]hD]uh,j!hG]r(hT)r)}r*(h+Uh:}r+(h<]h?]h@]hA]hD]uh,j%hG]r,hf)r-}r.(h+Uh:}r/(hA]r0Uid24r1ah@]h<]h?]hD]UrefidUdefining-queuesr2uh,j)hG]r3hPXDefining queuesr4r5}r6(h+XDefining queuesr7h,j-ubah8hjubah8hWubah8hubh)r8}r9(h+Uh:}r:(h<]h?]h@]hA]hD]uh,j!hG]r;hT)r<}r=(h+Uh:}r>(h<]h?]h@]hA]hD]uh,j8hG]r?hf)r@}rA(h+Uh:}rB(hA]rCUid25rDah@]h<]h?]hD]UrefidUspecifying-task-destinationrEuh,j<hG]rFhPXSpecifying task destinationrGrH}rI(h+XSpecifying task destinationrJh,j@ubah8hjubah8hWubah8hubh)rK}rL(h+Uh:}rM(h<]h?]h@]hA]hD]uh,j!hG]rNhT)rO}rP(h+Uh:}rQ(h<]h?]h@]hA]hD]uh,jKhG]rRhf)rS}rT(h+Uh:}rU(hA]rVUid26rWah@]h<]h?]hD]UrefidUroutersrXuh,jOhG]rYhPXRoutersrZr[}r\(h+XRoutersr]h,jSubah8hjubah8hWubah8hubeh8hubeh8hubeubaubh-)r^}r_(h+Uh,h1h3h6h8h9h:}r`(h<]h?]h@]hA]rahahD]rbhauhEKhFhhG]rc(hI)rd}re(h+hh,j^h3h6h8hMh:}rf(hA]h@]h<]h?]hD]UrefidrghuhEKhFhhG]rhhPXBasicsrirj}rk(h+hh,jdubaubh-)rl}rm(h+Uh,j^h3h6h8h9h:}rn(h<]h?]h@]hA]rohahD]rph auhEKhFhhG]rq(hI)rr}rs(h+hh,jlh3h6h8hMh:}rt(hA]h@]h<]h?]hD]jghuhEKhFhhG]ruhPXAutomatic routingrvrw}rx(h+hh,jrubaubhT)ry}rz(h+XfThe simplest way to do routing is to use the ``CELERY_CREATE_MISSING_QUEUES`` setting (on by default).h,jlh3h6h8hWh:}r{(h<]h?]h@]hA]hD]uhEKhFhhG]r|(hPX-The simplest way to do routing is to use the r}r~}r(h+X-The simplest way to do routing is to use the h,jyubcdocutils.nodes literal r)r}r(h+X ``CELERY_CREATE_MISSING_QUEUES``h:}r(h<]h?]h@]hA]hD]uh,jyhG]rhPXCELERY_CREATE_MISSING_QUEUESrr}r(h+Uh,jubah8UliteralrubhPX setting (on by default).rr}r(h+X setting (on by default).h,jyubeubhT)r}r(h+XWith this setting on, a named queue that is not already defined in ``CELERY_QUEUES`` will be created automatically. This makes it easy to perform simple routing tasks.h,jlh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]r(hPXCWith this setting on, a named queue that is not already defined in rr}r(h+XCWith this setting on, a named queue that is not already defined in h,jubj)r}r(h+X``CELERY_QUEUES``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX CELERY_QUEUESrr}r(h+Uh,jubah8jubhPXS will be created automatically. This makes it easy to perform simple routing tasks.rr}r(h+XS will be created automatically. This makes it easy to perform simple routing tasks.h,jubeubhT)r}r(h+XSay you have two servers, ``x``, and ``y`` that handles regular tasks, and one server ``z``, that only handles feed related tasks. You can use this configuration::h,jlh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]r(hPXSay you have two servers, rr}r(h+XSay you have two servers, h,jubj)r}r(h+X``x``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXxr}r(h+Uh,jubah8jubhPX, and rr}r(h+X, and h,jubj)r}r(h+X``y``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXyr}r(h+Uh,jubah8jubhPX, that handles regular tasks, and one server rr}r(h+X, that handles regular tasks, and one server h,jubj)r}r(h+X``z``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXzr}r(h+Uh,jubah8jubhPXG, that only handles feed related tasks. You can use this configuration:rr}r(h+XG, that only handles feed related tasks. You can use this configuration:h,jubeubcdocutils.nodes literal_block r)r}r(h+X>CELERY_ROUTES = {"feed.tasks.import_feed": {"queue": "feeds"}}h,jlh3h6h8U literal_blockrh:}r(U xml:spacerUpreserverhA]h@]h<]h?]hD]uhEKhFhhG]rhPX>CELERY_ROUTES = {"feed.tasks.import_feed": {"queue": "feeds"}}rr}r(h+Uh,jubaubhT)r}r(h+XWith this route enabled import feed tasks will be routed to the ``"feeds"`` queue, while all other tasks will be routed to the default queue (named ``"celery"`` for historic reasons).h,jlh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEK!hFhhG]r(hPX@With this route enabled import feed tasks will be routed to the rr}r(h+X@With this route enabled import feed tasks will be routed to the h,jubj)r}r(h+X ``"feeds"``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX"feeds"rr}r(h+Uh,jubah8jubhPXI queue, while all other tasks will be routed to the default queue (named rr}r(h+XI queue, while all other tasks will be routed to the default queue (named h,jubj)r}r(h+X ``"celery"``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX"celery"rr}r(h+Uh,jubah8jubhPX for historic reasons).rr}r(h+X for historic reasons).h,jubeubhT)r}r(h+XJNow you can start server ``z`` to only process the feeds queue like this::rh,jlh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEK%hFhhG]r(hPXNow you can start server rr}r(h+XNow you can start server h,jubj)r}r(h+X``z``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXzr}r(h+Uh,jubah8jubhPX+ to only process the feeds queue like this:rr}r(h+X+ to only process the feeds queue like this:h,jubeubj)r}r(h+X(z)$ celeryd -Q feedsh,jlh3h6h8jh:}r(jjhA]h@]h<]h?]hD]uhEK'hFhhG]rhPX(z)$ celeryd -Q feedsrr}r(h+Uh,jubaubhT)r}r(h+XkYou can specify as many queues as you want, so you can make this server process the default queue as well::h,jlh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEK)hFhhG]rhPXjYou can specify as many queues as you want, so you can make this server process the default queue as well:rr}r(h+XjYou can specify as many queues as you want, so you can make this server process the default queue as well:h,jubaubj)r}r(h+X(z)$ celeryd -Q feeds,celeryh,jlh3h6h8jh:}r(jjhA]h@]h<]h?]hD]uhEK,hFhhG]rhPX(z)$ celeryd -Q feeds,celeryrr }r (h+Uh,jubaubh-)r }r (h+Uh,jlh3h6h8h9h:}r (h<]h?]h@]hA]rhahD]rhauhEK/hFhhG]r(hI)r}r(h+hh,j h3h6h8hMh:}r(hA]h@]h<]h?]hD]jghuhEK/hFhhG]rhPX&Changing the name of the default queuerr}r(h+hh,jubaubhT)r}r(h+XRYou can change the name of the default queue by using the following configuration:rh,j h3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEK1hFhhG]rhPXRYou can change the name of the default queue by using the following configuration:rr}r(h+jh,jubaubj)r }r!(h+XCELERY_QUEUES = {"default": {"exchange": "default", "binding_key": "default"}} CELERY_DEFAULT_QUEUE = "default"h,j h3h6h8jh:}r"(Ulinenosr#Ulanguager$XpythonjjhA]h@]h<]h?]hD]uhEK4hFhhG]r%hPXCELERY_QUEUES = {"default": {"exchange": "default", "binding_key": "default"}} CELERY_DEFAULT_QUEUE = "default"r&r'}r((h+Uh,j ubaubeubh-)r)}r*(h+Uh,jlh3h6h8h9h:}r+(h<]h?]h@]hA]r,hahD]r-hauhEK;hFhhG]r.(hI)r/}r0(h+hh,j)h3h6h8hMh:}r1(hA]h@]h<]h?]hD]jghuhEK;hFhhG]r2hPXHow the queues are definedr3r4}r5(h+hh,j/ubaubhT)r6}r7(h+XThe point with this feature is to hide the complex AMQP protocol for users with only basic needs. However — you may still be interested in how these queues are defined.r8h,j)h3h6h8hWh:}r9(h<]h?]h@]hA]hD]uhEK=hFhhG]r:hPXThe point with this feature is to hide the complex AMQP protocol for users with only basic needs. However — you may still be interested in how these queues are defined.r;r<}r=(h+j8h,j6ubaubhT)r>}r?(h+XFA queue named ``"video"`` will be created with the following settings:r@h,j)h3h6h8hWh:}rA(h<]h?]h@]hA]hD]uhEKAhFhhG]rB(hPXA queue named rCrD}rE(h+XA queue named h,j>ubj)rF}rG(h+X ``"video"``h:}rH(h<]h?]h@]hA]hD]uh,j>hG]rIhPX"video"rJrK}rL(h+Uh,jFubah8jubhPX- will be created with the following settings:rMrN}rO(h+X- will be created with the following settings:h,j>ubeubj)rP}rQ(h+XJ{"exchange": "video", "exchange_type": "direct", "routing_key": "video"}h,j)h3h6h8jh:}rR(j#j$XpythonjjhA]h@]h<]h?]hD]uhEKChFhhG]rShPXJ{"exchange": "video", "exchange_type": "direct", "routing_key": "video"}rTrU}rV(h+Uh,jPubaubhT)rW}rX(h+XThe non-AMQP backends like ``ghettoq`` does not support exchanges, so they require the exchange to have the same name as the queue. Using this design ensures it will work for them as well.h,j)h3h6h8hWh:}rY(h<]h?]h@]hA]hD]uhEKIhFhhG]rZ(hPXThe non-AMQP backends like r[r\}r](h+XThe non-AMQP backends like h,jWubj)r^}r_(h+X ``ghettoq``h:}r`(h<]h?]h@]hA]hD]uh,jWhG]rahPXghettoqrbrc}rd(h+Uh,j^ubah8jubhPX does not support exchanges, so they require the exchange to have the same name as the queue. Using this design ensures it will work for them as well.rerf}rg(h+X does not support exchanges, so they require the exchange to have the same name as the queue. Using this design ensures it will work for them as well.h,jWubeubeubeubh-)rh}ri(h+Uh,j^h3h6h8h9h:}rj(h<]h?]h@]hA]rkhahD]rlhauhEKNhFhhG]rm(hI)rn}ro(h+hh,jhh3h6h8hMh:}rp(hA]h@]h<]h?]hD]jghuhEKNhFhhG]rqhPXManual routingrrrs}rt(h+hh,jnubaubhT)ru}rv(h+XSay you have two servers, ``x``, and ``y`` that handles regular tasks, and one server ``z``, that only handles feed related tasks, you can use this configuration:h,jhh3h6h8hWh:}rw(h<]h?]h@]hA]hD]uhEKPhFhhG]rx(hPXSay you have two servers, ryrz}r{(h+XSay you have two servers, h,juubj)r|}r}(h+X``x``h:}r~(h<]h?]h@]hA]hD]uh,juhG]rhPXxr}r(h+Uh,j|ubah8jubhPX, and rr}r(h+X, and h,juubj)r}r(h+X``y``h:}r(h<]h?]h@]hA]hD]uh,juhG]rhPXyr}r(h+Uh,jubah8jubhPX, that handles regular tasks, and one server rr}r(h+X, that handles regular tasks, and one server h,juubj)r}r(h+X``z``h:}r(h<]h?]h@]hA]hD]uh,juhG]rhPXzr}r(h+Uh,jubah8jubhPXG, that only handles feed related tasks, you can use this configuration:rr}r(h+XG, that only handles feed related tasks, you can use this configuration:h,juubeubj)r}r(h+XCELERY_DEFAULT_QUEUE = "default" CELERY_QUEUES = { "default": { "binding_key": "task.#", }, "feed_tasks": { "binding_key": "feed.#", }, } CELERY_DEFAULT_EXCHANGE = "tasks" CELERY_DEFAULT_EXCHANGE_TYPE = "topic" CELERY_DEFAULT_ROUTING_KEY = "task.default"h,jhh3h6h8jh:}r(j#j$XpythonjjhA]h@]h<]h?]hD]uhEKThFhhG]rhPXCELERY_DEFAULT_QUEUE = "default" CELERY_QUEUES = { "default": { "binding_key": "task.#", }, "feed_tasks": { "binding_key": "feed.#", }, } CELERY_DEFAULT_EXCHANGE = "tasks" CELERY_DEFAULT_EXCHANGE_TYPE = "topic" CELERY_DEFAULT_ROUTING_KEY = "task.default"rr}r(h+Uh,jubaubhT)r}r(h+X``CELERY_QUEUES`` is a map of queue names and their exchange/type/binding_key, if you don't set exchange or exchange type, they will be taken from the ``CELERY_DEFAULT_EXCHANGE``/``CELERY_DEFAULT_EXCHANGE_TYPE`` settings.h,jhh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKchFhhG]r(j)r}r(h+X``CELERY_QUEUES``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX CELERY_QUEUESrr}r(h+Uh,jubah8jubhPX is a map of queue names and their exchange/type/binding_key, if you don't set exchange or exchange type, they will be taken from the rr}r(h+X is a map of queue names and their exchange/type/binding_key, if you don't set exchange or exchange type, they will be taken from the h,jubj)r}r(h+X``CELERY_DEFAULT_EXCHANGE``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXCELERY_DEFAULT_EXCHANGErr}r(h+Uh,jubah8jubhPX/r}r(h+X/h,jubj)r}r(h+X ``CELERY_DEFAULT_EXCHANGE_TYPE``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXCELERY_DEFAULT_EXCHANGE_TYPErr}r(h+Uh,jubah8jubhPX settings.rr}r(h+X settings.h,jubeubhT)r}r(h+XcTo route a task to the ``feed_tasks`` queue, you can add an entry in the ``CELERY_ROUTES`` setting:h,jhh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKghFhhG]r(hPXTo route a task to the rr}r(h+XTo route a task to the h,jubj)r}r(h+X``feed_tasks``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX feed_tasksrr}r(h+Uh,jubah8jubhPX$ queue, you can add an entry in the rr}r(h+X$ queue, you can add an entry in the h,jubj)r}r(h+X``CELERY_ROUTES``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX CELERY_ROUTESrr}r(h+Uh,jubah8jubhPX setting:rr}r(h+X setting:h,jubeubj)r}r(h+XCELERY_ROUTES = { "feeds.tasks.import_feed": { "queue": "feed_tasks", "routing_key": "feed.import", }, }h,jhh3h6h8jh:}r(j#j$XpythonjjhA]h@]h<]h?]hD]uhEKjhFhhG]rhPXCELERY_ROUTES = { "feeds.tasks.import_feed": { "queue": "feed_tasks", "routing_key": "feed.import", }, }rr}r(h+Uh,jubaubhT)r}r(h+XYou can also override this using the ``routing_key`` argument to :func:`~celery.execute.apply_async`, or :func:`~celery.execute.send_task`:h,jhh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKthFhhG]r(hPX%You can also override this using the rr}r(h+X%You can also override this using the h,jubj)r}r(h+X``routing_key``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX routing_keyrr}r(h+Uh,jubah8jubhPX argument to rr}r(h+X argument to h,jubcsphinx.addnodes pending_xref r)r}r(h+X#:func:`~celery.execute.apply_async`rh,jh3h6h8U pending_xrefrh:}r(UreftypeXfuncUrefwarnrU reftargetrXcelery.execute.apply_asyncU refdomainXpyrhA]h@]U refexplicith<]h?]hD]UrefdocrXuserguide/routingrUpy:classrNU py:modulerNuhEKthG]rj)r}r(h+jh:}r(h<]h?]r(UxrefrjXpy-funcreh@]hA]hD]uh,jhG]rhPX apply_async()rr}r (h+Uh,jubah8jubaubhPX, or r r }r (h+X, or h,jubj)r }r(h+X!:func:`~celery.execute.send_task`rh,jh3h6h8jh:}r(UreftypeXfuncjjXcelery.execute.send_taskU refdomainXpyrhA]h@]U refexplicith<]h?]hD]jjjNjNuhEKthG]rj)r}r(h+jh:}r(h<]h?]r(jjXpy-funcreh@]hA]hD]uh,j hG]rhPX send_task()rr}r(h+Uh,jubah8jubaubhPX:r}r(h+X:h,jubeubcdocutils.nodes doctest_block r)r}r (h+X>>> from feeds.tasks import import_feed >>> import_feed.apply_async(args=["http://cnn.com/rss"], ... queue="feed_tasks", ... routing_key="feed.import")h,jhh3Nh8U doctest_blockr!h:}r"(jjhA]h@]h<]h?]hD]uhENhFhhG]r#hPX>>> from feeds.tasks import import_feed >>> import_feed.apply_async(args=["http://cnn.com/rss"], ... queue="feed_tasks", ... routing_key="feed.import")r$r%}r&(h+Uh,jubaubhT)r'}r((h+XfTo make server ``z`` consume from the feed queue exclusively you can start it with the ``-Q`` option::h,jhh3h6h8hWh:}r)(h<]h?]h@]hA]hD]uhEK}hFhhG]r*(hPXTo make server r+r,}r-(h+XTo make server h,j'ubj)r.}r/(h+X``z``h:}r0(h<]h?]h@]hA]hD]uh,j'hG]r1hPXzr2}r3(h+Uh,j.ubah8jubhPXC consume from the feed queue exclusively you can start it with the r4r5}r6(h+XC consume from the feed queue exclusively you can start it with the h,j'ubj)r7}r8(h+X``-Q``h:}r9(h<]h?]h@]hA]hD]uh,j'hG]r:hPX-Qr;r<}r=(h+Uh,j7ubah8jubhPX option:r>r?}r@(h+X option:h,j'ubeubj)rA}rB(h+X3(z)$ celeryd -Q feed_tasks --hostname=z.example.comh,jhh3h6h8jh:}rC(jjhA]h@]h<]h?]hD]uhEKhFhhG]rDhPX3(z)$ celeryd -Q feed_tasks --hostname=z.example.comrErF}rG(h+Uh,jAubaubhT)rH}rI(h+XNServers ``x`` and ``y`` must be configured to consume from the default queue::rJh,jhh3h6h8hWh:}rK(h<]h?]h@]hA]hD]uhEKhFhhG]rL(hPXServers rMrN}rO(h+XServers h,jHubj)rP}rQ(h+X``x``h:}rR(h<]h?]h@]hA]hD]uh,jHhG]rShPXxrT}rU(h+Uh,jPubah8jubhPX and rVrW}rX(h+X and h,jHubj)rY}rZ(h+X``y``h:}r[(h<]h?]h@]hA]hD]uh,jHhG]r\hPXyr]}r^(h+Uh,jYubah8jubhPX6 must be configured to consume from the default queue:r_r`}ra(h+X6 must be configured to consume from the default queue:h,jHubeubj)rb}rc(h+Xa(x)$ celeryd -Q default --hostname=x.example.com (y)$ celeryd -Q default --hostname=y.example.comh,jhh3h6h8jh:}rd(jjhA]h@]h<]h?]hD]uhEKhFhhG]rehPXa(x)$ celeryd -Q default --hostname=x.example.com (y)$ celeryd -Q default --hostname=y.example.comrfrg}rh(h+Uh,jbubaubhT)ri}rj(h+XIf you want, you can even have your feed processing worker handle regular tasks as well, maybe in times when there's a lot of work to do::h,jhh3h6h8hWh:}rk(h<]h?]h@]hA]hD]uhEKhFhhG]rlhPXIf you want, you can even have your feed processing worker handle regular tasks as well, maybe in times when there's a lot of work to do:rmrn}ro(h+XIf you want, you can even have your feed processing worker handle regular tasks as well, maybe in times when there's a lot of work to do:h,jiubaubj)rp}rq(h+X;(z)$ celeryd -Q feed_tasks,default --hostname=z.example.comh,jhh3h6h8jh:}rr(jjhA]h@]h<]h?]hD]uhEKhFhhG]rshPX;(z)$ celeryd -Q feed_tasks,default --hostname=z.example.comrtru}rv(h+Uh,jpubaubhT)rw}rx(h+XtIf you have another queue but on another exchange you want to add, just specify a custom exchange and exchange type:ryh,jhh3h6h8hWh:}rz(h<]h?]h@]hA]hD]uhEKhFhhG]r{hPXtIf you have another queue but on another exchange you want to add, just specify a custom exchange and exchange type:r|r}}r~(h+jyh,jwubaubj)r}r(h+XHCELERY_QUEUES = { "feed_tasks": { "binding_key": "feed.#", }, "regular_tasks": { "binding_key": "task.#", }, "image_tasks": { "binding_key": "image.compress", "exchange": "mediatasks", "exchange_type": "direct", }, }h,jhh3h6h8jh:}r(j#j$XpythonjjhA]h@]h<]h?]hD]uhEKhFhhG]rhPXHCELERY_QUEUES = { "feed_tasks": { "binding_key": "feed.#", }, "regular_tasks": { "binding_key": "task.#", }, "image_tasks": { "binding_key": "image.compress", "exchange": "mediatasks", "exchange_type": "direct", }, }rr}r(h+Uh,jubaubhT)r}r(h+XJIf you're confused about these terms, you should read up on AMQP concepts.rh,jhh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]rhPXJIf you're confused about these terms, you should read up on AMQP concepts.rr}r(h+jh,jubaubhT)r}r(h+X7In addition to the :ref:`AMQP Primer` below, there's `Rabbits and Warrens`_, an excellent blog post describing queues and exchanges. There's also AMQP in 10 minutes*: `Flexible Routing Model`_, and `Standard Exchange Types`_. For users of RabbitMQ the `RabbitMQ FAQ`_ could be useful as a source of information.h,jhh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]r(hPXIn addition to the rr}r(h+XIn addition to the h,jubj)r}r(h+X:ref:`AMQP Primer`rh,jh3h6h8jh:}r(UreftypeXrefjjX amqp primerU refdomainXstdrhA]h@]U refexplicith<]h?]hD]jjuhEKhG]rcdocutils.nodes emphasis r)r}r(h+jh:}r(h<]h?]r(jjXstd-refreh@]hA]hD]uh,jhG]rhPX AMQP Primerrr}r(h+Uh,jubah8UemphasisrubaubhPX below, there's rr}r(h+X below, there's h,jubhf)r}r(h+X`Rabbits and Warrens`_hiKh,jh8hjh:}r(UnameXRabbits and WarrenshmX:http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/rhA]h@]h<]h?]hD]uhG]rhPXRabbits and Warrensrr}r(h+Uh,jubaubhPX\, an excellent blog post describing queues and exchanges. There's also AMQP in 10 minutes*: rr}r(h+X\, an excellent blog post describing queues and exchanges. There's also AMQP in 10 minutes*: h,jubhf)r}r(h+X`Flexible Routing Model`_hiKh,jh8hjh:}r(UnameXFlexible Routing ModelhmXhttp://bit.ly/95XFO1rhA]h@]h<]h?]hD]uhG]rhPXFlexible Routing Modelrr}r(h+Uh,jubaubhPX, and rr}r(h+X, and h,jubhf)r}r(h+X`Standard Exchange Types`_hiKh,jh8hjh:}r(UnameXStandard Exchange TypeshmXhttp://bit.ly/EEWcarhA]h@]h<]h?]hD]uhG]rhPXStandard Exchange Typesrr}r(h+Uh,jubaubhPX. For users of RabbitMQ the rr}r(h+X. For users of RabbitMQ the h,jubhf)r}r(h+X`RabbitMQ FAQ`_hiKh,jh8hjh:}r(UnameX RabbitMQ FAQhmX http://www.rabbitmq.com/faq.htmlrhA]h@]h<]h?]hD]uhG]rhPX RabbitMQ FAQrr}r(h+Uh,jubaubhPX, could be useful as a source of information.rr}r(h+X, could be useful as a source of information.h,jubeubhu)r}r(h+XU.. _`Rabbits and Warrens`: http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/h0Kh,jhh3h6h8hxh:}r(hmjhA]rUrabbits-and-warrensrah@]h<]h?]hD]rhauhEKhFhhG]ubhu)r}r(h+X2.. _`Flexible Routing Model`: http://bit.ly/95XFO1h0Kh,jhh3h6h8hxh:}r(hmjhA]rUflexible-routing-modelrah@]h<]h?]hD]rh#auhEKhFhhG]ubhu)r}r(h+X2.. _`Standard Exchange Types`: http://bit.ly/EEWcah0Kh,jhh3h6h8hxh:}r(hmjhA]rUstandard-exchange-typesrah@]h<]h?]hD]rh auhEKhFhhG]ubhu)r}r(h+X4.. _`RabbitMQ FAQ`: http://www.rabbitmq.com/faq.htmlh0Kh,jhh3h6h8hxh:}r(hmjhA]rU rabbitmq-faqrah@]h<]h?]hD]rhauhEKhFhhG]ubhu)r}r(h+X.. _`AMQP Primer`:h,jhh3h6h8hxh:}r(hA]h@]h<]h?]hD]jgjuhEKhFhhG]ubeubeubh.h-)r}r(h+Uh0Kh,h1h3h6h8h9h:}r(h<]rh>ah?]h@]hA]rjahD]uhEMhFhhG]r(hI)r}r(h+j h,jh3h6h8hMh:}r(hA]h@]h<]h?]hD]jgjuhEMhFhhG]rhPX Routing Tasksrr}r(h+j h,jubaubh-)r}r(h+Uh,jh3h6h8h9h:}r(h<]h?]h@]hA]rj2ahD]rhauhEMhFhhG]r(hI)r}r(h+j7h,jh3h6h8hMh:}r(hA]h@]h<]h?]hD]jgj1uhEMhFhhG]rhPXDefining queuesrr}r (h+j7h,jubaubhT)r }r (h+XBIn Celery the queues are defined by the ``CELERY_QUEUES`` setting.r h,jh3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEMhFhhG]r(hPX(In Celery the queues are defined by the rr}r(h+X(In Celery the queues are defined by the h,j ubj)r}r(h+X``CELERY_QUEUES``h:}r(h<]h?]h@]hA]hD]uh,j hG]rhPX CELERY_QUEUESrr}r(h+Uh,jubah8jubhPX setting.rr}r(h+X setting.h,j ubeubhT)r}r(h+XHere's an example queue configuration with three queues; One for video, one for images and finally, one default queue for everything else:rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhFhhG]r hPXHere's an example queue configuration with three queues; One for video, one for images and finally, one default queue for everything else:r!r"}r#(h+jh,jubaubj)r$}r%(h+XCELERY_QUEUES = { "default": { "exchange": "default", "binding_key": "default"}, "videos": { "exchange": "media", "exchange_type": "topic", "binding_key": "media.video", }, "images": { "exchange": "media", "exchange_type": "topic", "binding_key": "media.image", } } CELERY_DEFAULT_QUEUE = "default" CELERY_DEFAULT_EXCHANGE = "default" CELERY_DEFAULT_EXCHANGE_TYPE = "direct" CELERY_DEFAULT_ROUTING_KEY = "default"h,jh3h6h8jh:}r&(j#j$XpythonjjhA]h@]h<]h?]hD]uhEMhFhhG]r'hPXCELERY_QUEUES = { "default": { "exchange": "default", "binding_key": "default"}, "videos": { "exchange": "media", "exchange_type": "topic", "binding_key": "media.video", }, "images": { "exchange": "media", "exchange_type": "topic", "binding_key": "media.image", } } CELERY_DEFAULT_QUEUE = "default" CELERY_DEFAULT_EXCHANGE = "default" CELERY_DEFAULT_EXCHANGE_TYPE = "direct" CELERY_DEFAULT_ROUTING_KEY = "default"r(r)}r*(h+Uh,j$ubaubhT)r+}r,(h+XcHere, the ``CELERY_DEFAULT_QUEUE`` will be used to route tasks that doesn't have an explicit route.h,jh3h6h8hWh:}r-(h<]h?]h@]hA]hD]uhEMhFhhG]r.(hPX Here, the r/r0}r1(h+X Here, the h,j+ubj)r2}r3(h+X``CELERY_DEFAULT_QUEUE``h:}r4(h<]h?]h@]hA]hD]uh,j+hG]r5hPXCELERY_DEFAULT_QUEUEr6r7}r8(h+Uh,j2ubah8jubhPXA will be used to route tasks that doesn't have an explicit route.r9r:}r;(h+XA will be used to route tasks that doesn't have an explicit route.h,j+ubeubhT)r<}r=(h+XThe default exchange, exchange type and routing key will be used as the default routing values for tasks, and as the default values for entries in ``CELERY_QUEUES``.h,jh3h6h8hWh:}r>(h<]h?]h@]hA]hD]uhEMhFhhG]r?(hPXThe default exchange, exchange type and routing key will be used as the default routing values for tasks, and as the default values for entries in r@rA}rB(h+XThe default exchange, exchange type and routing key will be used as the default routing values for tasks, and as the default values for entries in h,j<ubj)rC}rD(h+X``CELERY_QUEUES``h:}rE(h<]h?]h@]hA]hD]uh,j<hG]rFhPX CELERY_QUEUESrGrH}rI(h+Uh,jCubah8jubhPX.rJ}rK(h+X.h,j<ubeubeubh-)rL}rM(h+Uh,jh3h6h8h9h:}rN(h<]h?]h@]hA]rOjEahD]rPhauhEMhFhhG]rQ(hI)rR}rS(h+jJh,jLh3h6h8hMh:}rT(hA]h@]h<]h?]hD]jgjDuhEMhFhhG]rUhPXSpecifying task destinationrVrW}rX(h+jJh,jRubaubhT)rY}rZ(h+XBThe destination for a task is decided by the following (in order):r[h,jLh3h6h8hWh:}r\(h<]h?]h@]hA]hD]uhEMhFhhG]r]hPXBThe destination for a task is decided by the following (in order):r^r_}r`(h+j[h,jYubaubcdocutils.nodes enumerated_list ra)rb}rc(h+Uh,jLh3h6h8Uenumerated_listrdh:}re(UsuffixrfU.hA]h@]h<]UprefixrgUh?]hD]UenumtyperhUarabicriuhEMhFhhG]rj(h)rk}rl(h+X0The :ref:`routers` defined in ``CELERY_ROUTES``.rmh,jbh3h6h8hh:}rn(h<]h?]h@]hA]hD]uhENhFhhG]rohT)rp}rq(h+jmh,jkh3h6h8hWh:}rr(h<]h?]h@]hA]hD]uhEMhG]rs(hPXThe rtru}rv(h+XThe h,jpubj)rw}rx(h+X:ref:`routers`ryh,jph3h6h8jh:}rz(UreftypeXrefjjXroutersU refdomainXstdr{hA]h@]U refexplicith<]h?]hD]jjuhEMhG]r|j)r}}r~(h+jyh:}r(h<]h?]r(jj{Xstd-refreh@]hA]hD]uh,jwhG]rhPXroutersrr}r(h+Uh,j}ubah8jubaubhPX defined in rr}r(h+X defined in h,jpubj)r}r(h+X``CELERY_ROUTES``h:}r(h<]h?]h@]hA]hD]uh,jphG]rhPX CELERY_ROUTESrr}r(h+Uh,jubah8jubhPX.r}r(h+X.h,jpubeubaubh)r}r(h+X=The routing arguments to :func:`~celery.execute.apply_async`.rh,jbh3h6h8hh:}r(h<]h?]h@]hA]hD]uhENhFhhG]rhT)r}r(h+jh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhG]r(hPXThe routing arguments to rr}r(h+XThe routing arguments to h,jubj)r}r(h+X#:func:`~celery.execute.apply_async`rh,jh3h6h8jh:}r(UreftypeXfuncjjXcelery.execute.apply_asyncU refdomainXpyrhA]h@]U refexplicith<]h?]hD]jjjNjNuhEMhG]rj)r}r(h+jh:}r(h<]h?]r(jjXpy-funcreh@]hA]hD]uh,jhG]rhPX apply_async()rr}r(h+Uh,jubah8jubaubhPX.r}r(h+X.h,jubeubaubh)r}r(h+XRRouting related attributes defined on the :class:`~celery.task.base.Task` itself. h,jbh3h6h8hh:}r(h<]h?]h@]hA]hD]uhENhFhhG]rhT)r}r(h+XQRouting related attributes defined on the :class:`~celery.task.base.Task` itself.rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhG]r(hPX*Routing related attributes defined on the rr}r(h+X*Routing related attributes defined on the h,jubj)r}r(h+X:class:`~celery.task.base.Task`rh,jh3h6h8jh:}r(UreftypeXclassjjXcelery.task.base.TaskU refdomainXpyrhA]h@]U refexplicith<]h?]hD]jjjNjNuhEMhG]rj)r}r(h+jh:}r(h<]h?]r(jjXpy-classreh@]hA]hD]uh,jhG]rhPXTaskrr}r(h+Uh,jubah8jubaubhPX itself.rr}r(h+X itself.h,jubeubaubeubhT)r}r(h+XIt is considered best practice to not hard-code these settings, but rather leave that as configuration options by using :ref:`routers`; This is the most flexible approach, but sensible defaults can still be set as task attributes.h,jLh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhFhhG]r(hPXxIt is considered best practice to not hard-code these settings, but rather leave that as configuration options by using rr}r(h+XxIt is considered best practice to not hard-code these settings, but rather leave that as configuration options by using h,jubj)r}r(h+X:ref:`routers`rh,jh3h6h8jh:}r(UreftypeXrefjjXroutersU refdomainXstdrhA]h@]U refexplicith<]h?]hD]jjuhEMhG]rj)r}r(h+jh:}r(h<]h?]r(jjXstd-refreh@]hA]hD]uh,jhG]rhPXroutersrr}r(h+Uh,jubah8jubaubhPX`; This is the most flexible approach, but sensible defaults can still be set as task attributes.rr}r(h+X`; This is the most flexible approach, but sensible defaults can still be set as task attributes.h,jubeubhu)r}r(h+X .. _routers:h,jLh3h6h8hxh:}r(hA]h@]h<]h?]hD]jgjXuhEMhFhhG]ubeubh-)r}r(h+Uh0Kh,jh3h6Uexpect_referenced_by_namer}rhjsh8h9h:}r(h<]rXroutersrah?]h@]hA]r(jXUid3rehD]rhauhEMhFhUexpect_referenced_by_idr}rjXjshG]r(hI)r}r(h+j]h,jh3h6h8hMh:}r(hA]h@]h<]h?]hD]jgjWuhEMhFhhG]rhPXRoutersrr}r(h+j]h,jubaubhT)r}r(h+X@A router is a class that decides the routing options for a task.rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhFhhG]rhPX@A router is a class that decides the routing options for a task.rr}r(h+jh,jubaubhT)r}r(h+XZAll you need to define a new router is to create a class with a ``route_for_task`` method:h,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhFhhG]r(hPX@All you need to define a new router is to create a class with a r r }r (h+X@All you need to define a new router is to create a class with a h,jubj)r }r (h+X``route_for_task``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXroute_for_taskrr}r(h+Uh,j ubah8jubhPX method:rr}r(h+X method:h,jubeubj)r}r(h+X%class MyRouter(object): def route_for_task(self, task, args=None, kwargs=None): if task == "myapp.tasks.compress_video": return {"exchange": "video", "exchange_type": "topic", "routing_key": "video.compress"} return Noneh,jh3h6h8jh:}r(j#j$XpythonjjhA]h@]h<]h?]hD]uhEMhFhhG]rhPX%class MyRouter(object): def route_for_task(self, task, args=None, kwargs=None): if task == "myapp.tasks.compress_video": return {"exchange": "video", "exchange_type": "topic", "routing_key": "video.compress"} return Nonerr}r(h+Uh,jubaubhT)r}r(h+XnIf you return the ``queue`` key, it will expand with the defined settings of that queue in ``CELERY_QUEUES``::h,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhFhhG]r (hPXIf you return the r!r"}r#(h+XIf you return the h,jubj)r$}r%(h+X ``queue``h:}r&(h<]h?]h@]hA]hD]uh,jhG]r'hPXqueuer(r)}r*(h+Uh,j$ubah8jubhPX@ key, it will expand with the defined settings of that queue in r+r,}r-(h+X@ key, it will expand with the defined settings of that queue in h,jubj)r.}r/(h+X``CELERY_QUEUES``h:}r0(h<]h?]h@]hA]hD]uh,jhG]r1hPX CELERY_QUEUESr2r3}r4(h+Uh,j.ubah8jubhPX:r5}r6(h+X:h,jubeubj)r7}r8(h+X{"queue": "video", "routing_key": "video.compress"} becomes --> {"queue": "video", "exchange": "video", "exchange_type": "topic", "routing_key": "video.compress"}h,jh3h6h8jh:}r9(jjhA]h@]h<]h?]hD]uhEMhFhhG]r:hPX{"queue": "video", "routing_key": "video.compress"} becomes --> {"queue": "video", "exchange": "video", "exchange_type": "topic", "routing_key": "video.compress"}r;r<}r=(h+Uh,j7ubaubhT)r>}r?(h+XJYou install router classes by adding it to the ``CELERY_ROUTES`` setting::r@h,jh3h6h8hWh:}rA(h<]h?]h@]hA]hD]uhEMhFhhG]rB(hPX/You install router classes by adding it to the rCrD}rE(h+X/You install router classes by adding it to the h,j>ubj)rF}rG(h+X``CELERY_ROUTES``h:}rH(h<]h?]h@]hA]hD]uh,j>hG]rIhPX CELERY_ROUTESrJrK}rL(h+Uh,jFubah8jubhPX setting:rMrN}rO(h+X setting:h,j>ubeubj)rP}rQ(h+XCELERY_ROUTES = (MyRouter, )h,jh3h6h8jh:}rR(jjhA]h@]h<]h?]hD]uhEMhFhhG]rShPXCELERY_ROUTES = (MyRouter, )rTrU}rV(h+Uh,jPubaubhT)rW}rX(h+X*Router classes can also be added by name::rYh,jh3h6h8hWh:}rZ(h<]h?]h@]hA]hD]uhEMhFhhG]r[hPX)Router classes can also be added by name:r\r]}r^(h+X)Router classes can also be added by name:h,jWubaubj)r_}r`(h+X,CELERY_ROUTES = ("myapp.routers.MyRouter", )h,jh3h6h8jh:}ra(jjhA]h@]h<]h?]hD]uhEMhFhhG]rbhPX,CELERY_ROUTES = ("myapp.routers.MyRouter", )rcrd}re(h+Uh,j_ubaubhT)rf}rg(h+XFor simple task name -> route mappings like the router example above, you can simply drop a dict into ``CELERY_ROUTES`` to get the same result::h,jh3h6h8hWh:}rh(h<]h?]h@]hA]hD]uhEMhFhhG]ri(hPXfFor simple task name -> route mappings like the router example above, you can simply drop a dict into rjrk}rl(h+XfFor simple task name -> route mappings like the router example above, you can simply drop a dict into h,jfubj)rm}rn(h+X``CELERY_ROUTES``h:}ro(h<]h?]h@]hA]hD]uh,jfhG]rphPX CELERY_ROUTESrqrr}rs(h+Uh,jmubah8jubhPX to get the same result:rtru}rv(h+X to get the same result:h,jfubeubj)rw}rx(h+XCELERY_ROUTES = ({"myapp.tasks.compress_video": { "queue": "video", "routing_key": "video.compress"}}, )h,jh3h6h8jh:}ry(jjhA]h@]h<]h?]hD]uhEMhFhhG]rzhPXCELERY_ROUTES = ({"myapp.tasks.compress_video": { "queue": "video", "routing_key": "video.compress"}}, )r{r|}r}(h+Uh,jwubaubhT)r~}r(h+XThe routers will then be traversed in order, it will stop at the first router returning a value and use that as the final route for the task.rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhFhhG]rhPXThe routers will then be traversed in order, it will stop at the first router returning a value and use that as the final route for the task.rr}r(h+jh,j~ubaubeubeubeubh3h6j}rhjsh8h9h:}r(h<]rX amqp primerrah?]h@]hA]r(jUid1rehD]rhauhEKhFhj}rjjshG]r(hI)r}r(h+j h,h.h3h6h8hMh:}r(hA]h@]h<]h?]hD]jgjuhEKhFhhG]rhPX AMQP Primerrr}r(h+j h,jubaubh-)r}r(h+Uh,h.h3h6h8h9h:}r(h<]h?]h@]hA]rjahD]rh!auhEKhFhhG]r(hI)r}r(h+j!h,jh3h6h8hMh:}r(hA]h@]h<]h?]hD]jgjuhEKhFhhG]rhPXMessagesrr}r(h+j!h,jubaubhT)r}r(h+XA message consists of headers and a body. Celery uses headers to store the content type of the message and its content encoding. In Celery the content type is usually the serialization format used to serialize the message, and the body contains the name of the task to execute, the task id (UUID), the arguments to execute it with and some additional metadata - like the number of retries and its ETA (if any).rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]rhPXA message consists of headers and a body. Celery uses headers to store the content type of the message and its content encoding. In Celery the content type is usually the serialization format used to serialize the message, and the body contains the name of the task to execute, the task id (UUID), the arguments to execute it with and some additional metadata - like the number of retries and its ETA (if any).rr}r(h+jh,jubaubhT)r}r(h+XCThis is an example task message represented as a Python dictionary:rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]rhPXCThis is an example task message represented as a Python dictionary:rr}r(h+jh,jubaubj)r}r(h+Xj{"task": "myapp.tasks.add", "id": "54086c5e-6193-4575-8308-dbab76798756", "args": [4, 4], "kwargs": {}}h,jh3h6h8jh:}r(j#j$XpythonjjhA]h@]h<]h?]hD]uhEKhFhhG]rhPXj{"task": "myapp.tasks.add", "id": "54086c5e-6193-4575-8308-dbab76798756", "args": [4, 4], "kwargs": {}}rr}r(h+Uh,jubaubeubh-)r}r(h+Uh,h.h3h6h8h9h:}r(h<]h?]h@]hA]rj/ahD]rhauhEKhFhhG]r(hI)r}r(h+j4h,jh3h6h8hMh:}r(hA]h@]h<]h?]hD]jgj.uhEKhFhhG]rhPX Producers, consumers and brokersrr}r(h+j4h,jubaubhT)r}r(h+XThe client sending messages is typically called a *publisher*, or a *producer*, while the entity receiving messages is called a *consumer*.h,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]r(hPX2The client sending messages is typically called a rr}r(h+X2The client sending messages is typically called a h,jubj)r}r(h+X *publisher*h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX publisherrr}r(h+Uh,jubah8jubhPX, or a rr}r(h+X, or a h,jubj)r}r(h+X *producer*h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXproducerrr}r(h+Uh,jubah8jubhPX2, while the entity receiving messages is called a rr}r(h+X2, while the entity receiving messages is called a h,jubj)r}r(h+X *consumer*h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXconsumerrr}r(h+Uh,jubah8jubhPX.r}r(h+X.h,jubeubhT)r}r(h+XQThe *broker* is the message server, routing messages from producers to consumers.h,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]r(hPXThe rr}r(h+XThe h,jubj)r}r(h+X*broker*h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXbrokerrr}r(h+Uh,jubah8jubhPXE is the message server, routing messages from producers to consumers.rr}r(h+XE is the message server, routing messages from producers to consumers.h,jubeubhT)r}r(h+XFYou are likely to see these terms used a lot in AMQP related material.rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]rhPXFYou are likely to see these terms used a lot in AMQP related material.rr}r(h+jh,jubaubeubh-)r}r(h+Uh,h.h3h6h8h9h:}r(h<]h?]h@]hA]rjBahD]rhauhEKhFhhG]r (hI)r }r (h+jGh,jh3h6h8hMh:}r (hA]h@]h<]h?]hD]jgjAuhEKhFhhG]r hPX#Exchanges, queues and routing keys.rr}r(h+jGh,j ubaubja)r}r(h+Uh,jh3h6h8jdh:}r(jfU.hA]h@]h<]jgUh?]hD]jhjiuhEKhFhhG]r(h)r}r(h+XMessages are sent to exchanges.rh,jh3h6h8hh:}r(h<]h?]h@]hA]hD]uhENhFhhG]rhT)r}r(h+jh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhG]rhPXMessages are sent to exchanges.rr}r (h+jh,jubaubaubh)r!}r"(h+XyAn exchange routes messages to one or more queues. Several exchange types exists, providing different ways to do routing.h,jh3h6h8hh:}r#(h<]h?]h@]hA]hD]uhENhFhhG]r$hT)r%}r&(h+XyAn exchange routes messages to one or more queues. Several exchange types exists, providing different ways to do routing.r'h,j!h3h6h8hWh:}r((h<]h?]h@]hA]hD]uhEKhG]r)hPXyAn exchange routes messages to one or more queues. Several exchange types exists, providing different ways to do routing.r*r+}r,(h+j'h,j%ubaubaubh)r-}r.(h+X>The message waits in the queue until someone consumes from it.r/h,jh3h6h8hh:}r0(h<]h?]h@]hA]hD]uhENhFhhG]r1hT)r2}r3(h+j/h,j-h3h6h8hWh:}r4(h<]h?]h@]hA]hD]uhEKhG]r5hPX>The message waits in the queue until someone consumes from it.r6r7}r8(h+j/h,j2ubaubaubh)r9}r:(h+XEThe message is deleted from the queue when it has been acknowledged. h,jh3h6h8hh:}r;(h<]h?]h@]hA]hD]uhENhFhhG]r<hT)r=}r>(h+XDThe message is deleted from the queue when it has been acknowledged.r?h,j9h3h6h8hWh:}r@(h<]h?]h@]hA]hD]uhEKhG]rAhPXDThe message is deleted from the queue when it has been acknowledged.rBrC}rD(h+j?h,j=ubaubaubeubhT)rE}rF(h+X4The steps required to send and receive messages are:rGh,jh3h6h8hWh:}rH(h<]h?]h@]hA]hD]uhEKhFhhG]rIhPX4The steps required to send and receive messages are:rJrK}rL(h+jGh,jEubaubja)rM}rN(h+Uh,jh3h6h8jdh:}rO(jfU.hA]h@]h<]jgUh?]hD]jhjiuhEKhFhhG]rP(h)rQ}rR(h+XCreate an exchangerSh,jMh3h6h8hh:}rT(h<]h?]h@]hA]hD]uhENhFhhG]rUhT)rV}rW(h+jSh,jQh3h6h8hWh:}rX(h<]h?]h@]hA]hD]uhEKhG]rYhPXCreate an exchangerZr[}r\(h+jSh,jVubaubaubh)r]}r^(h+XCreate a queuer_h,jMh3h6h8hh:}r`(h<]h?]h@]hA]hD]uhENhFhhG]rahT)rb}rc(h+j_h,j]h3h6h8hWh:}rd(h<]h?]h@]hA]hD]uhEKhG]rehPXCreate a queuerfrg}rh(h+j_h,jbubaubaubh)ri}rj(h+X Bind the queue to the exchange. h,jMh3h6h8hh:}rk(h<]h?]h@]hA]hD]uhENhFhhG]rlhT)rm}rn(h+XBind the queue to the exchange.roh,jih3h6h8hWh:}rp(h<]h?]h@]hA]hD]uhEKhG]rqhPXBind the queue to the exchange.rrrs}rt(h+joh,jmubaubaubeubhT)ru}rv(h+XCelery automatically creates the entities necessary for the queues in ``CELERY_QUEUES`` to work (except if the queue's ``auto_declare`` setting is set to :const:`False`).h,jh3h6h8hWh:}rw(h<]h?]h@]hA]hD]uhEKhFhhG]rx(hPXFCelery automatically creates the entities necessary for the queues in ryrz}r{(h+XFCelery automatically creates the entities necessary for the queues in h,juubj)r|}r}(h+X``CELERY_QUEUES``h:}r~(h<]h?]h@]hA]hD]uh,juhG]rhPX CELERY_QUEUESrr}r(h+Uh,j|ubah8jubhPX to work (except if the queue's rr}r(h+X to work (except if the queue's h,juubj)r}r(h+X``auto_declare``h:}r(h<]h?]h@]hA]hD]uh,juhG]rhPX auto_declarerr}r(h+Uh,jubah8jubhPX setting is set to rr}r(h+X setting is set to h,juubj)r}r(h+X:const:`False`rh,juh3h6h8jh:}r(UreftypeXconstjjXFalseU refdomainXpyrhA]h@]U refexplicith<]h?]hD]jjjNjNuhEKhG]rj)r}r(h+jh:}r(h<]h?]r(jjXpy-constreh@]hA]hD]uh,jhG]rhPXFalserr}r(h+Uh,jubah8jubaubhPX).rr}r(h+X).h,juubeubhT)r}r(h+XHere's an example queue configuration with three queues; One for video, one for images and finally, one default queue for everything else:rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]rhPXHere's an example queue configuration with three queues; One for video, one for images and finally, one default queue for everything else:rr}r(h+jh,jubaubj)r}r(h+XCELERY_QUEUES = { "default": { "exchange": "default", "binding_key": "default"}, "videos": { "exchange": "media", "binding_key": "media.video", }, "images": { "exchange": "media", "binding_key": "media.image", } } CELERY_DEFAULT_QUEUE = "default" CELERY_DEFAULT_EXCHANGE_TYPE = "direct" CELERY_DEFAULT_ROUTING_KEY = "default"h,jh3h6h8jh:}r(j#j$XpythonjjhA]h@]h<]h?]hD]uhEKhFhhG]rhPXCELERY_QUEUES = { "default": { "exchange": "default", "binding_key": "default"}, "videos": { "exchange": "media", "binding_key": "media.video", }, "images": { "exchange": "media", "binding_key": "media.image", } } CELERY_DEFAULT_QUEUE = "default" CELERY_DEFAULT_EXCHANGE_TYPE = "direct" CELERY_DEFAULT_ROUTING_KEY = "default"rr}r(h+Uh,jubaubhT)r}r(h+X**NOTE**: In Celery the ``routing_key`` is the key used to send the message, while ``binding_key`` is the key the queue is bound with. In the AMQP API they are both referred to as the routing key.h,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEKhFhhG]r(hZ)r}r(h+X**NOTE**h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXNOTErr}r(h+Uh,jubah8hbubhPX: In Celery the rr}r(h+X: In Celery the h,jubj)r}r(h+X``routing_key``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX routing_keyrr}r(h+Uh,jubah8jubhPX, is the key used to send the message, while rr}r(h+X, is the key used to send the message, while h,jubj)r}r(h+X``binding_key``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPX binding_keyrr}r(h+Uh,jubah8jubhPXb is the key the queue is bound with. In the AMQP API they are both referred to as the routing key.rr}r(h+Xb is the key the queue is bound with. In the AMQP API they are both referred to as the routing key.h,jubeubeubh-)r}r(h+Uh,h.h3h6h8h9h:}r(h<]h?]h@]hA]rjUahD]rh auhEKhFhhG]r(hI)r}r(h+jZh,jh3h6h8hMh:}r(hA]h@]h<]h?]hD]jgjTuhEKhFhhG]rhPXExchange typesrr}r(h+jZh,jubaubhT)r}r(h+X-The exchange type defines how the messages are routed through the exchange. The exchange types defined in the standard are ``direct``, ``topic``, ``fanout`` and ``headers``. Also non-standard exchange types are available as plugins to RabbitMQ, like the `last-value-cache plug-in`_ by Michael Bridgen.h,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEMhFhhG]r(hPX{The exchange type defines how the messages are routed through the exchange. The exchange types defined in the standard are rr}r(h+X{The exchange type defines how the messages are routed through the exchange. The exchange types defined in the standard are h,jubj)r}r(h+X ``direct``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXdirectrr}r(h+Uh,jubah8jubhPX, rr}r(h+X, h,jubj)r}r(h+X ``topic``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXtopicrr}r(h+Uh,jubah8jubhPX, rr}r(h+X, h,jubj)r}r(h+X ``fanout``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXfanoutrr}r(h+Uh,jubah8jubhPX and rr}r(h+X and h,jubj)r}r(h+X ``headers``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXheadersr r }r (h+Uh,jubah8jubhPXR. Also non-standard exchange types are available as plugins to RabbitMQ, like the r r }r(h+XR. Also non-standard exchange types are available as plugins to RabbitMQ, like the h,jubhf)r}r(h+X`last-value-cache plug-in`_hiKh,jh8hjh:}r(UnameXlast-value-cache plug-inhmX.http://github.com/squaremo/rabbitmq-lvc-pluginrhA]h@]h<]h?]hD]uhG]rhPXlast-value-cache plug-inrr}r(h+Uh,jubaubhPX by Michael Bridgen.rr}r(h+X by Michael Bridgen.h,jubeubhu)r}r(h+XR.. _`last-value-cache plug-in`: http://github.com/squaremo/rabbitmq-lvc-pluginh0Kh,jh3h6h8hxh:}r(hmjhA]rUlast-value-cache-plug-inrah@]h<]h?]hD]rhauhEMhFhhG]ubh-)r }r!(h+Uh,jh3h6h8h9h:}r"(h<]h?]h@]hA]r#jlahD]r$h"auhEM hFhhG]r%(hI)r&}r'(h+jqh,j h3h6h8hMh:}r((hA]h@]h<]h?]hD]jgjkuhEM hFhhG]r)hPXDirect exchangesr*r+}r,(h+jqh,j&ubaubhT)r-}r.(h+XDirect exchanges match by exact routing keys, so a queue bound with the routing key ``video`` only receives messages with the same routing key.h,j h3h6h8hWh:}r/(h<]h?]h@]hA]hD]uhEM hFhhG]r0(hPXTDirect exchanges match by exact routing keys, so a queue bound with the routing key r1r2}r3(h+XTDirect exchanges match by exact routing keys, so a queue bound with the routing key h,j-ubj)r4}r5(h+X ``video``h:}r6(h<]h?]h@]hA]hD]uh,j-hG]r7hPXvideor8r9}r:(h+Uh,j4ubah8jubhPX2 only receives messages with the same routing key.r;r<}r=(h+X2 only receives messages with the same routing key.h,j-ubeubeubh-)r>}r?(h+Uh,jh3h6h8h9h:}r@(h<]h?]h@]hA]rAjahD]rBhauhEMhFhhG]rC(hI)rD}rE(h+jh,j>h3h6h8hMh:}rF(hA]h@]h<]h?]hD]jgj~uhEMhFhhG]rGhPXTopic exchangesrHrI}rJ(h+jh,jDubaubhT)rK}rL(h+XTopic exchanges matches routing keys using dot-separated words, and can include wildcard characters: ``*`` matches a single word, ``#`` matches zero or more words.h,j>h3h6h8hWh:}rM(h<]h?]h@]hA]hD]uhEMhFhhG]rN(hPXeTopic exchanges matches routing keys using dot-separated words, and can include wildcard characters: rOrP}rQ(h+XeTopic exchanges matches routing keys using dot-separated words, and can include wildcard characters: h,jKubj)rR}rS(h+X``*``h:}rT(h<]h?]h@]hA]hD]uh,jKhG]rUhPX*rV}rW(h+Uh,jRubah8jubhPX matches a single word, rXrY}rZ(h+X matches a single word, h,jKubj)r[}r\(h+X``#``h:}r](h<]h?]h@]hA]hD]uh,jKhG]r^hPX#r_}r`(h+Uh,j[ubah8jubhPX matches zero or more words.rarb}rc(h+X matches zero or more words.h,jKubeubhT)rd}re(h+XWith routing keys like ``usa.news``, ``usa.weather``, ``norway.news`` and ``norway.weather``, bindings could be ``*.news`` (all news), ``usa.#`` (all items in the USA) or ``usa.weather`` (all USA weather items).h,j>h3h6h8hWh:}rf(h<]h?]h@]hA]hD]uhEMhFhhG]rg(hPXWith routing keys like rhri}rj(h+XWith routing keys like h,jdubj)rk}rl(h+X ``usa.news``h:}rm(h<]h?]h@]hA]hD]uh,jdhG]rnhPXusa.newsrorp}rq(h+Uh,jkubah8jubhPX, rrrs}rt(h+X, h,jdubj)ru}rv(h+X``usa.weather``h:}rw(h<]h?]h@]hA]hD]uh,jdhG]rxhPX usa.weatherryrz}r{(h+Uh,juubah8jubhPX, r|r}}r~(h+X, h,jdubj)r}r(h+X``norway.news``h:}r(h<]h?]h@]hA]hD]uh,jdhG]rhPX norway.newsrr}r(h+Uh,jubah8jubhPX and rr}r(h+X and h,jdubj)r}r(h+X``norway.weather``h:}r(h<]h?]h@]hA]hD]uh,jdhG]rhPXnorway.weatherrr}r(h+Uh,jubah8jubhPX, bindings could be rr}r(h+X, bindings could be h,jdubj)r}r(h+X ``*.news``h:}r(h<]h?]h@]hA]hD]uh,jdhG]rhPX*.newsrr}r(h+Uh,jubah8jubhPX (all news), rr}r(h+X (all news), h,jdubj)r}r(h+X ``usa.#``h:}r(h<]h?]h@]hA]hD]uh,jdhG]rhPXusa.#rr}r(h+Uh,jubah8jubhPX (all items in the USA) or rr}r(h+X (all items in the USA) or h,jdubj)r}r(h+X``usa.weather``h:}r(h<]h?]h@]hA]hD]uh,jdhG]rhPX usa.weatherrr}r(h+Uh,jubah8jubhPX (all USA weather items).rr}r(h+X (all USA weather items).h,jdubeubeubeubh-)r}r(h+Uh,h.h3h6h8h9h:}r(h<]h?]h@]hA]rjahD]rhauhEMhFhhG]r(hI)r}r(h+jh,jh3h6h8hMh:}r(hA]h@]h<]h?]hD]jgjuhEMhFhhG]rhPXRelated API commandsrr}r(h+jh,jubaubh-)r}r(h+Uh,jh3h6h8h9h:}r(h<]h?]h@]hA]rjahD]rh auhEM hFhhG]r(hI)r}r(h+jh,jh3h6h8hMh:}r(hA]h@]h<]h?]hD]jgjuhEM hFhhG]rhPXNexchange.declare(exchange_name, type, passive, durable, auto_delete, internal)rr}r(h+jh,jubaubhT)r}r(h+XDeclares an exchange by name.rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEM"hFhhG]rhPXDeclares an exchange by name.rr}r(h+jh,jubaubh)r}r(h+Uh,jh3h6h8hh:}r(UbulletrX*hA]h@]h<]h?]hD]uhEM$hFhhG]r(h)r}r(h+Xo``passive`` means the exchange won't be created, but you can use this to check if the exchange already exists. h,jh3h6h8hh:}r(h<]h?]h@]hA]hD]uhENhFhhG]rhT)r}r(h+Xn``passive`` means the exchange won't be created, but you can use this to check if the exchange already exists.h,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEM$hG]r(j)r}r(h+X ``passive``h:}r(h<]h?]h@]hA]hD]uh,jhG]rhPXpassiverr}r(h+Uh,jubah8jubhPXc means the exchange won't be created, but you can use this to check if the exchange already exists.rr}r(h+Xc means the exchange won't be created, but you can use this to check if the exchange already exists.h,jubeubaubh)r}r(h+XKDurable exchanges are persistent. That is - they survive a broker restart. h,jh3h6h8hh:}r(h<]h?]h@]hA]hD]uhENhFhhG]rhT)r}r(h+XJDurable exchanges are persistent. That is - they survive a broker restart.rh,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEM'hG]rhPXJDurable exchanges are persistent. That is - they survive a broker restart.rr}r(h+jh,jubaubaubh)r}r(h+Xf``auto_delete`` means the queue will be deleted by the broker when there are no more queues using it. h,jh3h6h8hh:}r(h<]h?]h@]hA]hD]uhENhFhhG]rhT)r}r(h+Xe``auto_delete`` means the queue will be deleted by the broker when there are no more queues using it.h,jh3h6h8hWh:}r(h<]h?]h@]hA]hD]uhEM)hG]r(j)r}r(h+X``auto_delete``h:}r (h<]h?]h@]hA]hD]uh,jhG]r hPX auto_deleter r }r (h+Uh,jubah8jubhPXV means the queue will be deleted by the broker when there are no more queues using it.r r }r (h+XV means the queue will be deleted by the broker when there are no more queues using it.h,jubeubaubeubeubh-)r }r (h+Uh,jh3h6h8h9h:}r (h<]h?]h@]hA]r jahD]r hauhEM-hFhhG]r (hI)r }r (h+jh,j h3h6h8hMh:}r (hA]h@]h<]h?]hD]jgjuhEM-hFhhG]r hPXCqueue.declare(queue_name, passive, durable, exclusive, auto_delete)r r }r (h+jh,j ubaubhT)r }r (h+XDeclares a queue by name.r h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEM/hFhhG]r hPXDeclares a queue by name.r r }r (h+j h,j ubaubh)r }r (h+Uh,j h3h6h8hh:}r (jX*hA]h@]h<]h?]hD]uhEM1hFhhG]r h)r! }r" (h+X_exclusive queues can only be consumed from by the current connection. implies ``auto_delete``. h,j h3h6h8hh:}r# (h<]h?]h@]hA]hD]uhENhFhhG]r$ hT)r% }r& (h+X^exclusive queues can only be consumed from by the current connection. implies ``auto_delete``.h,j! h3h6h8hWh:}r' (h<]h?]h@]hA]hD]uhEM1hG]r( (hPXNexclusive queues can only be consumed from by the current connection. implies r) r* }r+ (h+XNexclusive queues can only be consumed from by the current connection. implies h,j% ubj)r, }r- (h+X``auto_delete``h:}r. (h<]h?]h@]hA]hD]uh,j% hG]r/ hPX auto_deleter0 r1 }r2 (h+Uh,j, ubah8jubhPX.r3 }r4 (h+X.h,j% ubeubaubaubeubh-)r5 }r6 (h+Uh,jh3h6h8h9h:}r7 (h<]h?]h@]hA]r8 jahD]r9 h auhEM5hFhhG]r: (hI)r; }r< (h+jh,j5 h3h6h8hMh:}r= (hA]h@]h<]h?]hD]jgjuhEM5hFhhG]r> hPX2queue.bind(queue_name, exchange_name, routing_key)r? r@ }rA (h+jh,j; ubaubhT)rB }rC (h+XpBinds a queue to an exchange with a routing key. Unbound queues will not receive messages, so this is necessary.rD h,j5 h3h6h8hWh:}rE (h<]h?]h@]hA]hD]uhEM7hFhhG]rF hPXpBinds a queue to an exchange with a routing key. Unbound queues will not receive messages, so this is necessary.rG rH }rI (h+jD h,jB ubaubeubh-)rJ }rK (h+Uh,jh3h6h8h9h:}rL (h<]h?]h@]hA]rM jahD]rN hauhEM;hFhhG]rO (hI)rP }rQ (h+jh,jJ h3h6h8hMh:}rR (hA]h@]h<]h?]hD]jgjuhEM;hFhhG]rS hPX'queue.delete(name, if_unused, if_empty)rT rU }rV (h+jh,jP ubaubhT)rW }rX (h+X Deletes a queue and its binding.rY h,jJ h3h6h8hWh:}rZ (h<]h?]h@]hA]hD]uhEM=hFhhG]r[ hPX Deletes a queue and its binding.r\ r] }r^ (h+jY h,jW ubaubeubh-)r_ }r` (h+Uh,jh3h6h8h9h:}ra (h<]h?]h@]hA]rb jahD]rc hauhEM@hFhhG]rd (hI)re }rf (h+jh,j_ h3h6h8hMh:}rg (hA]h@]h<]h?]hD]jgjuhEM@hFhhG]rh hPX exchange.delete(name, if_unused)ri rj }rk (h+jh,je ubaubhT)rl }rm (h+XDeletes an exchange.rn h,j_ h3h6h8hWh:}ro (h<]h?]h@]hA]hD]uhEMBhFhhG]rp hPXDeletes an exchange.rq rr }rs (h+jn h,jl ubaubhT)rt }ru (h+X1**NOTE**: Declaring does not necessarily mean "create". When you declare you *assert* that the entity exists and that it's operable. There is no rule as to whom should initially create the exchange/queue/binding, whether consumer or producer. Usually the first one to need it will be the one to create it.h,j_ h3h6h8hWh:}rv (h<]h?]h@]hA]hD]uhEMDhFhhG]rw (hZ)rx }ry (h+X**NOTE**h:}rz (h<]h?]h@]hA]hD]uh,jt hG]r{ hPXNOTEr| r} }r~ (h+Uh,jx ubah8hbubhPXE: Declaring does not necessarily mean "create". When you declare you r r }r (h+XE: Declaring does not necessarily mean "create". When you declare you h,jt ubj)r }r (h+X*assert*h:}r (h<]h?]h@]hA]hD]uh,jt hG]r hPXassertr r }r (h+Uh,j ubah8jubhPX that the entity exists and that it's operable. There is no rule as to whom should initially create the exchange/queue/binding, whether consumer or producer. Usually the first one to need it will be the one to create it.r r }r (h+X that the entity exists and that it's operable. There is no rule as to whom should initially create the exchange/queue/binding, whether consumer or producer. Usually the first one to need it will be the one to create it.h,jt ubeubeubeubh-)r }r (h+Uh,h.h3h6h8h9h:}r (h<]h?]h@]hA]r jahD]r hauhEMJhFhhG]r (hI)r }r (h+j h,j h3h6h8hMh:}r (hA]h@]h<]h?]hD]jgjuhEMJhFhhG]r hPXHands-on with the APIr r }r (h+j h,j ubaubhT)r }r (h+XCelery comes with a tool called ``camqadm`` (short for celery AMQP admin). It's used for simple admnistration tasks like creating/deleting queues and exchanges, purging queues and sending messages. In short it's for simple command-line access to the AMQP API.h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEMLhFhhG]r (hPX Celery comes with a tool called r r }r (h+X Celery comes with a tool called h,j ubj)r }r (h+X ``camqadm``h:}r (h<]h?]h@]hA]hD]uh,j hG]r hPXcamqadmr r }r (h+Uh,j ubah8jubhPX (short for celery AMQP admin). It's used for simple admnistration tasks like creating/deleting queues and exchanges, purging queues and sending messages. In short it's for simple command-line access to the AMQP API.r r }r (h+X (short for celery AMQP admin). It's used for simple admnistration tasks like creating/deleting queues and exchanges, purging queues and sending messages. In short it's for simple command-line access to the AMQP API.h,j ubeubhT)r }r (h+X|You can write commands directly in the arguments to ``camqadm``, or just start with no arguments to start it in shell-mode::h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEMQhFhhG]r (hPX4You can write commands directly in the arguments to r r }r (h+X4You can write commands directly in the arguments to h,j ubj)r }r (h+X ``camqadm``h:}r (h<]h?]h@]hA]hD]uh,j hG]r hPXcamqadmr r }r (h+Uh,j ubah8jubhPX<, or just start with no arguments to start it in shell-mode:r r }r (h+X<, or just start with no arguments to start it in shell-mode:h,j ubeubj)r }r (h+XI$ camqadm -> connecting to amqp://guest@localhost:5672/. -> connected. 1>h,j h3h6h8jh:}r (jjhA]h@]h<]h?]hD]uhEMThFhhG]r hPXI$ camqadm -> connecting to amqp://guest@localhost:5672/. -> connected. 1>r r }r (h+Uh,j ubaubhT)r }r (h+XHere ``1>`` is the prompt. The number is counting the number of commands you have executed. Type ``help`` for a list of commands. It also has autocompletion, so you can start typing a command and then hit the ``tab`` key to show a list of possible matches.h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEMYhFhhG]r (hPXHere r r }r (h+XHere h,j ubj)r }r (h+X``1>``h:}r (h<]h?]h@]hA]hD]uh,j hG]r hPX1>r r }r (h+Uh,j ubah8jubhPXV is the prompt. The number is counting the number of commands you have executed. Type r r }r (h+XV is the prompt. The number is counting the number of commands you have executed. Type h,j ubj)r }r (h+X``help``h:}r (h<]h?]h@]hA]hD]uh,j hG]r hPXhelpr r }r (h+Uh,j ubah8jubhPXh for a list of commands. It also has autocompletion, so you can start typing a command and then hit the r r }r (h+Xh for a list of commands. It also has autocompletion, so you can start typing a command and then hit the h,j ubj)r }r (h+X``tab``h:}r (h<]h?]h@]hA]hD]uh,j hG]r hPXtabr r }r (h+Uh,j ubah8jubhPX( key to show a list of possible matches.r r }r (h+X( key to show a list of possible matches.h,j ubeubhT)r }r (h+X2Now let's create a queue we can send messages to::r h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEM^hFhhG]r hPX1Now let's create a queue we can send messages to:r r }r (h+X1Now let's create a queue we can send messages to:h,j ubaubj)r }r (h+X1> exchange.declare testexchange direct ok. 2> queue.declare testqueue ok. queue:testqueue messages:0 consumers:0. 3> queue.bind testqueue testexchange testkey ok.h,j h3h6h8jh:}r (jjhA]h@]h<]h?]hD]uhEM`hFhhG]r hPX1> exchange.declare testexchange direct ok. 2> queue.declare testqueue ok. queue:testqueue messages:0 consumers:0. 3> queue.bind testqueue testexchange testkey ok.r r }r (h+Uh,j ubaubhT)r }r (h+XThis created the direct exchange ``testexchange``, and a queue named ``testqueue``. The queue is bound to the exchange using the routing key ``testkey``.h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEMghFhhG]r (hPX!This created the direct exchange r r }r (h+X!This created the direct exchange h,j ubj)r }r (h+X``testexchange``h:}r (h<]h?]h@]hA]hD]uh,j hG]r hPX testexchanger r }r (h+Uh,j ubah8jubhPX, and a queue named r r }r (h+X, and a queue named h,j ubj)r }r (h+X ``testqueue``h:}r (h<]h?]h@]hA]hD]uh,j hG]r hPX testqueuer r }r (h+Uh,j ubah8jubhPX<. The queue is bound to the exchange using the routing key r r }r (h+X<. The queue is bound to the exchange using the routing key h,j ubj)r }r (h+X ``testkey``h:}r (h<]h?]h@]hA]hD]uh,j hG]r hPXtestkeyr r }r (h+Uh,j ubah8jubhPX.r }r (h+X.h,j ubeubhT)r }r (h+XFrom now on all messages sent to the exchange ``testexchange`` with routing key ``testkey`` will be moved to this queue. We can send a message by using the ``basic.publish`` command::h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEMkhFhhG]r (hPX.From now on all messages sent to the exchange r r }r (h+X.From now on all messages sent to the exchange h,j ubj)r! }r" (h+X``testexchange``h:}r# (h<]h?]h@]hA]hD]uh,j hG]r$ hPX testexchanger% r& }r' (h+Uh,j! ubah8jubhPX with routing key r( r) }r* (h+X with routing key h,j ubj)r+ }r, (h+X ``testkey``h:}r- (h<]h?]h@]hA]hD]uh,j hG]r. hPXtestkeyr/ r0 }r1 (h+Uh,j+ ubah8jubhPXA will be moved to this queue. We can send a message by using the r2 r3 }r4 (h+XA will be moved to this queue. We can send a message by using the h,j ubj)r5 }r6 (h+X``basic.publish``h:}r7 (h<]h?]h@]hA]hD]uh,j hG]r8 hPX basic.publishr9 r: }r; (h+Uh,j5 ubah8jubhPX command:r< r= }r> (h+X command:h,j ubeubj)r? }r@ (h+X>4> basic.publish "This is a message!" testexchange testkey ok.h,j h3h6h8jh:}rA (jjhA]h@]h<]h?]hD]uhEMohFhhG]rB hPX>4> basic.publish "This is a message!" testexchange testkey ok.rC rD }rE (h+Uh,j? ubaubhT)rF }rG (h+XNow that the message is sent we can retrieve it again. We use the ``basic.get`` command here, which pops a single message off the queue, this command is not recommended for production as it implies polling, any real application would declare consumers instead.h,j h3h6h8hWh:}rH (h<]h?]h@]hA]hD]uhEMshFhhG]rI (hPXBNow that the message is sent we can retrieve it again. We use the rJ rK }rL (h+XBNow that the message is sent we can retrieve it again. We use the h,jF ubj)rM }rN (h+X ``basic.get``h:}rO (h<]h?]h@]hA]hD]uh,jF hG]rP hPX basic.getrQ rR }rS (h+Uh,jM ubah8jubhPX command here, which pops a single message off the queue, this command is not recommended for production as it implies polling, any real application would declare consumers instead.rT rU }rV (h+X command here, which pops a single message off the queue, this command is not recommended for production as it implies polling, any real application would declare consumers instead.h,jF ubeubhT)rW }rX (h+XPop a message off the queue::rY h,j h3h6h8hWh:}rZ (h<]h?]h@]hA]hD]uhEMxhFhhG]r[ hPXPop a message off the queue:r\ r] }r^ (h+XPop a message off the queue:h,jW ubaubj)r_ }r` (h+X5> basic.get testqueue {'body': 'This is a message!', 'delivery_info': {'delivery_tag': 1, 'exchange': u'testexchange', 'message_count': 0, 'redelivered': False, 'routing_key': u'testkey'}, 'properties': {}}h,j h3h6h8jh:}ra (jjhA]h@]h<]h?]hD]uhEMzhFhhG]rb hPX5> basic.get testqueue {'body': 'This is a message!', 'delivery_info': {'delivery_tag': 1, 'exchange': u'testexchange', 'message_count': 0, 'redelivered': False, 'routing_key': u'testkey'}, 'properties': {}}rc rd }re (h+Uh,j_ ubaubhT)rf }rg (h+XAMQP uses acknowledgment to signify that a message has been received and processed successfully. The message is sent to the next receiver if it has not been acknowledged before the client connection is closed.rh h,j h3h6h8hWh:}ri (h<]h?]h@]hA]hD]uhEMhFhhG]rj hPXAMQP uses acknowledgment to signify that a message has been received and processed successfully. The message is sent to the next receiver if it has not been acknowledged before the client connection is closed.rk rl }rm (h+jh h,jf ubaubhT)rn }ro (h+XPNote the delivery tag listed in the structure above; Within a connection channel, every received message has a unique delivery tag, This tag is used to acknowledge the message. Note that delivery tags are not unique across connections, so in another client the delivery tag ``1`` might point to a different message than in this channel.h,j h3h6h8hWh:}rp (h<]h?]h@]hA]hD]uhEMhFhhG]rq (hPXNote the delivery tag listed in the structure above; Within a connection channel, every received message has a unique delivery tag, This tag is used to acknowledge the message. Note that delivery tags are not unique across connections, so in another client the delivery tag rr rs }rt (h+XNote the delivery tag listed in the structure above; Within a connection channel, every received message has a unique delivery tag, This tag is used to acknowledge the message. Note that delivery tags are not unique across connections, so in another client the delivery tag h,jn ubj)ru }rv (h+X``1``h:}rw (h<]h?]h@]hA]hD]uh,jn hG]rx hPX1ry }rz (h+Uh,ju ubah8jubhPX9 might point to a different message than in this channel.r{ r| }r} (h+X9 might point to a different message than in this channel.h,jn ubeubhT)r~ }r (h+XAYou can acknowledge the message we received using ``basic.ack``::r h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEMhFhhG]r (hPX2You can acknowledge the message we received using r r }r (h+X2You can acknowledge the message we received using h,j~ ubj)r }r (h+X ``basic.ack``h:}r (h<]h?]h@]hA]hD]uh,j~ hG]r hPX basic.ackr r }r (h+Uh,j ubah8jubhPX:r }r (h+X:h,j~ ubeubj)r }r (h+X6> basic.ack 1 ok.h,j h3h6h8jh:}r (jjhA]h@]h<]h?]hD]uhEMhFhhG]r hPX6> basic.ack 1 ok.r r }r (h+Uh,j ubaubhT)r }r (h+XMTo clean up after our test session we should delete the entities we created::r h,j h3h6h8hWh:}r (h<]h?]h@]hA]hD]uhEMhFhhG]r hPXLTo clean up after our test session we should delete the entities we created:r r }r (h+XLTo clean up after our test session we should delete the entities we created:h,j ubaubj)r }r (h+XU7> queue.delete testqueue ok. 0 messages deleted. 8> exchange.delete testexchange ok.h,j h3h6h8jh:}r (jjhA]h@]h<]h?]hD]uhEMhFhhG]r hPXU7> queue.delete testqueue ok. 0 messages deleted. 8> exchange.delete testexchange ok.r r }r (h+Uh,j ubaubeubeubh3h6h8Usystem_messager h:}r (h<]UlevelKhA]h@]r jaUsourceh6h?]hD]UlineKUtypeUINFOr uhEKhFhhG]r hT)r }r (h+Uh:}r (h<]h?]h@]hA]hD]uh,h)hG]r hPX.Duplicate implicit target name: "amqp primer".r r }r (h+Uh,j ubah8hWubaubh()r }r (h+Uh,jh3h6h8j h:}r (h<]UlevelKhA]h@]r jaUsourceh6h?]hD]UlineMUtypej uhEMhFhhG]r hT)r }r (h+Uh:}r (h<]h?]h@]hA]hD]uh,j hG]r hPX0Duplicate implicit target name: "routing tasks".r r }r (h+Uh,j ubah8hWubaubh()r }r (h+Uh,jh3h6h8j h:}r (h<]UlevelKhA]h@]r jaUsourceh6h?]hD]UlineMUtypej uhEMhFhhG]r hT)r }r (h+Uh:}r (h<]h?]h@]hA]hD]uh,j hG]r hPX*Duplicate implicit target name: "routers".r r }r (h+Uh,j ubah8hWubaubeUcurrent_sourcer NU decorationr NUautofootnote_startr KUnameidsr }r (hjhjhhh jh hh hh jUh jhjhjhjBhjhjhjhjhjXhhhj2hjEhjhNhjhhhj/hhhh{h jh!jh"jlh#juhG]r h1ah+UU transformerr NU footnote_refsr }r Urefnamesr }r (hl]r hgaXstandard exchange types]r jaXlast-value-cache plug-in]r jaX rabbitmq faq]r jaXrabbits and warrens]r jaXflexible routing model]r jauUsymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr ]r U citationsr ]r hFhU current_liner NUtransform_messagesr ]r (h()r }r (h+Uh:}r (h<]UlevelKhA]h@]Usourceh6h?]hD]UlineKUtypej uhG]r hT)r }r (h+Uh:}r (h<]h?]h@]hA]hD]uh,j hG]r hPX1Hyperlink target "amqp-primer" is not referenced.r r }r (h+Uh,j ubah8hWubah8j ubh()r }r (h+Uh:}r (h<]UlevelKhA]h@]Usourceh6h?]hD]UlineMUtypej uhG]r hT)r }r (h+Uh:}r (h<]h?]h@]hA]hD]uh,j hG]r hPX-Hyperlink target "routers" is not referenced.r r }r (h+Uh,j ubah8hWubah8j ubeUreporterr NUid_startr KU autofootnotesr ]r U citation_refsr }r Uindirect_targetsr ]r Usettingsr (cdocutils.frontend Values r or }r (Ufootnote_backlinksr KUrecord_dependenciesr NU rfc_base_urlr Uhttp://tools.ietf.org/html/r U tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr NhMNUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformr KUwarning_streamr NUpep_file_url_templater! Upep-%04dr" Uexit_status_levelr# KUconfigr$ NUstrict_visitorr% NUcloak_email_addressesr& Utrim_footnote_reference_spacer' Uenvr( NUdump_pseudo_xmlr) NUexpose_internalsr* NUsectsubtitle_xformr+ U source_linkr, NUrfc_referencesr- NUoutput_encodingr. Uutf-8r/ U source_urlr0 NUinput_encodingr1 U utf-8-sigr2 U_disable_configr3 NU id_prefixr4 UU tab_widthr5 KUerror_encodingr6 UUTF-8r7 U_sourcer8 UO/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/routing.rstr9 Ugettext_compactr: U generatorr; NUdump_internalsr< NU smart_quotesr= U pep_base_urlr> Uhttp://www.python.org/dev/peps/r? Usyntax_highlightr@ UlongrA Uinput_encoding_error_handlerrB j Uauto_id_prefixrC UidrD Udoctitle_xformrE Ustrip_elements_with_classesrF NU _config_filesrG ]rH Ufile_insertion_enabledrI U raw_enabledrJ KU dump_settingsrK NubUsymbol_footnote_startrL KUidsrM }rN (jj5 hj)hhhjljjhj jh.jAj=hh~jjhjhj/jjjJ jjhhhhhhjj>jjjjj2jjh.jjj.j*jj_ jEjLjkjgj~jzjjjjjjjj jjhCh1jlj jjjj jXjjjjBjjjjUjjjjjhj^h{hvhhjTjPjjjjjjjjjjjDj@j1j-jWjSuUsubstitution_namesrO }rP h8hFh:}rQ (h<]hA]h@]Usourceh6h?]hD]uU footnotesrR ]rS UrefidsrT }rU (j]rV jajX]rW jauub.PKHDD,}A9celery-2.0-archived/.doctrees/userguide/executing.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xexecuting tasksqNXbasicsqNX serializersqNX amqp optionsq NX$connections and connection timeouts.q NXeta and countdownq NXrouting optionsq NUcontentsq NuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUexecuting-tasksqhUbasicsqhU serializersqh U amqp-optionsqh U#connections-and-connection-timeoutsqh Ueta-and-countdownqh Urouting-optionsqh UcontentsquUchildrenq]q cdocutils.nodes section q!)q"}q#(U rawsourceq$UUparentq%hUsourceq&cdocutils.nodes reprunicode q'XQ/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/executing.rstq(q)}q*bUtagnameq+Usectionq,U attributesq-}q.(Udupnamesq/]Uclassesq0]Ubackrefsq1]Uidsq2]q3haUnamesq4]q5hauUlineq6KUdocumentq7hh]q8(cdocutils.nodes title q9)q:}q;(h$XExecuting Tasksq(h/]h0]h1]h2]h4]uh6Kh7hh]q?cdocutils.nodes Text q@XExecuting TasksqAqB}qC(h$h}r?(h$X{You can also execute a task by name using :func:`~celery.execute.send_task`, if you don't have access to the task's class::h%hh&h)h+hkh-}r@(h/]h0]h1]h2]h4]uh6Kh7hh]rA(h@X*You can also execute a task by name using rBrC}rD(h$X*You can also execute a task by name using h%j>ubh)rE}rF(h$X!:func:`~celery.execute.send_task`rGh%j>h&h)h+hh-}rH(UreftypeXfunchhXcelery.execute.send_taskU refdomainXpyrIh2]h1]U refexplicith/]h0]h4]hhhNhNuh6Kh]rJh)rK}rL(h$jGh-}rM(h/]h0]rN(hjIXpy-funcrOeh1]h2]h4]uh%jEh]rPh@X send_task()rQrR}rS(h$Uh%jKubah+hubaubh@X/, if you don't have access to the task's class:rTrU}rV(h$X/, if you don't have access to the task's class:h%j>ubeubj)rW}rX(h$Xg>>> from celery.execute import send_task >>> result = send_task("tasks.add", [2, 2]) >>> result.get() 4h%hh&h)h+jh-}rY(jj h2]h1]h/]h0]h4]uh6Kh7hh]rZh@Xg>>> from celery.execute import send_task >>> result = send_task("tasks.add", [2, 2]) >>> result.get() 4r[r\}r](h$Uh%jWubaubhZ)r^}r_(h$XwWhile ``delay`` is convenient, it doesn't give you as much control as using ``apply_async``. With ``apply_async`` you can override the execution options available as attributes on the ``Task`` class: ``routing_key``, ``exchange``, ``immediate``, ``mandatory``, ``priority``, and ``serializer``. In addition you can set a countdown/eta, or provide a custom broker connection.h%hh&h)h+hkh-}r`(h/]h0]h1]h2]h4]uh6K#h7hh]ra(h@XWhile rbrc}rd(h$XWhile h%j^ubh)re}rf(h$X ``delay``h-}rg(h/]h0]h1]h2]h4]uh%j^h]rhh@Xdelayrirj}rk(h$Uh%jeubah+hubh@X= is convenient, it doesn't give you as much control as using rlrm}rn(h$X= is convenient, it doesn't give you as much control as using h%j^ubh)ro}rp(h$X``apply_async``h-}rq(h/]h0]h1]h2]h4]uh%j^h]rrh@X apply_asyncrsrt}ru(h$Uh%joubah+hubh@X. With rvrw}rx(h$X. With h%j^ubh)ry}rz(h$X``apply_async``h-}r{(h/]h0]h1]h2]h4]uh%j^h]r|h@X apply_asyncr}r~}r(h$Uh%jyubah+hubh@XG you can override the execution options available as attributes on the rr}r(h$XG you can override the execution options available as attributes on the h%j^ubh)r}r(h$X``Task``h-}r(h/]h0]h1]h2]h4]uh%j^h]rh@XTaskrr}r(h$Uh%jubah+hubh@X class: rr}r(h$X class: h%j^ubh)r}r(h$X``routing_key``h-}r(h/]h0]h1]h2]h4]uh%j^h]rh@X routing_keyrr}r(h$Uh%jubah+hubh@X, rr}r(h$X, h%j^ubh)r}r(h$X ``exchange``h-}r(h/]h0]h1]h2]h4]uh%j^h]rh@Xexchangerr}r(h$Uh%jubah+hubh@X, rr}r(h$X, h%j^ubh)r}r(h$X ``immediate``h-}r(h/]h0]h1]h2]h4]uh%j^h]rh@X immediaterr}r(h$Uh%jubah+hubh@X, rr}r(h$X, h%j^ubh)r}r(h$X ``mandatory``h-}r(h/]h0]h1]h2]h4]uh%j^h]rh@X mandatoryrr}r(h$Uh%jubah+hubh@X, rr}r(h$X, h%j^ubh)r}r(h$X ``priority``h-}r(h/]h0]h1]h2]h4]uh%j^h]rh@Xpriorityrr}r(h$Uh%jubah+hubh@X, and rr}r(h$X, and h%j^ubh)r}r(h$X``serializer``h-}r(h/]h0]h1]h2]h4]uh%j^h]rh@X serializerrr}r(h$Uh%jubah+hubh@XR. In addition you can set a countdown/eta, or provide a custom broker connection.rr}r(h$XR. In addition you can set a countdown/eta, or provide a custom broker connection.h%j^ubeubhZ)r}r(h$XqLet's go over these in more detail. The following examples use this simple task, which adds together two numbers:rh%hh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6K)h7hh]rh@XqLet's go over these in more detail. The following examples use this simple task, which adds together two numbers:rr}r(h$jh%jubaubj)r}r(h$X%@task def add(x, y): return x + yh%hh&h)h+jh-}r(jjXpythonjj h2]h1]h/]h0]h4]uh6K,h7hh]rh@X%@task def add(x, y): return x + yrr}r(h$Uh%jubaubeubh!)r}r(h$Uh%h"h&h)h+h,h-}r(h/]h0]h1]h2]rhah4]rh auh6K4h7hh]r(h9)r}r(h$h~h%jh&h)h+h=h-}r(h2]h1]h/]h0]h4]hhyuh6K4h7hh]rh@XETA and countdownrr}r(h$h~h%jubaubhZ)r}r(h$XThe ETA (estimated time of arrival) lets you set a specific date and time that is the earliest time at which your task will execute. ``countdown`` is a shortcut to set this by seconds in the future.h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6K6h7hh]r(h@XThe ETA (estimated time of arrival) lets you set a specific date and time that is the earliest time at which your task will execute. rr}r(h$XThe ETA (estimated time of arrival) lets you set a specific date and time that is the earliest time at which your task will execute. h%jubh)r}r(h$X ``countdown``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X countdownrr}r(h$Uh%jubah+hubh@X4 is a shortcut to set this by seconds in the future.rr}r(h$X4 is a shortcut to set this by seconds in the future.h%jubeubj)r}r(h$Xy>>> result = add.apply_async(args=[10, 10], countdown=3) >>> result.get() # this takes at least 3 seconds to return 20h%jh&h)h+jh-}r(jjXpythonjj h2]h1]h/]h0]h4]uh6K:h7hh]rh@Xy>>> result = add.apply_async(args=[10, 10], countdown=3) >>> result.get() # this takes at least 3 seconds to return 20rr}r(h$Uh%jubaubhZ)r}r(h$XNote that your task is guaranteed to be executed at some time *after* the specified date and time has passed, but not necessarily at that exact time.h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6K@h7hh]r(h@X>Note that your task is guaranteed to be executed at some time rr}r(h$X>Note that your task is guaranteed to be executed at some time h%jubcdocutils.nodes emphasis r)r}r(h$X*after*h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xafterr r }r (h$Uh%jubah+Uemphasisr ubh@XP the specified date and time has passed, but not necessarily at that exact time.r r}r(h$XP the specified date and time has passed, but not necessarily at that exact time.h%jubeubhZ)r}r(h$X?While ``countdown`` is an integer, ``eta`` must be a :class:`~datetime.datetime` object, specifying an exact date and time in the future. This is good if you already have a :class:`~datetime.datetime`` object and need to modify it with a :class:`~datetime.timedelta`, or when using time in seconds is not very readable.h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6KCh7hh]r(h@XWhile rr}r(h$XWhile h%jubh)r}r(h$X ``countdown``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X countdownrr}r(h$Uh%jubah+hubh@X is an integer, rr}r (h$X is an integer, h%jubh)r!}r"(h$X``eta``h-}r#(h/]h0]h1]h2]h4]uh%jh]r$h@Xetar%r&}r'(h$Uh%j!ubah+hubh@X must be a r(r)}r*(h$X must be a h%jubh)r+}r,(h$X:class:`~datetime.datetime`r-h%jh&h)h+hh-}r.(UreftypeXclasshhXdatetime.datetimeU refdomainXpyr/h2]h1]U refexplicith/]h0]h4]hhhNhNuh6KCh]r0h)r1}r2(h$j-h-}r3(h/]h0]r4(hj/Xpy-classr5eh1]h2]h4]uh%j+h]r6h@Xdatetimer7r8}r9(h$Uh%j1ubah+hubaubh@X] object, specifying an exact date and time in the future. This is good if you already have a r:r;}r<(h$X] object, specifying an exact date and time in the future. This is good if you already have a h%jubh)r=}r>(h$X:class:`~datetime.datetime``r?h%jh&h)h+hh-}r@(UreftypeXclasshhXdatetime.datetime`U refdomainXpyrAh2]h1]U refexplicith/]h0]h4]hhhNhNuh6KCh]rBh)rC}rD(h$j?h-}rE(h/]h0]rF(hjAXpy-classrGeh1]h2]h4]uh%j=h]rHh@X datetime`rIrJ}rK(h$Uh%jCubah+hubaubh@X% object and need to modify it with a rLrM}rN(h$X% object and need to modify it with a h%jubh)rO}rP(h$X:class:`~datetime.timedelta`rQh%jh&h)h+hh-}rR(UreftypeXclasshhXdatetime.timedeltaU refdomainXpyrSh2]h1]U refexplicith/]h0]h4]hhhNhNuh6KCh]rTh)rU}rV(h$jQh-}rW(h/]h0]rX(hjSXpy-classrYeh1]h2]h4]uh%jOh]rZh@X timedeltar[r\}r](h$Uh%jUubah+hubaubh@X5, or when using time in seconds is not very readable.r^r_}r`(h$X5, or when using time in seconds is not very readable.h%jubeubj)ra}rb(h$Xfrom datetime import datetime, timedelta def quickban(username): """Ban user for 24 hours.""" ban(username) tomorrow = datetime.now() + timedelta(days=1) UnbanTask.apply_async(args=[username], eta=tomorrow)h%jh&h)h+jh-}rc(jjXpythonjj h2]h1]h/]h0]h4]uh6KHh7hh]rdh@Xfrom datetime import datetime, timedelta def quickban(username): """Ban user for 24 hours.""" ban(username) tomorrow = datetime.now() + timedelta(days=1) UnbanTask.apply_async(args=[username], eta=tomorrow)rerf}rg(h$Uh%jaubaubeubh!)rh}ri(h$Uh%h"h&h)h+h,h-}rj(h/]h0]h1]h2]rkhah4]rlhauh6KTh7hh]rm(h9)rn}ro(h$hh%jhh&h)h+h=h-}rp(h2]h1]h/]h0]h4]hhuh6KTh7hh]rqh@X Serializersrrrs}rt(h$hh%jnubaubhZ)ru}rv(h$XMData passed between celery and workers has to be serialized to be transferred. The default serializer is :mod:`pickle`, but you can change this for each task. There is built-in support for using :mod:`pickle`, ``JSON`` and ``YAML``, and you can add your own custom serializers by registering them into the carrot serializer registry.h%jhh&h)h+hkh-}rw(h/]h0]h1]h2]h4]uh6KVh7hh]rx(h@XiData passed between celery and workers has to be serialized to be transferred. The default serializer is ryrz}r{(h$XiData passed between celery and workers has to be serialized to be transferred. The default serializer is h%juubh)r|}r}(h$X :mod:`pickle`r~h%juh&h)h+hh-}r(UreftypeXmodhhXpickleU refdomainXpyrh2]h1]U refexplicith/]h0]h4]hhhNhNuh6KVh]rh)r}r(h$j~h-}r(h/]h0]r(hjXpy-modreh1]h2]h4]uh%j|h]rh@Xpicklerr}r(h$Uh%jubah+hubaubh@XM, but you can change this for each task. There is built-in support for using rr}r(h$XM, but you can change this for each task. There is built-in support for using h%juubh)r}r(h$X :mod:`pickle`rh%juh&h)h+hh-}r(UreftypeXmodhhXpickleU refdomainXpyrh2]h1]U refexplicith/]h0]h4]hhhNhNuh6KVh]rh)r}r(h$jh-}r(h/]h0]r(hjXpy-modreh1]h2]h4]uh%jh]rh@Xpicklerr}r(h$Uh%jubah+hubaubh@X, rr}r(h$X, h%juubh)r}r(h$X``JSON``h-}r(h/]h0]h1]h2]h4]uh%juh]rh@XJSONrr}r(h$Uh%jubah+hubh@X and rr}r(h$X and h%juubh)r}r(h$X``YAML``h-}r(h/]h0]h1]h2]h4]uh%juh]rh@XYAMLrr}r(h$Uh%jubah+hubh@Xf, and you can add your own custom serializers by registering them into the carrot serializer registry.rr}r(h$Xf, and you can add your own custom serializers by registering them into the carrot serializer registry.h%juubeubhZ)r}r(h$XBThe default serializer (pickle) supports Python objects, like ``datetime`` and any custom datatypes you define yourself. But since pickle has poor support outside of the Python language, you need to choose another serializer if you need to communicate with other languages. In that case, ``JSON`` is a very popular choice.h%jhh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6K]h7hh]r(h@X>The default serializer (pickle) supports Python objects, like rr}r(h$X>The default serializer (pickle) supports Python objects, like h%jubh)r}r(h$X ``datetime``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xdatetimerr}r(h$Uh%jubah+hubh@X and any custom datatypes you define yourself. But since pickle has poor support outside of the Python language, you need to choose another serializer if you need to communicate with other languages. In that case, rr}r(h$X and any custom datatypes you define yourself. But since pickle has poor support outside of the Python language, you need to choose another serializer if you need to communicate with other languages. In that case, h%jubh)r}r(h$X``JSON``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@XJSONrr}r(h$Uh%jubah+hubh@X is a very popular choice.rr}r(h$X is a very popular choice.h%jubeubhZ)r}r(h$XThe serialization method is sent with the message, so the worker knows how to deserialize any task. Of course, if you use a custom serializer, this must also be registered in the worker.rh%jhh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kch7hh]rh@XThe serialization method is sent with the message, so the worker knows how to deserialize any task. Of course, if you use a custom serializer, this must also be registered in the worker.rr}r(h$jh%jubaubhZ)r}r(h$XWhen sending a task the serialization method is taken from the following places in order: The ``serializer`` argument to ``apply_async``, the Task's ``serializer`` attribute, and finally the global default ``CELERY_SERIALIZER`` configuration directive.h%jhh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kgh7hh]r(h@X^When sending a task the serialization method is taken from the following places in order: The rr}r(h$X^When sending a task the serialization method is taken from the following places in order: The h%jubh)r}r(h$X``serializer``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X serializerrr}r(h$Uh%jubah+hubh@X argument to rr}r(h$X argument to h%jubh)r}r(h$X``apply_async``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X apply_asyncrr}r(h$Uh%jubah+hubh@X , the Task's rr}r(h$X , the Task's h%jubh)r}r(h$X``serializer``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X serializerrr}r(h$Uh%jubah+hubh@X+ attribute, and finally the global default rr}r(h$X+ attribute, and finally the global default h%jubh)r}r(h$X``CELERY_SERIALIZER``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@XCELERY_SERIALIZERrr}r(h$Uh%jubah+hubh@X configuration directive.rr}r(h$X configuration directive.h%jubeubj)r}r(h$X5>>> add.apply_async(args=[10, 10], serializer="json")h%jhh&h)h+jh-}r(jjXpythonjj h2]h1]h/]h0]h4]uh6Klh7hh]r h@X5>>> add.apply_async(args=[10, 10], serializer="json")r r }r (h$Uh%jubaubeubh!)r }r(h$Uh%h"h&h)h+h,h-}r(h/]h0]h1]h2]rhah4]rh auh6Kqh7hh]r(h9)r}r(h$hh%j h&h)h+h=h-}r(h2]h1]h/]h0]h4]hhuh6Kqh7hh]rh@X$Connections and connection timeouts.rr}r(h$hh%jubaubhZ)r}r(h$XCurrently there is no support for broker connection pools in celery, so this is something you need to be aware of when sending more than one task at a time, as ``apply_async``/``delay`` establishes and closes a connection every time.h%j h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Ksh7hh]r(h@XCurrently there is no support for broker connection pools in celery, so this is something you need to be aware of when sending more than one task at a time, as rr}r (h$XCurrently there is no support for broker connection pools in celery, so this is something you need to be aware of when sending more than one task at a time, as h%jubh)r!}r"(h$X``apply_async``h-}r#(h/]h0]h1]h2]h4]uh%jh]r$h@X apply_asyncr%r&}r'(h$Uh%j!ubah+hubh@X/r(}r)(h$X/h%jubh)r*}r+(h$X ``delay``h-}r,(h/]h0]h1]h2]h4]uh%jh]r-h@Xdelayr.r/}r0(h$Uh%j*ubah+hubh@X0 establishes and closes a connection every time.r1r2}r3(h$X0 establishes and closes a connection every time.h%jubeubhZ)r4}r5(h$XIf you need to send more than one task at the same time, it's a good idea to establish the connection yourself and pass it to ``apply_async``:h%j h&h)h+hkh-}r6(h/]h0]h1]h2]h4]uh6Kxh7hh]r7(h@X~If you need to send more than one task at the same time, it's a good idea to establish the connection yourself and pass it to r8r9}r:(h$X~If you need to send more than one task at the same time, it's a good idea to establish the connection yourself and pass it to h%j4ubh)r;}r<(h$X``apply_async``h-}r=(h/]h0]h1]h2]h4]uh%j4h]r>h@X apply_asyncr?r@}rA(h$Uh%j;ubah+hubh@X:rB}rC(h$X:h%j4ubeubj)rD}rE(h$X9numbers = [(2, 2), (4, 4), (8, 8), (16, 16)] results = [] publisher = add.get_publisher() try: for args in numbers: res = add.apply_async(args=args, publisher=publisher) results.append(res) finally: publisher.close() publisher.connection.close() print([res.get() for res in results])h%j h&h)h+jh-}rF(jjXpythonjj h2]h1]h/]h0]h4]uh6K{h7hh]rGh@X9numbers = [(2, 2), (4, 4), (8, 8), (16, 16)] results = [] publisher = add.get_publisher() try: for args in numbers: res = add.apply_async(args=args, publisher=publisher) results.append(res) finally: publisher.close() publisher.connection.close() print([res.get() for res in results])rHrI}rJ(h$Uh%jDubaubhZ)rK}rL(h$XThe connection timeout is the number of seconds to wait before we give up establishing the connection. You can set this with the ``connect_timeout`` argument to ``apply_async``:h%j h&h)h+hkh-}rM(h/]h0]h1]h2]h4]uh6Kh7hh]rN(h@XThe connection timeout is the number of seconds to wait before we give up establishing the connection. You can set this with the rOrP}rQ(h$XThe connection timeout is the number of seconds to wait before we give up establishing the connection. You can set this with the h%jKubh)rR}rS(h$X``connect_timeout``h-}rT(h/]h0]h1]h2]h4]uh%jKh]rUh@Xconnect_timeoutrVrW}rX(h$Uh%jRubah+hubh@X argument to rYrZ}r[(h$X argument to h%jKubh)r\}r](h$X``apply_async``h-}r^(h/]h0]h1]h2]h4]uh%jKh]r_h@X apply_asyncr`ra}rb(h$Uh%j\ubah+hubh@X:rc}rd(h$X:h%jKubeubj)re}rf(h$X,add.apply_async([10, 10], connect_timeout=3)h%j h&h)h+jh-}rg(jjXpythonjj h2]h1]h/]h0]h4]uh6Kh7hh]rhh@X,add.apply_async([10, 10], connect_timeout=3)rirj}rk(h$Uh%jeubaubhZ)rl}rm(h$X)Or if you handle the connection manually:rnh%j h&h)h+hkh-}ro(h/]h0]h1]h2]h4]uh6Kh7hh]rph@X)Or if you handle the connection manually:rqrr}rs(h$jnh%jlubaubj)rt}ru(h$X0publisher = add.get_publisher(connect_timeout=3)h%j h&h)h+jh-}rv(jjXpythonjj h2]h1]h/]h0]h4]uh6Kh7hh]rwh@X0publisher = add.get_publisher(connect_timeout=3)rxry}rz(h$Uh%jtubaubeubh!)r{}r|(h$Uh%h"h&h)h+h,h-}r}(h/]h0]h1]h2]r~hah4]rh auh6Kh7hh]r(h9)r}r(h$hh%j{h&h)h+h=h-}r(h2]h1]h/]h0]h4]hhuh6Kh7hh]rh@XRouting optionsrr}r(h$hh%jubaubhZ)r}r(h$XCelery uses the AMQP routing mechanisms to route tasks to different workers. You can route tasks using the following entities: exchange, queue and routing key.rh%j{h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]rh@XCelery uses the AMQP routing mechanisms to route tasks to different workers. You can route tasks using the following entities: exchange, queue and routing key.rr}r(h$jh%jubaubhZ)r}r(h$XrMessages (tasks) are sent to exchanges, a queue binds to an exchange with a routing key. Let's look at an example:rh%j{h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]rh@XrMessages (tasks) are sent to exchanges, a queue binds to an exchange with a routing key. Let's look at an example:rr}r(h$jh%jubaubhZ)r}r(h$XbOur application has a lot of tasks, some process video, others process images, and some gather collective intelligence about users. Some of these have higher priority than others so we want to make sure the high priority tasks get sent to powerful machines, while low priority tasks are sent to dedicated machines that can handle these at their own pace.rh%j{h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]rh@XbOur application has a lot of tasks, some process video, others process images, and some gather collective intelligence about users. Some of these have higher priority than others so we want to make sure the high priority tasks get sent to powerful machines, while low priority tasks are sent to dedicated machines that can handle these at their own pace.rr}r(h$jh%jubaubhZ)r}r(h$XFor the sake of example we have only one exchange called ``tasks``. There are different types of exchanges that matches the routing key in different ways, the exchange types are:h%j{h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]r(h@X9For the sake of example we have only one exchange called rr}r(h$X9For the sake of example we have only one exchange called h%jubh)r}r(h$X ``tasks``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xtasksrr}r(h$Uh%jubah+hubh@Xp. There are different types of exchanges that matches the routing key in different ways, the exchange types are:rr}r(h$Xp. There are different types of exchanges that matches the routing key in different ways, the exchange types are:h%jubeubhO)r}r(h$Uh%j{h&h)h+hRh-}r(UbulletrX*h2]h1]h/]h0]h4]uh6Kh7hh]r(hU)r}r(h$X+direct Matches the routing key exactly. h%jh&h)h+hlh-}r(h/]h0]h1]h2]h4]uh6Nh7hh]r(hZ)r}r(h$Xdirectrh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh]rh@Xdirectrr}r(h$jh%jubaubcdocutils.nodes block_quote r)r}r(h$Uh-}r(h/]h0]h1]h2]h4]uh%jh]rhZ)r}r(h$X Matches the routing key exactly.rh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh]rh@X Matches the routing key exactly.rr}r(h$jh%jubaubah+U block_quoterubeubhU)r}r(h$XTtopic In the topic exchange the routing key is made up of words separated by dots (``.``). Words can be matched by the wild cards ``*`` and ``#``, where ``*`` matches one exact word, and ``#`` matches one or many. For example, ``*.stock.#`` matches the routing keys ``usd.stock`` and ``euro.stock.db`` but not ``stock.nasdaq``. h%jh&h)h+hlh-}r(h/]h0]h1]h2]h4]uh6Nh7hh]r(hZ)r}r(h$Xtopicrh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh]rh@Xtopicrr}r(h$jh%jubaubj)r}r(h$Uh-}r(h/]h0]h1]h2]h4]uh%jh]r(hZ)r}r(h$XIn the topic exchange the routing key is made up of words separated by dots (``.``). Words can be matched by the wild cards ``*`` and ``#``, where ``*`` matches one exact word, and ``#`` matches one or many.h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh]r(h@XMIn the topic exchange the routing key is made up of words separated by dots (rr}r(h$XMIn the topic exchange the routing key is made up of words separated by dots (h%jubh)r}r(h$X``.``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X.r}r(h$Uh%jubah+hubh@X*). Words can be matched by the wild cards rr}r(h$X*). Words can be matched by the wild cards h%jubh)r}r(h$X``*``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X*r}r(h$Uh%jubah+hubh@X and rr}r(h$X and h%jubh)r}r(h$X``#``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X#r}r(h$Uh%jubah+hubh@X, where rr}r(h$X, where h%jubh)r}r(h$X``*``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X*r}r(h$Uh%jubah+hubh@X matches one exact word, and rr }r (h$X matches one exact word, and h%jubh)r }r (h$X``#``h-}r (h/]h0]h1]h2]h4]uh%jh]rh@X#r}r(h$Uh%j ubah+hubh@X matches one or many.rr}r(h$X matches one or many.h%jubeubhZ)r}r(h$XqFor example, ``*.stock.#`` matches the routing keys ``usd.stock`` and ``euro.stock.db`` but not ``stock.nasdaq``.h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh]r(h@X For example, rr}r(h$X For example, h%jubh)r}r(h$X ``*.stock.#``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X *.stock.#rr }r!(h$Uh%jubah+hubh@X matches the routing keys r"r#}r$(h$X matches the routing keys h%jubh)r%}r&(h$X ``usd.stock``h-}r'(h/]h0]h1]h2]h4]uh%jh]r(h@X usd.stockr)r*}r+(h$Uh%j%ubah+hubh@X and r,r-}r.(h$X and h%jubh)r/}r0(h$X``euro.stock.db``h-}r1(h/]h0]h1]h2]h4]uh%jh]r2h@X euro.stock.dbr3r4}r5(h$Uh%j/ubah+hubh@X but not r6r7}r8(h$X but not h%jubh)r9}r:(h$X``stock.nasdaq``h-}r;(h/]h0]h1]h2]h4]uh%jh]r<h@X stock.nasdaqr=r>}r?(h$Uh%j9ubah+hubh@X.r@}rA(h$X.h%jubeubeh+jubeubeubhZ)rB}rC(h$XG(there are also other exchange types, but these are not used by celery)rDh%j{h&h)h+hkh-}rE(h/]h0]h1]h2]h4]uh6Kh7hh]rFh@XG(there are also other exchange types, but these are not used by celery)rGrH}rI(h$jDh%jBubaubhZ)rJ}rK(h$XSo, we create three queues, ``video``, ``image`` and ``lowpri`` that bind to our ``tasks`` exchange. For the queues we use the following binding keys::h%j{h&h)h+hkh-}rL(h/]h0]h1]h2]h4]uh6Kh7hh]rM(h@XSo, we create three queues, rNrO}rP(h$XSo, we create three queues, h%jJubh)rQ}rR(h$X ``video``h-}rS(h/]h0]h1]h2]h4]uh%jJh]rTh@XvideorUrV}rW(h$Uh%jQubah+hubh@X, rXrY}rZ(h$X, h%jJubh)r[}r\(h$X ``image``h-}r](h/]h0]h1]h2]h4]uh%jJh]r^h@Ximager_r`}ra(h$Uh%j[ubah+hubh@X and rbrc}rd(h$X and h%jJubh)re}rf(h$X ``lowpri``h-}rg(h/]h0]h1]h2]h4]uh%jJh]rhh@Xlowpririrj}rk(h$Uh%jeubah+hubh@X that bind to our rlrm}rn(h$X that bind to our h%jJubh)ro}rp(h$X ``tasks``h-}rq(h/]h0]h1]h2]h4]uh%jJh]rrh@Xtasksrsrt}ru(h$Uh%joubah+hubh@X< exchange. For the queues we use the following binding keys:rvrw}rx(h$X< exchange. For the queues we use the following binding keys:h%jJubeubj)ry}rz(h$X,video: video.# image: image.# lowpri: misc.#h%j{h&h)h+jh-}r{(jj h2]h1]h/]h0]h4]uh6Kh7hh]r|h@X,video: video.# image: image.# lowpri: misc.#r}r~}r(h$Uh%jyubaubhZ)r}r(h$XiNow we can send our tasks to different worker machines, by making the workers listen to different queues:rh%j{h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]rh@XiNow we can send our tasks to different worker machines, by making the workers listen to different queues:rr}r(h$jh%jubaubj)r}r(h$X>>> CompressVideoTask.apply_async(args=[filename], ... routing_key="video.compress") >>> ImageRotateTask.apply_async(args=[filename, 360], ... routing_key="image.rotate") >>> ImageCropTask.apply_async(args=[filename, selection], ... routing_key="image.crop") >>> UpdateReccomendationsTask.apply_async(routing_key="misc.recommend")h%j{h&h)h+jh-}r(jjXpythonjj h2]h1]h/]h0]h4]uh6Kh7hh]rh@X>>> CompressVideoTask.apply_async(args=[filename], ... routing_key="video.compress") >>> ImageRotateTask.apply_async(args=[filename, 360], ... routing_key="image.rotate") >>> ImageCropTask.apply_async(args=[filename, selection], ... routing_key="image.crop") >>> UpdateReccomendationsTask.apply_async(routing_key="misc.recommend")rr}r(h$Uh%jubaubhZ)r}r(h$XLater, if the crop task is consuming a lot of resources, we can bind some new workers to handle just the ``"image.crop"`` task, by creating a new queue that binds to ``"image.crop``".h%j{h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]r(h@XiLater, if the crop task is consuming a lot of resources, we can bind some new workers to handle just the rr}r(h$XiLater, if the crop task is consuming a lot of resources, we can bind some new workers to handle just the h%jubh)r}r(h$X``"image.crop"``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X "image.crop"rr}r(h$Uh%jubah+hubh@X- task, by creating a new queue that binds to rr}r(h$X- task, by creating a new queue that binds to h%jubh)r}r(h$X``"image.crop``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X "image.croprr}r(h$Uh%jubah+hubh@X".rr}r(h$X".h%jubeubeubh!)r}r(h$Uh%h"h&h)h+h,h-}r(h/]h0]h1]h2]rhah4]rh auh6Kh7hh]r(h9)r}r(h$hh%jh&h)h+h=h-}r(h2]h1]h/]h0]h4]hhuh6Kh7hh]rh@X AMQP optionsrr}r(h$hh%jubaubhZ)r}r(h$Xb**NOTE** The ``mandatory`` and ``immediate`` flags are not supported by ``amqplib`` at this point.h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]r(cdocutils.nodes strong r)r}r(h$X**NOTE**h-}r(h/]h0]h1]h2]h4]uh%jh]rh@XNOTErr}r(h$Uh%jubah+Ustrongrubh@X The rr}r(h$X The h%jubh)r}r(h$X ``mandatory``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X mandatoryrr}r(h$Uh%jubah+hubh@X and rr}r(h$X and h%jubh)r}r(h$X ``immediate``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X immediaterr}r(h$Uh%jubah+hubh@X flags are not supported by rr}r(h$X flags are not supported by h%jubh)r}r(h$X ``amqplib``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xamqplibrr}r(h$Uh%jubah+hubh@X at this point.rr}r(h$X at this point.h%jubeubhO)r}r(h$Uh%jh&h)h+hRh-}r(jX*h2]h1]h/]h0]h4]uh6Kh7hh]rhU)r}r(h$X mandatory h%jh&h)h+hlh-}r(h/]h0]h1]h2]h4]uh6Nh7hh]rhZ)r}r(h$X mandatoryrh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh]rh@X mandatoryrr}r(h$jh%jubaubaubaubhZ)r}r(h$X}This sets the delivery to be mandatory. An exception will be raised if there are no running workers able to take on the task.rh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]rh@X}This sets the delivery to be mandatory. An exception will be raised if there are no running workers able to take on the task.rr}r(h$jh%jubaubhO)r}r(h$Uh%jh&h)h+hRh-}r(jX*h2]h1]h/]h0]h4]uh6Kh7hh]rhU)r}r(h$X immediate h%jh&h)h+hlh-}r(h/]h0]h1]h2]h4]uh6Nh7hh]rhZ)r}r(h$X immediaterh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh]r h@X immediater r }r (h$jh%jubaubaubaubhZ)r }r(h$XiRequest immediate delivery. Will raise an exception if the task cannot be routed to a worker immediately.rh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]rh@XiRequest immediate delivery. Will raise an exception if the task cannot be routed to a worker immediately.rr}r(h$jh%j ubaubhO)r}r(h$Uh%jh&h)h+hRh-}r(jX*h2]h1]h/]h0]h4]uh6Kh7hh]rhU)r}r(h$X priority h%jh&h)h+hlh-}r(h/]h0]h1]h2]h4]uh6Nh7hh]rhZ)r}r(h$Xpriorityrh%jh&h)h+hkh-}r (h/]h0]h1]h2]h4]uh6Kh]r!h@Xpriorityr"r#}r$(h$jh%jubaubaubaubhZ)r%}r&(h$XA number between ``0`` and ``9``, where ``0`` is the highest priority. Note that RabbitMQ does not implement AMQP priorities, and maybe your broker does not either, consult your broker's documentation for more information.h%jh&h)h+hkh-}r'(h/]h0]h1]h2]h4]uh6Kh7hh]r((h@XA number between r)r*}r+(h$XA number between h%j%ubh)r,}r-(h$X``0``h-}r.(h/]h0]h1]h2]h4]uh%j%h]r/h@X0r0}r1(h$Uh%j,ubah+hubh@X and r2r3}r4(h$X and h%j%ubh)r5}r6(h$X``9``h-}r7(h/]h0]h1]h2]h4]uh%j%h]r8h@X9r9}r:(h$Uh%j5ubah+hubh@X, where r;r<}r=(h$X, where h%j%ubh)r>}r?(h$X``0``h-}r@(h/]h0]h1]h2]h4]uh%j%h]rAh@X0rB}rC(h$Uh%j>ubah+hubh@X is the highest priority. Note that RabbitMQ does not implement AMQP priorities, and maybe your broker does not either, consult your broker's documentation for more information.rDrE}rF(h$X is the highest priority. Note that RabbitMQ does not implement AMQP priorities, and maybe your broker does not either, consult your broker's documentation for more information.h%j%ubeubeubeubah$UU transformerrGNU footnote_refsrH}rIUrefnamesrJ}rKUsymbol_footnotesrL]rMUautofootnote_refsrN]rOUsymbol_footnote_refsrP]rQU citationsrR]rSh7hU current_linerTNUtransform_messagesrU]rVUreporterrWNUid_startrXKU autofootnotesrY]rZU citation_refsr[}r\Uindirect_targetsr]]r^Usettingsr_(cdocutils.frontend Values r`ora}rb(Ufootnote_backlinksrcKUrecord_dependenciesrdNU rfc_base_urlreUhttp://tools.ietf.org/html/rfU tracebackrgUpep_referencesrhNUstrip_commentsriNU toc_backlinksrjUentryrkU language_coderlUenrmU datestamprnNU report_levelroKU _destinationrpNU halt_levelrqKU strip_classesrrNh=NUerror_encoding_error_handlerrsUbackslashreplacertUdebugruNUembed_stylesheetrvUoutput_encoding_error_handlerrwUstrictrxU sectnum_xformryKUdump_transformsrzNU docinfo_xformr{KUwarning_streamr|NUpep_file_url_templater}Upep-%04dr~Uexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUQ/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/executing.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjxUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhjhhhhyhuhhhhhj{hhhdh`hjhjhh"hj hhEuUsubstitution_namesr}rh+h7h-}r(h/]h2]h1]Usourceh)h0]h4]uU footnotesr]rUrefidsr}rub.PKHDD#lǒ5celery-2.0-archived/.doctrees/userguide/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qX user guideqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU user-guideqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXM/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX User Guideq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X User Guideq3q4}q5(hh.hh,ubaubcdocutils.nodes field_list q6)q7}q8(hUhhhhhU field_listq9h}q:(h!]h"]h#]h$]h&]uh(Kh)hh]q;(cdocutils.nodes field q<)q=}q>(hUhh7hhhUfieldq?h}q@(h!]h"]h#]h$]h&]uh(Kh)hh]qA(cdocutils.nodes field_name qB)qC}qD(hXReleaseqEh}qF(h!]h"]h#]h$]h&]uhh=h]qGh2XReleaseqHqI}qJ(hhEhhCubahU field_nameqKubcdocutils.nodes field_body qL)qM}qN(hX |version|qOh}qP(h!]h"]h#]h$]h&]uhh=h]qQcdocutils.nodes paragraph qR)qS}qT(hhOhhMhhhU paragraphqUh}qV(h!]h"]h#]h$]h&]uh(Kh]qWh2X2.0qXqY}qZ(hU2.0q[hhSubaubahU field_bodyq\ubeubh<)q]}q^(hUhh7hhhh?h}q_(h!]h"]h#]h$]h&]uh(Kh)hh]q`(hB)qa}qb(hXDateqch}qd(h!]h"]h#]h$]h&]uhh]h]qeh2XDateqfqg}qh(hhchhaubahhKubhL)qi}qj(hX|today| h}qk(h!]h"]h#]h$]h&]uhh]h]qlhR)qm}qn(hX|today|qohhihhhhUh}qp(h!]h"]h#]h$]h&]uh(Kh]qqh2XFebruary 04, 2014qrqs}qt(hXFebruary 04, 2014hhmubaubahh\ubeubeubcdocutils.nodes compound qu)qv}qw(hUhhhhhUcompoundqxh}qy(h!]h"]qzUtoctree-wrapperq{ah#]h$]h&]uh(Nh)hh]q|csphinx.addnodes toctree q})q~}q(hUhhvhhhUtoctreeqh}q(UnumberedqKU includehiddenqhXuserguide/indexqU titlesonlyqUglobqh$]h#]h!]h"]h&]Uentriesq]q(NXuserguide/tasksqqNXuserguide/executingqqNXuserguide/workersqqNXuserguide/tasksetsqqNXuserguide/remote-tasksqqNXuserguide/routingqqeUhiddenqU includefilesq]q(hhhhhheUmaxdepthqKuh(Kh]ubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqȉUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqԈUtrim_footnote_reference_spaceqՉUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqىU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUM/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]rUrefidsr}rub.PKHDDCAA5celery-2.0-archived/.doctrees/userguide/tasks.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XtasksqNX task optionsqNXblog/models.pyqNX blog/views.pyq NXmessage and routing optionsq NXperformance and strategiesq NXdatabase transactionsq NXdefault keyword argumentsq NXtips and best practicesqNXignore results you don't wantqNX'disable rate limits if they're not usedqNUcontentsqNX blog/tasks.pyqNXstateqNXakismetqXusing a custom retry delayqNX memcachedqX how it worksqNX data localityqNX granularityqNXbasicsqNXloggingqNX$avoid launching synchronous subtasksqNX"retrying a task if something failsqNX akismet.pyqXexampleqNuUsubstitution_defsq }q!Uparse_messagesq"]q#Ucurrent_sourceq$NU decorationq%NUautofootnote_startq&KUnameidsq'}q((hUtasksq)hU task-optionsq*hUblog-models-pyq+h U blog-views-pyq,h Umessage-and-routing-optionsq-h Uperformance-and-strategiesq.h Udatabase-transactionsq/h Udefault-keyword-argumentsq0hUtips-and-best-practicesq1hUignore-results-you-don-t-wantq2hU'disable-rate-limits-if-they-re-not-usedq3hUcontentsq4hU blog-tasks-pyq5hUstateq6hUakismetq7hUusing-a-custom-retry-delayq8hU memcachedq9hU how-it-worksq:hU data-localityq;hU granularityqhU$avoid-launching-synchronous-subtasksq?hU"retrying-a-task-if-something-failsq@hU akismet-pyqAhUexampleqBuUchildrenqC]qDcdocutils.nodes section qE)qF}qG(U rawsourceqHUUparentqIhUsourceqJcdocutils.nodes reprunicode qKXM/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/tasks.rstqLqM}qNbUtagnameqOUsectionqPU attributesqQ}qR(UdupnamesqS]UclassesqT]UbackrefsqU]UidsqV]qW(Xmodule-celery.task.baseqXh)eUnamesqY]qZhauUlineq[KUdocumentq\hhC]q](cdocutils.nodes title q^)q_}q`(hHXTasksqahIhFhJhMhOUtitleqbhQ}qc(hS]hT]hU]hV]hY]uh[Kh\hhC]qdcdocutils.nodes Text qeXTasksqfqg}qh(hHhahIh_ubaubcsphinx.addnodes index qi)qj}qk(hHUhIhFhJhMhOUindexqlhQ}qm(hV]hU]hS]hT]hY]Uentries]qn(UsingleqoXcelery.task.base (module)Xmodule-celery.task.baseUtqpauh[Kh\hhC]ubcdocutils.nodes topic qq)qr}qs(hHUhIhFhJhMhOUtopicqthQ}qu(hS]hT]qv(UcontentsqwUlocalqxehU]hV]qyh4ahY]qzhauh[Kh\hhC]q{cdocutils.nodes bullet_list q|)q}}q~(hHUhIhrhJNhOU bullet_listqhQ}q(hS]hT]hU]hV]hY]uh[Nh\hhC]q(cdocutils.nodes list_item q)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIh}hC]qcdocutils.nodes paragraph q)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qcdocutils.nodes reference q)q}q(hHUhQ}q(hV]qUid1qahU]hS]hT]hY]Urefidh=uhIhhC]qheXBasicsqq}q(hHXBasicsqhIhubahOU referencequbahOU paragraphqubahOU list_itemqubh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIh}hC]qh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)q}q(hHUhQ}q(hV]qUid2qahU]hS]hT]hY]Urefidh0uhIhhC]qheXDefault keyword argumentsqq}q(hHXDefault keyword argumentsqhIhubahOhubahOhubahOhubh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIh}hC]qh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)q}q(hHUhQ}q(hV]qUid3qahU]hS]hT]hY]Urefidh>uhIhhC]qheXLoggingqq}q(hHXLoggingqhIhubahOhubahOhubahOhubh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIh}hC]q(h)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)q}q(hHUhQ}q(hV]qUid4qahU]hS]hT]hY]Urefidh@uhIhhC]qheX"Retrying a task if something failsq̅q}q(hHX"Retrying a task if something failsqhIhubahOhubahOhubh|)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)q}q(hHUhQ}q(hV]qUid5qahU]hS]hT]hY]Urefidh8uhIhhC]qheXUsing a custom retry delayq⅁q}q(hHXUsing a custom retry delayqhIhubahOhubahOhubahOhubahOhubehOhubh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIh}hC]q(h)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)q}q(hHUhQ}q(hV]qUid6qahU]hS]hT]hY]Urefidh*uhIhhC]qheX Task optionsqq}q(hHX Task optionsqhIhubahOhubahOhubh|)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)q}q(hHUhQ}q(hS]hT]hU]hV]hY]uhIhhC]qh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIhhC]rh)r}r(hHUhQ}r(hV]rUid7rahU]hS]hT]hY]Urefidh-uhIjhC]r heXMessage and routing optionsr r }r (hHXMessage and routing optionsr hIjubahOhubahOhubahOhubahOhubehOhubh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIh}hC]r(h)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHUhQ}r(hV]rUid8rahU]hS]hT]hY]UrefidhBuhIjhC]rheXExamplerr}r(hHXExamplerhIjubahOhubahOhubh|)r }r!(hHUhQ}r"(hS]hT]hU]hV]hY]uhIjhC]r#(h)r$}r%(hHUhQ}r&(hS]hT]hU]hV]hY]uhIj hC]r'h)r(}r)(hHUhQ}r*(hS]hT]hU]hV]hY]uhIj$hC]r+h)r,}r-(hHUhQ}r.(hV]r/Uid9r0ahU]hS]hT]hY]Urefidh+uhIj(hC]r1heXblog/models.pyr2r3}r4(hHXblog/models.pyr5hIj,ubahOhubahOhubahOhubh)r6}r7(hHUhQ}r8(hS]hT]hU]hV]hY]uhIj hC]r9h)r:}r;(hHUhQ}r<(hS]hT]hU]hV]hY]uhIj6hC]r=h)r>}r?(hHUhQ}r@(hV]rAUid10rBahU]hS]hT]hY]Urefidh,uhIj:hC]rCheX blog/views.pyrDrE}rF(hHX blog/views.pyrGhIj>ubahOhubahOhubahOhubh)rH}rI(hHUhQ}rJ(hS]hT]hU]hV]hY]uhIj hC]rKh)rL}rM(hHUhQ}rN(hS]hT]hU]hV]hY]uhIjHhC]rOh)rP}rQ(hHUhQ}rR(hV]rSUid11rTahU]hS]hT]hY]Urefidh5uhIjLhC]rUheX blog/tasks.pyrVrW}rX(hHX blog/tasks.pyrYhIjPubahOhubahOhubahOhubehOhubehOhubh)rZ}r[(hHUhQ}r\(hS]hT]hU]hV]hY]uhIh}hC]r]h)r^}r_(hHUhQ}r`(hS]hT]hU]hV]hY]uhIjZhC]rah)rb}rc(hHUhQ}rd(hV]reUid12rfahU]hS]hT]hY]Urefidh:uhIj^hC]rgheX How it worksrhri}rj(hHX How it worksrkhIjbubahOhubahOhubahOhubh)rl}rm(hHUhQ}rn(hS]hT]hU]hV]hY]uhIh}hC]ro(h)rp}rq(hHUhQ}rr(hS]hT]hU]hV]hY]uhIjlhC]rsh)rt}ru(hHUhQ}rv(hV]rwUid13rxahU]hS]hT]hY]Urefidh1uhIjphC]ryheXTips and Best Practicesrzr{}r|(hHXTips and Best Practicesr}hIjtubahOhubahOhubh|)r~}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjlhC]r(h)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIj~hC]rh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHUhQ}r(hV]rUid14rahU]hS]hT]hY]Urefidh2uhIjhC]rheXIgnore results you don't wantrr}r(hHXIgnore results you don't wantrhIjubahOhubahOhubahOhubh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIj~hC]rh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHUhQ}r(hV]rUid15rahU]hS]hT]hY]Urefidh3uhIjhC]rheX'Disable rate limits if they're not usedrr}r(hHX'Disable rate limits if they're not usedrhIjubahOhubahOhubahOhubh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIj~hC]rh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHUhQ}r(hV]rUid16rahU]hS]hT]hY]Urefidh?uhIjhC]rheX$Avoid launching synchronous subtasksrr}r(hHX$Avoid launching synchronous subtasksrhIjubahOhubahOhubahOhubehOhubehOhubh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIh}hC]r(h)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHUhQ}r(hV]rUid17rahU]hS]hT]hY]Urefidh.uhIjhC]rheXPerformance and Strategiesrr}r(hHXPerformance and StrategiesrhIjubahOhubahOhubh|)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]r(h)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHUhQ}r(hV]rUid18rahU]hS]hT]hY]Urefidhr?}r@(hHX and hIj$ubj+)rA}rB(hHX ``password``hQ}rC(hS]hT]hU]hV]hY]uhIj$hC]rDheXpasswordrErF}rG(hHUhIjAubahOj3ubheX", you can create a task like this:rHrI}rJ(hHX", you can create a task like this:hIj$ubeubcdocutils.nodes literal_block rK)rL}rM(hHXfrom celery.task import Task class CreateUserTask(Task): def run(self, username, password): create_user(username, password)hIjhJhMhOU literal_blockrNhQ}rO(UlinenosrPUlanguagerQXpythonU xml:spacerRUpreserverShV]hU]hS]hT]hY]uh[Kh\hhC]rTheXfrom celery.task import Task class CreateUserTask(Task): def run(self, username, password): create_user(username, password)rUrV}rW(hHUhIjLubaubh)rX}rY(hHXrFor convenience there is a shortcut decorator that turns any function into a task, :func:`celery.decorators.task`:hIjhJhMhOhhQ}rZ(hS]hT]hU]hV]hY]uh[Kh\hhC]r[(heXSFor convenience there is a shortcut decorator that turns any function into a task, r\r]}r^(hHXSFor convenience there is a shortcut decorator that turns any function into a task, hIjXubcsphinx.addnodes pending_xref r_)r`}ra(hHX:func:`celery.decorators.task`rbhIjXhJhMhOU pending_xrefrchQ}rd(UreftypeXfuncUrefwarnreU reftargetrfXcelery.decorators.taskU refdomainXpyrghV]hU]U refexplicithS]hT]hY]UrefdocrhXuserguide/tasksriUpy:classrjNU py:modulerkXcelery.task.baserluh[KhC]rmj+)rn}ro(hHjbhQ}rp(hS]hT]rq(UxrefrrjgXpy-funcrsehU]hV]hY]uhIj`hC]rtheXcelery.decorators.task()rurv}rw(hHUhIjnubahOj3ubaubheX:rx}ry(hHX:hIjXubeubjK)rz}r{(hHXfrom celery.decorators import task from django.contrib.auth import User @task def create_user(username, password): User.objects.create(username=username, password=password)hIjhJhMhOjNhQ}r|(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Kh\hhC]r}heXfrom celery.decorators import task from django.contrib.auth import User @task def create_user(username, password): User.objects.create(username=username, password=password)r~r}r(hHUhIjzubaubh)r}r(hHXfThe task decorator takes the same execution options as the :class:`~celery.task.base.Task` class does:hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[K%h\hhC]r(heX;The task decorator takes the same execution options as the rr}r(hHX;The task decorator takes the same execution options as the hIjubj_)r}r(hHX:class:`~celery.task.base.Task`rhIjhJhMhOjchQ}r(UreftypeXclassjejfXcelery.task.base.TaskU refdomainXpyrhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[K%hC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjXpy-classrehU]hV]hY]uhIjhC]rheXTaskrr}r(hHUhIjubahOj3ubaubheX class does:rr}r(hHX class does:hIjubeubjK)r}r(hHX{@task(serializer="json") def create_user(username, password): User.objects.create(username=username, password=password)hIjhJhMhOjNhQ}r(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[K(h\hhC]rheX{@task(serializer="json") def create_user(username, password): User.objects.create(username=username, password=password)rr}r(hHUhIjubaubeubhE)r}r(hHUhIhFhJhMhOhPhQ}r(hS]hT]hU]hV]rh0ahY]rh auh[K0h\hhC]r(h^)r}r(hHhhIjhJhMhOhbhQ}r(hV]hU]hS]hT]hY]jhuh[K0h\hhC]rheXDefault keyword argumentsrr}r(hHhhIjubaubh)r}r(hHXCelery supports a set of default arguments that can be forwarded to any task. Tasks can choose not to take these, or list the ones they want. The worker will do the right thing.rhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[K2h\hhC]rheXCelery supports a set of default arguments that can be forwarded to any task. Tasks can choose not to take these, or list the ones they want. The worker will do the right thing.rr}r(hHjhIjubaubh)r}r(hHX*The current default keyword arguments are:rhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[K6h\hhC]rheX*The current default keyword arguments are:rr}r(hHjhIjubaubh|)r}r(hHUhIjhJhMhOhhQ}r(UbulletrX*hV]hU]hS]hT]hY]uh[K8h\hhC]r(h)r}r(hHXlogfile The log file, can be passed on to :meth:`~celery.task.base.Task.get_logger` to gain access to the workers log file. See `Logging`_. hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]r(h)r}r(hHXlogfilerhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[K8hC]rheXlogfilerr}r(hHjhIjubaubcdocutils.nodes block_quote r)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHXThe log file, can be passed on to :meth:`~celery.task.base.Task.get_logger` to gain access to the workers log file. See `Logging`_.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[K:hC]r(heX"The log file, can be passed on to rr}r(hHX"The log file, can be passed on to hIjubj_)r}r(hHX):meth:`~celery.task.base.Task.get_logger`rhIjhJhMhOjchQ}r(UreftypeXmethjejfX celery.task.base.Task.get_loggerU refdomainXpyrhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[K:hC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjXpy-methrehU]hV]hY]uhIjhC]rheX get_logger()rr}r(hHUhIjubahOj3ubaubheX- to gain access to the workers log file. See rr}r(hHX- to gain access to the workers log file. See hIjubh)r}r(hHX `Logging`_UresolvedrKhIjhOhhQ}r(UnameXLogginghV]hU]hS]hT]hY]jh>uhC]rheXLoggingrr}r(hHUhIjubaubheX.r}r(hHX.hIjubeubahOU block_quoterubeubh)r}r(hHXloglevel The loglevel used. hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]r(h)r}r(hHXloglevelrhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[K>hC]rheXloglevelrr}r(hHjhIjubaubj)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r (hHXThe loglevel used.r hIjhJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[K@hC]r heXThe loglevel used.r r}r(hHj hIjubaubahOjubeubh)r}r(hHX0task_id The unique id of the executing task. hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]r(h)r}r(hHXtask_idrhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KBhC]rheXtask_idrr}r(hHjhIjubaubj)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r }r!(hHX$The unique id of the executing task.r"hIjhJhMhOhhQ}r#(hS]hT]hU]hV]hY]uh[KDhC]r$heX$The unique id of the executing task.r%r&}r'(hHj"hIj ubaubahOjubeubh)r(}r)(hHX)task_name Name of the executing task. hIjhJhMhOhhQ}r*(hS]hT]hU]hV]hY]uh[Nh\hhC]r+(h)r,}r-(hHX task_namer.hIj(hJhMhOhhQ}r/(hS]hT]hU]hV]hY]uh[KFhC]r0heX task_namer1r2}r3(hHj.hIj,ubaubj)r4}r5(hHUhQ}r6(hS]hT]hU]hV]hY]uhIj(hC]r7h)r8}r9(hHXName of the executing task.r:hIj4hJhMhOhhQ}r;(hS]hT]hU]hV]hY]uh[KHhC]r<heXName of the executing task.r=r>}r?(hHj:hIj8ubaubahOjubeubh)r@}rA(hHXbtask_retries How many times the current task has been retried. An integer starting at ``0``. hIjhJhMhOhhQ}rB(hS]hT]hU]hV]hY]uh[Nh\hhC]rC(h)rD}rE(hHX task_retriesrFhIj@hJhMhOhhQ}rG(hS]hT]hU]hV]hY]uh[KJhC]rHheX task_retriesrIrJ}rK(hHjFhIjDubaubj)rL}rM(hHUhQ}rN(hS]hT]hU]hV]hY]uhIj@hC]rOh)rP}rQ(hHXOHow many times the current task has been retried. An integer starting at ``0``.hIjLhJhMhOhhQ}rR(hS]hT]hU]hV]hY]uh[KLhC]rS(heXIHow many times the current task has been retried. An integer starting at rTrU}rV(hHXIHow many times the current task has been retried. An integer starting at hIjPubj+)rW}rX(hHX``0``hQ}rY(hS]hT]hU]hV]hY]uhIjPhC]rZheX0r[}r\(hHUhIjWubahOj3ubheX.r]}r^(hHX.hIjPubeubahOjubeubh)r_}r`(hHXltask_is_eager Set to :const:`True` if the task is executed locally in the client, and not by a worker. hIjhJhMhOhhQ}ra(hS]hT]hU]hV]hY]uh[Nh\hhC]rb(h)rc}rd(hHX task_is_eagerrehIj_hJhMhOhhQ}rf(hS]hT]hU]hV]hY]uh[KOhC]rgheX task_is_eagerrhri}rj(hHjehIjcubaubj)rk}rl(hHUhQ}rm(hS]hT]hU]hV]hY]uhIj_hC]rnh)ro}rp(hHXXSet to :const:`True` if the task is executed locally in the client, and not by a worker.hIjkhJhMhOhhQ}rq(hS]hT]hU]hV]hY]uh[KQhC]rr(heXSet to rsrt}ru(hHXSet to hIjoubj_)rv}rw(hHX :const:`True`rxhIjohJhMhOjchQ}ry(UreftypeXconstjejfXTrueU refdomainXpyrzhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KQhC]r{j+)r|}r}(hHjxhQ}r~(hS]hT]r(jrjzXpy-constrehU]hV]hY]uhIjvhC]rheXTruerr}r(hHUhIj|ubahOj3ubaubheXD if the task is executed locally in the client, and not by a worker.rr}r(hHXD if the task is executed locally in the client, and not by a worker.hIjoubeubahOjubeubh)r}r(hHXdelivery_info Additional message delivery information. This is a mapping containing the exchange and routing key used to deliver this task. It's used by e.g. :meth:`~celery.task.base.Task.retry` to resend the task to the same destination queue. **NOTE** As some messaging backends doesn't have advanced routing capabilities, you can't trust the availability of keys in this mapping. hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]r(h)r}r(hHX delivery_inforhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KThC]rheX delivery_inforr}r(hHjhIjubaubh)r}r(hHXAdditional message delivery information. This is a mapping containing the exchange and routing key used to deliver this task. It's used by e.g. :meth:`~celery.task.base.Task.retry` to resend the task to the same destination queue.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KVhC]r(heXAdditional message delivery information. This is a mapping containing the exchange and routing key used to deliver this task. It's used by e.g. rr}r(hHXAdditional message delivery information. This is a mapping containing the exchange and routing key used to deliver this task. It's used by e.g. hIjubj_)r}r(hHX$:meth:`~celery.task.base.Task.retry`rhIjhJhMhOjchQ}r(UreftypeXmethjejfXcelery.task.base.Task.retryU refdomainXpyrhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KVhC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjXpy-methrehU]hV]hY]uhIjhC]rheXretry()rr}r(hHUhIjubahOj3ubaubheX2 to resend the task to the same destination queue.rr}r(hHX2 to resend the task to the same destination queue.hIjubeubh)r}r(hHX**NOTE** As some messaging backends doesn't have advanced routing capabilities, you can't trust the availability of keys in this mapping.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[K[hC]r(cdocutils.nodes strong r)r}r(hHX**NOTE**hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXNOTErr}r(hHUhIjubahOUstrongrubheX As some messaging backends doesn't have advanced routing capabilities, you can't trust the availability of keys in this mapping.rr}r(hHX As some messaging backends doesn't have advanced routing capabilities, you can't trust the availability of keys in this mapping.hIjubeubeubeubeubhE)r}r(hHUU referencedrKhIhFhJhMhOhPhQ}r(hS]hT]hU]hV]rh>ahY]rhauh[K`h\hhC]r(h^)r}r(hHhhIjhJhMhOhbhQ}r(hV]hU]hS]hT]hY]jhuh[K`h\hhC]rheXLoggingrr}r(hHhhIjubaubh)r}r(hHXJYou can use the workers logger to add diagnostic output to the worker log:rhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Kbh\hhC]rheXJYou can use the workers logger to add diagnostic output to the worker log:rr}r(hHjhIjubaubjK)r}r(hHXclass AddTask(Task): def run(self, x, y, **kwargs): logger = self.get_logger(**kwargs) logger.info("Adding %s + %s" % (x, y)) return x + yhIjhJhMhOjNhQ}r(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Keh\hhC]rheXclass AddTask(Task): def run(self, x, y, **kwargs): logger = self.get_logger(**kwargs) logger.info("Adding %s + %s" % (x, y)) return x + yrr}r(hHUhIjubaubh)r}r(hHXor using the decorator syntax:rhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Knh\hhC]rheXor using the decorator syntax:rr}r(hHjhIjubaubjK)r}r(hHX@task() def add(x, y, **kwargs): logger = add.get_logger(**kwargs) logger.info("Adding %s + %s" % (x, y)) return x + yhIjhJhMhOjNhQ}r(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Kph\hhC]rheX@task() def add(x, y, **kwargs): logger = add.get_logger(**kwargs) logger.info("Adding %s + %s" % (x, y)) return x + yrr}r(hHUhIjubaubh)r}r(hHXThere are several logging levels available, and the workers ``loglevel`` setting decides whether or not they will be written to the log file.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Kxh\hhC]r(heX<There are several logging levels available, and the workers rr}r(hHX<There are several logging levels available, and the workers hIjubj+)r}r(hHX ``loglevel``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXloglevelrr}r(hHUhIjubahOj3ubheXE setting decides whether or not they will be written to the log file.rr}r(hHXE setting decides whether or not they will be written to the log file.hIjubeubh)r}r(hHX}Of course, you can also simply use ``print`` as anything written to standard out/-err will be written to the logfile as well.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[K{h\hhC]r(heX#Of course, you can also simply use rr}r(hHX#Of course, you can also simply use hIjubj+)r}r(hHX ``print``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXprintrr}r(hHUhIjubahOj3ubheXQ as anything written to standard out/-err will be written to the logfile as well.rr }r (hHXQ as anything written to standard out/-err will be written to the logfile as well.hIjubeubeubhE)r }r (hHUhIhFhJhMhOhPhQ}r (hS]hT]hU]hV]rh@ahY]rhauh[Kh\hhC]r(h^)r}r(hHhhIj hJhMhOhbhQ}r(hV]hU]hS]hT]hY]jhuh[Kh\hhC]rheX"Retrying a task if something failsrr}r(hHhhIjubaubh)r}r(hHXSimply use :meth:`~celery.task.base.Task.retry` to re-send the task. It will do the right thing, and respect the :attr:`~celery.task.base.Task.max_retries` attribute:hIj hJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Kh\hhC]r(heX Simply use rr}r(hHX Simply use hIjubj_)r}r (hHX$:meth:`~celery.task.base.Task.retry`r!hIjhJhMhOjchQ}r"(UreftypeXmethjejfXcelery.task.base.Task.retryU refdomainXpyr#hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]r$j+)r%}r&(hHj!hQ}r'(hS]hT]r((jrj#Xpy-methr)ehU]hV]hY]uhIjhC]r*heXretry()r+r,}r-(hHUhIj%ubahOj3ubaubheXB to re-send the task. It will do the right thing, and respect the r.r/}r0(hHXB to re-send the task. It will do the right thing, and respect the hIjubj_)r1}r2(hHX*:attr:`~celery.task.base.Task.max_retries`r3hIjhJhMhOjchQ}r4(UreftypeXattrjejfX!celery.task.base.Task.max_retriesU refdomainXpyr5hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]r6j+)r7}r8(hHj3hQ}r9(hS]hT]r:(jrj5Xpy-attrr;ehU]hV]hY]uhIj1hC]r<heX max_retriesr=r>}r?(hHUhIj7ubahOj3ubaubheX attribute:r@rA}rB(hHX attribute:hIjubeubjK)rC}rD(hHX@task() def send_twitter_status(oauth, tweet, **kwargs): try: twitter = Twitter(oauth) twitter.update_status(tweet) except (Twitter.FailWhaleError, Twitter.LoginError), exc: send_twitter_status.retry(args=[oauth, tweet], kwargs=kwargs, exc=exc)hIj hJhMhOjNhQ}rE(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Kh\hhC]rFheX@task() def send_twitter_status(oauth, tweet, **kwargs): try: twitter = Twitter(oauth) twitter.update_status(tweet) except (Twitter.FailWhaleError, Twitter.LoginError), exc: send_twitter_status.retry(args=[oauth, tweet], kwargs=kwargs, exc=exc)rGrH}rI(hHUhIjCubaubh)rJ}rK(hHXhHere we used the ``exc`` argument to pass the current exception to :meth:`Task.retry`. At each step of the retry this exception is available as the tombstone (result) of the task. When :attr:`Task.max_retries` has been exceeded this is the exception raised. However, if an ``exc`` argument is not provided the :exc:`RetryTaskError` exception is raised instead.hIj hJhMhOhhQ}rL(hS]hT]hU]hV]hY]uh[Kh\hhC]rM(heXHere we used the rNrO}rP(hHXHere we used the hIjJubj+)rQ}rR(hHX``exc``hQ}rS(hS]hT]hU]hV]hY]uhIjJhC]rTheXexcrUrV}rW(hHUhIjQubahOj3ubheX+ argument to pass the current exception to rXrY}rZ(hHX+ argument to pass the current exception to hIjJubj_)r[}r\(hHX:meth:`Task.retry`r]hIjJhJhMhOjchQ}r^(UreftypeXmethjejfX Task.retryU refdomainXpyr_hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]r`j+)ra}rb(hHj]hQ}rc(hS]hT]rd(jrj_Xpy-methreehU]hV]hY]uhIj[hC]rfheX Task.retry()rgrh}ri(hHUhIjaubahOj3ubaubheXd. At each step of the retry this exception is available as the tombstone (result) of the task. When rjrk}rl(hHXd. At each step of the retry this exception is available as the tombstone (result) of the task. When hIjJubj_)rm}rn(hHX:attr:`Task.max_retries`rohIjJhJhMhOjchQ}rp(UreftypeXattrjejfXTask.max_retriesU refdomainXpyrqhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]rrj+)rs}rt(hHjohQ}ru(hS]hT]rv(jrjqXpy-attrrwehU]hV]hY]uhIjmhC]rxheXTask.max_retriesryrz}r{(hHUhIjsubahOj3ubaubheX@ has been exceeded this is the exception raised. However, if an r|r}}r~(hHX@ has been exceeded this is the exception raised. However, if an hIjJubj+)r}r(hHX``exc``hQ}r(hS]hT]hU]hV]hY]uhIjJhC]rheXexcrr}r(hHUhIjubahOj3ubheX argument is not provided the rr}r(hHX argument is not provided the hIjJubj_)r}r(hHX:exc:`RetryTaskError`rhIjJhJhMhOjchQ}r(UreftypeXexcjejfXRetryTaskErrorU refdomainXpyrhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjXpy-excrehU]hV]hY]uhIjhC]rheXRetryTaskErrorrr}r(hHUhIjubahOj3ubaubheX exception is raised instead.rr}r(hHX exception is raised instead.hIjJubeubh)r}r(hHX**Important note:** The task has to take the magic keyword arguments in order for max retries to work properly, this is because it keeps track of the current number of retries using the ``task_retries`` keyword argument passed on to the task. In addition, it also uses the ``task_id`` keyword argument to use the same task id, and ``delivery_info`` to route the retried task to the same destination.hIj hJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Kh\hhC]r(j)r}r(hHX**Important note:**hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXImportant note:rr}r(hHUhIjubahOjubheX The task has to take the magic keyword arguments in order for max retries to work properly, this is because it keeps track of the current number of retries using the rr}r(hHX The task has to take the magic keyword arguments in order for max retries to work properly, this is because it keeps track of the current number of retries using the hIjubj+)r}r(hHX``task_retries``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX task_retriesrr}r(hHUhIjubahOj3ubheXG keyword argument passed on to the task. In addition, it also uses the rr}r(hHXG keyword argument passed on to the task. In addition, it also uses the hIjubj+)r}r(hHX ``task_id``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXtask_idrr}r(hHUhIjubahOj3ubheX/ keyword argument to use the same task id, and rr}r(hHX/ keyword argument to use the same task id, and hIjubj+)r}r(hHX``delivery_info``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX delivery_inforr}r(hHUhIjubahOj3ubheX3 to route the retried task to the same destination.rr}r(hHX3 to route the retried task to the same destination.hIjubeubhE)r}r(hHUhIj hJhMhOhPhQ}r(hS]hT]hU]hV]rh8ahY]rhauh[Kh\hhC]r(h^)r}r(hHhhIjhJhMhOhbhQ}r(hV]hU]hS]hT]hY]jhuh[Kh\hhC]rheXUsing a custom retry delayrr}r(hHhhIjubaubh)r}r(hHXWhen a task is to be retried, it will wait for a given amount of time before doing so. The default delay is in the :attr:`Task.default_retry_delay` attribute on the task. By default this is set to 3 minutes. Note that the unit for setting the delay is in seconds (int or float).hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Kh\hhC]r(heXsWhen a task is to be retried, it will wait for a given amount of time before doing so. The default delay is in the rr}r(hHXsWhen a task is to be retried, it will wait for a given amount of time before doing so. The default delay is in the hIjubj_)r}r(hHX :attr:`Task.default_retry_delay`rhIjhJhMhOjchQ}r(UreftypeXattrjejfXTask.default_retry_delayU refdomainXpyrhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjXpy-attrrehU]hV]hY]uhIjhC]rheXTask.default_retry_delayrr}r(hHUhIjubahOj3ubaubheX attribute on the task. By default this is set to 3 minutes. Note that the unit for setting the delay is in seconds (int or float).rr}r(hHX attribute on the task. By default this is set to 3 minutes. Note that the unit for setting the delay is in seconds (int or float).hIjubeubh)r}r(hHXqYou can also provide the ``countdown`` argument to :meth:`~celery.task.base.Task.retry` to override this default.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Kh\hhC]r(heXYou can also provide the rr}r(hHXYou can also provide the hIjubj+)r}r(hHX ``countdown``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX countdownrr}r(hHUhIjubahOj3ubheX argument to rr}r(hHX argument to hIjubj_)r}r(hHX$:meth:`~celery.task.base.Task.retry`rhIjhJhMhOjchQ}r(UreftypeXmethjejfXcelery.task.base.Task.retryU refdomainXpyrhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjXpy-methrehU]hV]hY]uhIjhC]r heXretry()r r }r (hHUhIjubahOj3ubaubheX to override this default.r r}r(hHX to override this default.hIjubeubjK)r}r(hHXVclass MyTask(Task): default_retry_delay = 30 * 60 # retry in 30 minutes def run(self, x, y, **kwargs): try: ... except Exception, exc: self.retry([x, y], kwargs, exc=exc, countdown=60) # override the default and # - retry in 1 minutehIjhJhMhOjNhQ}r(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Kh\hhC]rheXVclass MyTask(Task): default_retry_delay = 30 * 60 # retry in 30 minutes def run(self, x, y, **kwargs): try: ... except Exception, exc: self.retry([x, y], kwargs, exc=exc, countdown=60) # override the default and # - retry in 1 minuterr}r(hHUhIjubaubeubeubhE)r}r(hHUhIhFhJhMhOhPhQ}r(hS]hT]hU]hV]rh*ahY]rhauh[Kh\hhC]r(h^)r}r(hHhhIjhJhMhOhbhQ}r(hV]hU]hS]hT]hY]jhuh[Kh\hhC]r heX Task optionsr!r"}r#(hHhhIjubaubh|)r$}r%(hHUhIjhJhMhOhhQ}r&(jX*hV]hU]hS]hT]hY]uh[Kh\hhC]r'(h)r(}r)(hHXname The name the task is registered as. You can set this name manually, or just use the default which is automatically generated using the module and class name. hIj$hJhMhOhhQ}r*(hS]hT]hU]hV]hY]uh[Nh\hhC]r+(h)r,}r-(hHXnamer.hIj(hJhMhOhhQ}r/(hS]hT]hU]hV]hY]uh[KhC]r0heXnamer1r2}r3(hHj.hIj,ubaubj)r4}r5(hHUhQ}r6(hS]hT]hU]hV]hY]uhIj(hC]r7h)r8}r9(hHXThe name the task is registered as. You can set this name manually, or just use the default which is automatically generated using the module and class name.r:hIj4hJhMhOhhQ}r;(hS]hT]hU]hV]hY]uh[KhC]r<heXThe name the task is registered as. You can set this name manually, or just use the default which is automatically generated using the module and class name.r=r>}r?(hHj:hIj8ubaubahOjubeubh)r@}rA(hHX}abstract Abstract classes are not registered, but are used as the superclass when making new task types by subclassing. hIj$hJhMhOhhQ}rB(hS]hT]hU]hV]hY]uh[Nh\hhC]rC(h)rD}rE(hHXabstractrFhIj@hJhMhOhhQ}rG(hS]hT]hU]hV]hY]uh[KhC]rHheXabstractrIrJ}rK(hHjFhIjDubaubj)rL}rM(hHUhQ}rN(hS]hT]hU]hV]hY]uhIj@hC]rOh)rP}rQ(hHXnAbstract classes are not registered, but are used as the superclass when making new task types by subclassing.rRhIjLhJhMhOhhQ}rS(hS]hT]hU]hV]hY]uh[KhC]rTheXnAbstract classes are not registered, but are used as the superclass when making new task types by subclassing.rUrV}rW(hHjRhIjPubaubahOjubeubh)rX}rY(hHXmax_retries The maximum number of attempted retries before giving up. If this is exceeded the :exc`~celery.exceptions.MaxRetriesExceeded` exception will be raised. Note that you have to retry manually, it's not something that happens automatically. hIj$hJhMhOhhQ}rZ(hS]hT]hU]hV]hY]uh[Nh\hhC]r[(h)r\}r](hHX max_retriesr^hIjXhJhMhOhhQ}r_(hS]hT]hU]hV]hY]uh[KhC]r`heX max_retriesrarb}rc(hHj^hIj\ubaubj)rd}re(hHUhQ}rf(hS]hT]hU]hV]hY]uhIjXhC]rgh)rh}ri(hHXThe maximum number of attempted retries before giving up. If this is exceeded the :exc`~celery.exceptions.MaxRetriesExceeded` exception will be raised. Note that you have to retry manually, it's not something that happens automatically.rjhIjdhJhMhOhhQ}rk(hS]hT]hU]hV]hY]uh[KhC]rlheXThe maximum number of attempted retries before giving up. If this is exceeded the :exc`~celery.exceptions.MaxRetriesExceeded` exception will be raised. Note that you have to retry manually, it's not something that happens automatically.rmrn}ro(hHjjhIjhubaubahOjubeubh)rp}rq(hHXdefault_retry_delay Default time in seconds before a retry of the task should be executed. Can be either an ``int`` or a ``float``. Default is a 1 minute delay (``60 seconds``). hIj$hJhMhOhhQ}rr(hS]hT]hU]hV]hY]uh[Nh\hhC]rs(h)rt}ru(hHXdefault_retry_delayrvhIjphJhMhOhhQ}rw(hS]hT]hU]hV]hY]uh[KhC]rxheXdefault_retry_delayryrz}r{(hHjvhIjtubaubj)r|}r}(hHUhQ}r~(hS]hT]hU]hV]hY]uhIjphC]rh)r}r(hHXDefault time in seconds before a retry of the task should be executed. Can be either an ``int`` or a ``float``. Default is a 1 minute delay (``60 seconds``).hIj|hJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]r(heXXDefault time in seconds before a retry of the task should be executed. Can be either an rr}r(hHXXDefault time in seconds before a retry of the task should be executed. Can be either an hIjubj+)r}r(hHX``int``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXintrr}r(hHUhIjubahOj3ubheX or a rr}r(hHX or a hIjubj+)r}r(hHX ``float``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXfloatrr}r(hHUhIjubahOj3ubheX. Default is a 1 minute delay (rr}r(hHX. Default is a 1 minute delay (hIjubj+)r}r(hHX``60 seconds``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX 60 secondsrr}r(hHUhIjubahOj3ubheX).rr}r(hHX).hIjubeubahOjubeubh)r}r(hHXrate_limit Set the rate limit for this task type, that is, how many times in a given period of time is the task allowed to run. If this is ``None`` no rate limit is in effect. If it is an integer, it is interpreted as "tasks per second". The rate limits can be specified in seconds, minutes or hours by appending ``"/s"``, ``"/m"`` or "``/h"``" to the value. Example: ``"100/m" (hundred tasks a minute). Default is the ``CELERY_DEFAULT_RATE_LIMIT`` setting, which if not specified means rate limiting for tasks is turned off by default. hIj$hJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]r(h)r}r(hHX rate_limitrhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]rheX rate_limitrr}r(hHjhIjubaubh)r}r(hHXtSet the rate limit for this task type, that is, how many times in a given period of time is the task allowed to run.rhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]rheXtSet the rate limit for this task type, that is, how many times in a given period of time is the task allowed to run.rr}r(hHjhIjubaubh)r}r(hHXmIf this is ``None`` no rate limit is in effect. If it is an integer, it is interpreted as "tasks per second".hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]r(heX If this is rr}r(hHX If this is hIjubj+)r}r(hHX``None``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXNonerr}r(hHUhIjubahOj3ubheXZ no rate limit is in effect. If it is an integer, it is interpreted as "tasks per second".rr}r(hHXZ no rate limit is in effect. If it is an integer, it is interpreted as "tasks per second".hIjubeubh)r}r(hHX*The rate limits can be specified in seconds, minutes or hours by appending ``"/s"``, ``"/m"`` or "``/h"``" to the value. Example: ``"100/m" (hundred tasks a minute). Default is the ``CELERY_DEFAULT_RATE_LIMIT`` setting, which if not specified means rate limiting for tasks is turned off by default.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]r(heXKThe rate limits can be specified in seconds, minutes or hours by appending rr}r(hHXKThe rate limits can be specified in seconds, minutes or hours by appending hIjubj+)r}r(hHX``"/s"``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX"/s"rr}r(hHUhIjubahOj3ubheX, rr}r(hHX, hIjubj+)r}r(hHX``"/m"``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX"/m"rr}r(hHUhIjubahOj3ubheX or "rr}r(hHX or "hIjubj+)r}r(hHX``/h"``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX/h"rr}r(hHUhIjubahOj3ubheX" to the value. Example: rr}r(hHX" to the value. Example: hIjubj+)r}r(hHXP``"100/m" (hundred tasks a minute). Default is the ``CELERY_DEFAULT_RATE_LIMIT``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXL"100/m" (hundred tasks a minute). Default is the ``CELERY_DEFAULT_RATE_LIMITrr}r(hHUhIjubahOj3ubheXX setting, which if not specified means rate limiting for tasks is turned off by default.rr}r(hHXX setting, which if not specified means rate limiting for tasks is turned off by default.hIjubeubeubh)r}r(hHXXignore_result Don't store the status and return value. This means you can't use the :class:`celery.result.AsyncResult` to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual. hIj$hJNhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]r(h)r}r(hHX ignore_resultrhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]rheX ignore_resultrr}r(hHjhIjubaubcdocutils.nodes definition_list r)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]r cdocutils.nodes definition_list_item r )r }r (hHX1Don't store the status and return value. This means you can't use the :class:`celery.result.AsyncResult` to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual. hIjhJhMhOUdefinition_list_itemr hQ}r(hS]hT]hU]hV]hY]uh[KhC]r(cdocutils.nodes term r)r}r(hHX=Don't store the status and return value. This means you can'trhIj hJhMhOUtermrhQ}r(hS]hT]hU]hV]hY]uh[KhC]rheX=Don't store the status and return value. This means you can'trr}r(hHjhIjubaubcdocutils.nodes definition r)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIj hC]rh)r}r (hHXuse the :class:`celery.result.AsyncResult` to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual.hIjhJhMhOhhQ}r!(hS]hT]hU]hV]hY]uh[KhC]r"(heXuse the r#r$}r%(hHXuse the hIjubj_)r&}r'(hHX":class:`celery.result.AsyncResult`r(hIjhJhMhOjchQ}r)(UreftypeXclassjejfXcelery.result.AsyncResultU refdomainXpyr*hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]r+j+)r,}r-(hHj(hQ}r.(hS]hT]r/(jrj*Xpy-classr0ehU]hV]hY]uhIj&hC]r1heXcelery.result.AsyncResultr2r3}r4(hHUhIj,ubahOj3ubaubheX to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual.r5r6}r7(hHX to check if the task is done, or get its return value. Only use if you need the performance and is able live without these features. Any exceptions raised will store the return value/status as usual.hIjubeubahOU definitionr8ubeubahOUdefinition_listr9ubeubh)r:}r;(hHXdisable_error_emails Disable error e-mails for this task. Default is ``False``. *Note:* You can also turn off error e-mails globally using the ``CELERY_SEND_TASK_ERROR_EMAILS`` setting. hIj$hJhMhOhhQ}r<(hS]hT]hU]hV]hY]uh[Nh\hhC]r=(h)r>}r?(hHXdisable_error_emailsr@hIj:hJhMhOhhQ}rA(hS]hT]hU]hV]hY]uh[KhC]rBheXdisable_error_emailsrCrD}rE(hHj@hIj>ubaubj)rF}rG(hHUhQ}rH(hS]hT]hU]hV]hY]uhIj:hC]rIh)rJ}rK(hHXDisable error e-mails for this task. Default is ``False``. *Note:* You can also turn off error e-mails globally using the ``CELERY_SEND_TASK_ERROR_EMAILS`` setting.hIjFhJhMhOhhQ}rL(hS]hT]hU]hV]hY]uh[KhC]rM(heX0Disable error e-mails for this task. Default is rNrO}rP(hHX0Disable error e-mails for this task. Default is hIjJubj+)rQ}rR(hHX ``False``hQ}rS(hS]hT]hU]hV]hY]uhIjJhC]rTheXFalserUrV}rW(hHUhIjQubahOj3ubheX. rXrY}rZ(hHX. hIjJubcdocutils.nodes emphasis r[)r\}r](hHX*Note:*hQ}r^(hS]hT]hU]hV]hY]uhIjJhC]r_heXNote:r`ra}rb(hHUhIj\ubahOUemphasisrcubheX8 You can also turn off error e-mails globally using the rdre}rf(hHX8 You can also turn off error e-mails globally using the hIjJubj+)rg}rh(hHX!``CELERY_SEND_TASK_ERROR_EMAILS``hQ}ri(hS]hT]hU]hV]hY]uhIjJhC]rjheXCELERY_SEND_TASK_ERROR_EMAILSrkrl}rm(hHUhIjgubahOj3ubheX setting.rnro}rp(hHX setting.hIjJubeubahOjubeubh)rq}rr(hHXLserializer A string identifying the default serialization method to use. Defaults to the ``CELERY_TASK_SERIALIZER`` setting. Can be ``pickle`` ``json``, ``yaml``, or any custom serialization methods that have been registered with :mod:`carrot.serialization.registry`. Please see :doc:`executing` for more information. hIj$hJhMhOhhQ}rs(hS]hT]hU]hV]hY]uh[Nh\hhC]rt(h)ru}rv(hHX serializerrwhIjqhJhMhOhhQ}rx(hS]hT]hU]hV]hY]uh[KhC]ryheX serializerrzr{}r|(hHjwhIjuubaubj)r}}r~(hHUhQ}r(hS]hT]hU]hV]hY]uhIjqhC]r(h)r}r(hHXA string identifying the default serialization method to use. Defaults to the ``CELERY_TASK_SERIALIZER`` setting. Can be ``pickle`` ``json``, ``yaml``, or any custom serialization methods that have been registered with :mod:`carrot.serialization.registry`.hIj}hJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]r(heXNA string identifying the default serialization method to use. Defaults to the rr}r(hHXNA string identifying the default serialization method to use. Defaults to the hIjubj+)r}r(hHX``CELERY_TASK_SERIALIZER``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXCELERY_TASK_SERIALIZERrr}r(hHUhIjubahOj3ubheX setting. Can be rr}r(hHX setting. Can be hIjubj+)r}r(hHX ``pickle``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXpicklerr}r(hHUhIjubahOj3ubheX r}r(hHX hIjubj+)r}r(hHX``json``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXjsonrr}r(hHUhIjubahOj3ubheX, rr}r(hHX, hIjubj+)r}r(hHX``yaml``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXyamlrr}r(hHUhIjubahOj3ubheXE, or any custom serialization methods that have been registered with rr}r(hHXE, or any custom serialization methods that have been registered with hIjubj_)r}r(hHX$:mod:`carrot.serialization.registry`rhIjhJhMhOjchQ}r(UreftypeXmodjejfXcarrot.serialization.registryU refdomainXpyrhV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[KhC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjXpy-modrehU]hV]hY]uhIjhC]rheXcarrot.serialization.registryrr}r(hHUhIjubahOj3ubaubheX.r}r(hHX.hIjubeubh)r}r(hHX1Please see :doc:`executing` for more information.hIj}hJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]r(heX Please see rr}r(hHX Please see hIjubj_)r}r(hHX:doc:`executing`rhIjhJhMhOjchQ}r(UreftypeXdocrjejfX executingU refdomainUhV]hU]U refexplicithS]hT]hY]jhjiuh[KhC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjehU]hV]hY]uhIjhC]rheX executingrr}r(hHUhIjubahOj3ubaubheX for more information.rr}r(hHX for more information.hIjubeubehOjubeubeubhE)r}r(hHUhIjhJhMhOhPhQ}r(hS]hT]hU]hV]rh-ahY]rh auh[Kh\hhC]r(h^)r}r(hHj hIjhJhMhOhbhQ}r(hV]hU]hS]hT]hY]jjuh[Kh\hhC]rheXMessage and routing optionsrr}r(hHj hIjubaubh|)r}r(hHUhIjhJhMhOhhQ}r(jX*hV]hU]hS]hT]hY]uh[Kh\hhC]r(h)r}r(hHXqueue Use the routing settings from a queue defined in ``CELERY_QUEUES``. If defined the ``exchange`` and ``routing_key`` options will be ignored. hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]r(h)r}r(hHXqueuerhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]rheXqueuerr}r(hHjhIjubaubj)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHXUse the routing settings from a queue defined in ``CELERY_QUEUES``. If defined the ``exchange`` and ``routing_key`` options will be ignored.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[KhC]r(heX1Use the routing settings from a queue defined in rr}r(hHX1Use the routing settings from a queue defined in hIjubj+)r}r(hHX``CELERY_QUEUES``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX CELERY_QUEUESrr}r(hHUhIjubahOj3ubheX. If defined the rr}r (hHX. If defined the hIjubj+)r }r (hHX ``exchange``hQ}r (hS]hT]hU]hV]hY]uhIjhC]r heXexchangerr}r(hHUhIj ubahOj3ubheX and rr}r(hHX and hIjubj+)r}r(hHX``routing_key``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX routing_keyrr}r(hHUhIjubahOj3ubheX options will be ignored.rr}r(hHX options will be ignored.hIjubeubahOjubeubh)r}r(hHXDexchange Override the global default ``exchange`` for this task. hIjhJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Nh\hhC]r!(h)r"}r#(hHXexchanger$hIjhJhMhOhhQ}r%(hS]hT]hU]hV]hY]uh[MhC]r&heXexchanger'r(}r)(hHj$hIj"ubaubj)r*}r+(hHUhQ}r,(hS]hT]hU]hV]hY]uhIjhC]r-h)r.}r/(hHX7Override the global default ``exchange`` for this task.hIj*hJhMhOhhQ}r0(hS]hT]hU]hV]hY]uh[MhC]r1(heXOverride the global default r2r3}r4(hHXOverride the global default hIj.ubj+)r5}r6(hHX ``exchange``hQ}r7(hS]hT]hU]hV]hY]uhIj.hC]r8heXexchanger9r:}r;(hHUhIj5ubahOj3ubheX for this task.r<r=}r>(hHX for this task.hIj.ubeubahOjubeubh)r?}r@(hHXJrouting_key Override the global default ``routing_key`` for this task. hIjhJhMhOhhQ}rA(hS]hT]hU]hV]hY]uh[Nh\hhC]rB(h)rC}rD(hHX routing_keyrEhIj?hJhMhOhhQ}rF(hS]hT]hU]hV]hY]uh[MhC]rGheX routing_keyrHrI}rJ(hHjEhIjCubaubj)rK}rL(hHUhQ}rM(hS]hT]hU]hV]hY]uhIj?hC]rNh)rO}rP(hHX:Override the global default ``routing_key`` for this task.hIjKhJhMhOhhQ}rQ(hS]hT]hU]hV]hY]uh[MhC]rR(heXOverride the global default rSrT}rU(hHXOverride the global default hIjOubj+)rV}rW(hHX``routing_key``hQ}rX(hS]hT]hU]hV]hY]uhIjOhC]rYheX routing_keyrZr[}r\(hHUhIjVubahOj3ubheX for this task.r]r^}r_(hHX for this task.hIjOubeubahOjubeubh)r`}ra(hHXmandatory If set, the task message has mandatory routing. By default the task is silently dropped by the broker if it can't be routed to a queue. However - If the task is mandatory, an exception will be raised instead. hIjhJNhOhhQ}rb(hS]hT]hU]hV]hY]uh[Nh\hhC]rcj)rd}re(hHUhQ}rf(hS]hT]hU]hV]hY]uhIj`hC]rgj )rh}ri(hHXmandatory If set, the task message has mandatory routing. By default the task is silently dropped by the broker if it can't be routed to a queue. However - If the task is mandatory, an exception will be raised instead. hIjdhJhMhOj hQ}rj(hS]hT]hU]hV]hY]uh[M hC]rk(j)rl}rm(hHX mandatoryrnhIjhhJhMhOjhQ}ro(hS]hT]hU]hV]hY]uh[M hC]rpheX mandatoryrqrr}rs(hHjnhIjlubaubj)rt}ru(hHUhQ}rv(hS]hT]hU]hV]hY]uhIjhhC]rwh)rx}ry(hHXIf set, the task message has mandatory routing. By default the task is silently dropped by the broker if it can't be routed to a queue. However - If the task is mandatory, an exception will be raised instead.rzhIjthJhMhOhhQ}r{(hS]hT]hU]hV]hY]uh[M hC]r|heXIf set, the task message has mandatory routing. By default the task is silently dropped by the broker if it can't be routed to a queue. However - If the task is mandatory, an exception will be raised instead.r}r~}r(hHjzhIjxubaubahOj8ubeubahOj9ubaubh)r}r(hHXimmediate Request immediate delivery. If the task cannot be routed to a task worker immediately, an exception will be raised. This is instead of the default behavior, where the broker will accept and queue the task, but with no guarantee that the task will ever be executed. hIjhJNhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]rj)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rj )r}r(hHXimmediate Request immediate delivery. If the task cannot be routed to a task worker immediately, an exception will be raised. This is instead of the default behavior, where the broker will accept and queue the task, but with no guarantee that the task will ever be executed. hIjhJhMhOj hQ}r(hS]hT]hU]hV]hY]uh[MhC]r(j)r}r(hHX immediaterhIjhJhMhOjhQ}r(hS]hT]hU]hV]hY]uh[MhC]rheX immediaterr}r(hHjhIjubaubj)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHXRequest immediate delivery. If the task cannot be routed to a task worker immediately, an exception will be raised. This is instead of the default behavior, where the broker will accept and queue the task, but with no guarantee that the task will ever be executed.rhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[MhC]rheXRequest immediate delivery. If the task cannot be routed to a task worker immediately, an exception will be raised. This is instead of the default behavior, where the broker will accept and queue the task, but with no guarantee that the task will ever be executed.rr}r(hHjhIjubaubahOj8ubeubahOj9ubaubh)r}r(hHXpriority The message priority. A number from ``0`` to ``9``, where ``0`` is the highest. **Note:** RabbitMQ does not support priorities yet. hIjhJNhOhhQ}r(hS]hT]hU]hV]hY]uh[Nh\hhC]rj)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rj )r}r(hHXpriority The message priority. A number from ``0`` to ``9``, where ``0`` is the highest. **Note:** RabbitMQ does not support priorities yet. hIjhJhMhOj hQ}r(hS]hT]hU]hV]hY]uh[MhC]r(j)r}r(hHXpriorityrhIjhJhMhOjhQ}r(hS]hT]hU]hV]hY]uh[MhC]rheXpriorityrr}r(hHjhIjubaubj)r}r(hHUhQ}r(hS]hT]hU]hV]hY]uhIjhC]rh)r}r(hHXThe message priority. A number from ``0`` to ``9``, where ``0`` is the highest. **Note:** RabbitMQ does not support priorities yet.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[MhC]r(heX$The message priority. A number from rr}r(hHX$The message priority. A number from hIjubj+)r}r(hHX``0``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX0r}r(hHUhIjubahOj3ubheX to rr}r(hHX to hIjubj+)r}r(hHX``9``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX9r}r(hHUhIjubahOj3ubheX, where rr}r(hHX, where hIjubj+)r}r(hHX``0``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX0r}r(hHUhIjubahOj3ubheX is the highest. rr}r(hHX is the highest. hIjubj)r}r(hHX **Note:**hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheXNote:rr}r(hHUhIjubahOjubheX* RabbitMQ does not support priorities yet.rr}r(hHX* RabbitMQ does not support priorities yet.hIjubeubahOj8ubeubahOj9ubaubeubh)r}r(hHXeSee :doc:`executing` for more information about the messaging options available, also :doc:`routing`.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Mh\hhC]r(heXSee rr}r(hHXSee hIjubj_)r}r(hHX:doc:`executing`rhIjhJhMhOjchQ}r(UreftypeXdocrjejfX executingU refdomainUhV]hU]U refexplicithS]hT]hY]jhjiuh[MhC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjehU]hV]hY]uhIjhC]rheX executingrr}r(hHUhIjubahOj3ubaubheXB for more information about the messaging options available, also rr}r(hHXB for more information about the messaging options available, also hIjubj_)r}r(hHX:doc:`routing`rhIjhJhMhOjchQ}r(UreftypeXdocrjejfXroutingU refdomainUhV]hU]U refexplicithS]hT]hY]jhjiuh[MhC]rj+)r}r(hHjhQ}r(hS]hT]r(jrjehU]hV]hY]uhIjhC]rheXroutingrr}r (hHUhIjubahOj3ubaubheX.r }r (hHX.hIjubeubeubeubhE)r }r (hHUhIhFhJhMhOhPhQ}r(hS]hT]hU]hV]rhBahY]rhauh[Mh\hhC]r(h^)r}r(hHjhIj hJhMhOhbhQ}r(hV]hU]hS]hT]hY]jjuh[Mh\hhC]rheXExamplerr}r(hHjhIjubaubh)r}r(hHXLet's take a real wold example; A blog where comments posted needs to be filtered for spam. When the comment is created, the spam filter runs in the background, so the user doesn't have to wait for it to finish.rhIj hJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[M h\hhC]rheXLet's take a real wold example; A blog where comments posted needs to be filtered for spam. When the comment is created, the spam filter runs in the background, so the user doesn't have to wait for it to finish.rr}r (hHjhIjubaubh)r!}r"(hHXWe have a Django blog application allowing comments on blog posts. We'll describe parts of the models/views and tasks for this application.r#hIj hJhMhOhhQ}r$(hS]hT]hU]hV]hY]uh[M$h\hhC]r%heXWe have a Django blog application allowing comments on blog posts. We'll describe parts of the models/views and tasks for this application.r&r'}r((hHj#hIj!ubaubhE)r)}r*(hHUhIj hJhMhOhPhQ}r+(hS]hT]hU]hV]r,h+ahY]r-hauh[M)h\hhC]r.(h^)r/}r0(hHj5hIj)hJhMhOhbhQ}r1(hV]hU]hS]hT]hY]jj0uh[M)h\hhC]r2heXblog/models.pyr3r4}r5(hHj5hIj/ubaubh)r6}r7(hHX"The comment model looks like this:r8hIj)hJhMhOhhQ}r9(hS]hT]hU]hV]hY]uh[M+h\hhC]r:heX"The comment model looks like this:r;r<}r=(hHj8hIj6ubaubjK)r>}r?(hHXfrom django.db import models from django.utils.translation import ugettext_lazy as _ class Comment(models.Model): name = models.CharField(_("name"), max_length=64) email_address = models.EmailField(_("e-mail address")) homepage = models.URLField(_("home page"), blank=True, verify_exists=False) comment = models.TextField(_("comment")) pub_date = models.DateTimeField(_("Published date"), editable=False, auto_add_now=True) is_spam = models.BooleanField(_("spam?"), default=False, editable=False) class Meta: verbose_name = _("comment") verbose_name_plural = _("comments")hIj)hJhMhOjNhQ}r@(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[M-h\hhC]rAheXfrom django.db import models from django.utils.translation import ugettext_lazy as _ class Comment(models.Model): name = models.CharField(_("name"), max_length=64) email_address = models.EmailField(_("e-mail address")) homepage = models.URLField(_("home page"), blank=True, verify_exists=False) comment = models.TextField(_("comment")) pub_date = models.DateTimeField(_("Published date"), editable=False, auto_add_now=True) is_spam = models.BooleanField(_("spam?"), default=False, editable=False) class Meta: verbose_name = _("comment") verbose_name_plural = _("comments")rBrC}rD(hHUhIj>ubaubh)rE}rF(hHXIn the view where the comment is posted, we first write the comment to the database, then we launch the spam filter task in the background.rGhIj)hJhMhOhhQ}rH(hS]hT]hU]hV]hY]uh[MCh\hhC]rIheXIn the view where the comment is posted, we first write the comment to the database, then we launch the spam filter task in the background.rJrK}rL(hHjGhIjEubaubeubhE)rM}rN(hHUhIj hJhMhOhPhQ}rO(hS]hT]hU]hV]rPh,ahY]rQh auh[MGh\hhC]rR(h^)rS}rT(hHjGhIjMhJhMhOhbhQ}rU(hV]hU]hS]hT]hY]jjBuh[MGh\hhC]rVheX blog/views.pyrWrX}rY(hHjGhIjSubaubjK)rZ}r[(hHX from django import forms frmo django.http import HttpResponseRedirect from django.template.context import RequestContext from django.shortcuts import get_object_or_404, render_to_response from blog import tasks from blog.models import Comment class CommentForm(forms.ModelForm): class Meta: model = Comment def add_comment(request, slug, template_name="comments/create.html"): post = get_object_or_404(Entry, slug=slug) remote_addr = request.META.get("REMOTE_ADDR") if request.method == "post": form = CommentForm(request.POST, request.FILES) if form.is_valid(): comment = form.save() # Check spam asynchronously. tasks.spam_filter.delay(comment_id=comment.id, remote_addr=remote_addr) return HttpResponseRedirect(post.get_absolute_url()) else: form = CommentForm() context = RequestContext(request, {"form": form}) return render_to_response(template_name, context_instance=context)hIjMhJhMhOjNhQ}r\(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[MIh\hhC]r]heX from django import forms frmo django.http import HttpResponseRedirect from django.template.context import RequestContext from django.shortcuts import get_object_or_404, render_to_response from blog import tasks from blog.models import Comment class CommentForm(forms.ModelForm): class Meta: model = Comment def add_comment(request, slug, template_name="comments/create.html"): post = get_object_or_404(Entry, slug=slug) remote_addr = request.META.get("REMOTE_ADDR") if request.method == "post": form = CommentForm(request.POST, request.FILES) if form.is_valid(): comment = form.save() # Check spam asynchronously. tasks.spam_filter.delay(comment_id=comment.id, remote_addr=remote_addr) return HttpResponseRedirect(post.get_absolute_url()) else: form = CommentForm() context = RequestContext(request, {"form": form}) return render_to_response(template_name, context_instance=context)r^r_}r`(hHUhIjZubaubh)ra}rb(hHXTo filter spam in comments we use `Akismet`_, the service used to filter spam in comments posted to the free weblog platform `Wordpress`. `Akismet`_ is free for personal use, but for commercial use you need to pay. You have to sign up to their service to get an API key.hIjMhJhMhOhhQ}rc(hS]hT]hU]hV]hY]uh[Mmh\hhC]rd(heX"To filter spam in comments we use rerf}rg(hHX"To filter spam in comments we use hIjaubh)rh}ri(hHX `Akismet`_jKhIjahOhhQ}rj(UnameXAkismetUrefurirkXhttp://akismet.com/faq/rlhV]hU]hS]hT]hY]uhC]rmheXAkismetrnro}rp(hHUhIjhubaubheXQ, the service used to filter spam in comments posted to the free weblog platform rqrr}rs(hHXQ, the service used to filter spam in comments posted to the free weblog platform hIjaubcdocutils.nodes title_reference rt)ru}rv(hHX `Wordpress`hQ}rw(hS]hT]hU]hV]hY]uhIjahC]rxheX Wordpressryrz}r{(hHUhIjuubahOUtitle_referencer|ubheX. r}r~}r(hHX. hIjaubh)r}r(hHX `Akismet`_jKhIjahOhhQ}r(UnameXAkismetjkjlhV]hU]hS]hT]hY]uhC]rheXAkismetrr}r(hHUhIjubaubheXz is free for personal use, but for commercial use you need to pay. You have to sign up to their service to get an API key.rr}r(hHXz is free for personal use, but for commercial use you need to pay. You have to sign up to their service to get an API key.hIjaubeubh)r}r(hHXZTo make API calls to `Akismet`_ we use the `akismet.py`_ library written by Michael Foord.hIjMhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Mrh\hhC]r(heXTo make API calls to rr}r(hHXTo make API calls to hIjubh)r}r(hHX `Akismet`_jKhIjhOhhQ}r(UnameXAkismetjkjlhV]hU]hS]hT]hY]uhC]rheXAkismetrr}r(hHUhIjubaubheX we use the rr}r(hHX we use the hIjubh)r}r(hHX `akismet.py`_jKhIjhOhhQ}r(UnameX akismet.pyrjkX0http://www.voidspace.org.uk/downloads/akismet.pyrhV]hU]hS]hT]hY]uhC]rheX akismet.pyrr}r(hHUhIjubaubheX" library written by Michael Foord.rr}r(hHX" library written by Michael Foord.hIjubeubeubhE)r}r(hHUhIj hJhMhOhPhQ}r(hS]hT]hU]hV]rh5ahY]rhauh[Mvh\hhC]r(h^)r}r(hHjYhIjhJhMhOhbhQ}r(hV]hU]hS]hT]hY]jjTuh[Mvh\hhC]rheX blog/tasks.pyrr}r(hHjYhIjubaubjK)r}r(hHXfrom akismet import Akismet from celery.decorators import task from django.core.exceptions import ImproperlyConfigured from django.contrib.sites.models import Site from blog.models import Comment @task def spam_filter(comment_id, remote_addr=None, **kwargs): logger = spam_filter.get_logger(**kwargs) logger.info("Running spam filter for comment %s" % comment_id) comment = Comment.objects.get(pk=comment_id) current_domain = Site.objects.get_current().domain akismet = Akismet(settings.AKISMET_KEY, "http://%s" % domain) if not akismet.verify_key(): raise ImproperlyConfigured("Invalid AKISMET_KEY") is_spam = akismet.comment_check(user_ip=remote_addr, comment_content=comment.comment, comment_author=comment.name, comment_author_email=comment.email_address) if is_spam: comment.is_spam = True comment.save() return is_spamhIjhJhMhOjNhQ}r(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mxh\hhC]rheXfrom akismet import Akismet from celery.decorators import task from django.core.exceptions import ImproperlyConfigured from django.contrib.sites.models import Site from blog.models import Comment @task def spam_filter(comment_id, remote_addr=None, **kwargs): logger = spam_filter.get_logger(**kwargs) logger.info("Running spam filter for comment %s" % comment_id) comment = Comment.objects.get(pk=comment_id) current_domain = Site.objects.get_current().domain akismet = Akismet(settings.AKISMET_KEY, "http://%s" % domain) if not akismet.verify_key(): raise ImproperlyConfigured("Invalid AKISMET_KEY") is_spam = akismet.comment_check(user_ip=remote_addr, comment_content=comment.comment, comment_author=comment.name, comment_author_email=comment.email_address) if is_spam: comment.is_spam = True comment.save() return is_spamrr}r(hHUhIjubaubcdocutils.nodes target r)r}r(hHX&.. _`Akismet`: http://akismet.com/faq/jKhIjhJhMhOUtargetrhQ}r(jkjlhV]rh7ahU]hS]hT]hY]rhauh[Mh\hhC]ubj)r}r(hHXB.. _`akismet.py`: http://www.voidspace.org.uk/downloads/akismet.pyjKhIjhJhMhOjhQ}r(jkjhV]rhAahU]hS]hT]hY]rhauh[Mh\hhC]ubeubeubhE)r}r(hHUhIhFhJhMhOhPhQ}r(hS]hT]hU]hV]rh:ahY]rhauh[Mh\hhC]r(h^)r}r(hHjkhIjhJhMhOhbhQ}r(hV]hU]hS]hT]hY]jjfuh[Mh\hhC]rheX How it worksrr}r(hHjkhIjubaubh)r}r(hHXhHere comes the technical details, this part isn't something you need to know, but you may be interested.rhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Mh\hhC]rheXhHere comes the technical details, this part isn't something you need to know, but you may be interested.rr}r(hHjhIjubaubh)r}r(hHXAll defined tasks are listed in a registry. The registry contains a list of task names and their task classes. You can investigate this registry yourself:rhIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Mh\hhC]rheXAll defined tasks are listed in a registry. The registry contains a list of task names and their task classes. You can investigate this registry yourself:rr}r(hHjhIjubaubjK)r}r(hHX>>> from celery import registry >>> from celery import task >>> registry.tasks {'celery.delete_expired_task_meta': , 'celery.task.http.HttpDispatchTask': , 'celery.execute_remote': , 'celery.map_async': , 'celery.ping': }hIjhJhMhOjNhQ}r(jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]rheX>>> from celery import registry >>> from celery import task >>> registry.tasks {'celery.delete_expired_task_meta': , 'celery.task.http.HttpDispatchTask': , 'celery.execute_remote': , 'celery.map_async': , 'celery.ping': }rr}r(hHUhIjubaubh)r}r(hHXThis is the list of tasks built-in to celery. Note that we had to import ``celery.task`` first for these to show up. This is because the tasks will only be registered when the module they are defined in is imported.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Mh\hhC]r(heXIThis is the list of tasks built-in to celery. Note that we had to import rr}r(hHXIThis is the list of tasks built-in to celery. Note that we had to import hIjubj+)r}r(hHX``celery.task``hQ}r(hS]hT]hU]hV]hY]uhIjhC]rheX celery.taskrr}r(hHUhIjubahOj3ubheX first for these to show up. This is because the tasks will only be registered when the module they are defined in is imported.rr}r(hHX first for these to show up. This is because the tasks will only be registered when the module they are defined in is imported.hIjubeubh)r}r(hHXPThe default loader imports any modules listed in the ``CELERY_IMPORTS`` setting.hIjhJhMhOhhQ}r(hS]hT]hU]hV]hY]uh[Mh\hhC]r(heX5The default loader imports any modules listed in the r r }r (hHX5The default loader imports any modules listed in the hIjubj+)r }r (hHX``CELERY_IMPORTS``hQ}r (hS]hT]hU]hV]hY]uhIjhC]r heXCELERY_IMPORTSr r }r (hHUhIj ubahOj3ubheX setting.r r }r (hHX setting.hIjubeubh)r }r (hHX(The entity responsible for registering your task in the registry is a meta class, :class:`~celery.task.base.TaskType`. This is the default meta class for :class:`~celery.task.base.Task`. If you want to register your task manually you can set the :attr:`~celery.task.base.Task.abstract` attribute:hIjhJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r (heXRThe entity responsible for registering your task in the registry is a meta class, r r }r (hHXRThe entity responsible for registering your task in the registry is a meta class, hIj ubj_)r }r (hHX#:class:`~celery.task.base.TaskType`r hIj hJhMhOjchQ}r (UreftypeXclassjejfXcelery.task.base.TaskTypeU refdomainXpyr hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[MhC]r j+)r }r (hHj hQ}r (hS]hT]r (jrj Xpy-classr ehU]hV]hY]uhIj hC]r heXTaskTyper r! }r" (hHUhIj ubahOj3ubaubheX%. This is the default meta class for r# r$ }r% (hHX%. This is the default meta class for hIj ubj_)r& }r' (hHX:class:`~celery.task.base.Task`r( hIj hJhMhOjchQ}r) (UreftypeXclassjejfXcelery.task.base.TaskU refdomainXpyr* hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[MhC]r+ j+)r, }r- (hHj( hQ}r. (hS]hT]r/ (jrj* Xpy-classr0 ehU]hV]hY]uhIj& hC]r1 heXTaskr2 r3 }r4 (hHUhIj, ubahOj3ubaubheX=. If you want to register your task manually you can set the r5 r6 }r7 (hHX=. If you want to register your task manually you can set the hIj ubj_)r8 }r9 (hHX':attr:`~celery.task.base.Task.abstract`r: hIj hJhMhOjchQ}r; (UreftypeXattrjejfXcelery.task.base.Task.abstractU refdomainXpyr< hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[MhC]r= j+)r> }r? (hHj: hQ}r@ (hS]hT]rA (jrj< Xpy-attrrB ehU]hV]hY]uhIj8 hC]rC heXabstractrD rE }rF (hHUhIj> ubahOj3ubaubheX attribute:rG rH }rI (hHX attribute:hIj ubeubjK)rJ }rK (hHX'class MyTask(Task): abstract = TruehIjhJhMhOjNhQ}rL (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]rM heX'class MyTask(Task): abstract = TruerN rO }rP (hHUhIjJ ubaubh)rQ }rR (hHXHThis way the task won't be registered, but any task subclassing it will.rS hIjhJhMhOhhQ}rT (hS]hT]hU]hV]hY]uh[Mh\hhC]rU heXHThis way the task won't be registered, but any task subclassing it will.rV rW }rX (hHjS hIjQ ubaubh)rY }rZ (hHXWhen tasks are sent, we don't send the function code, just the name of the task. When the worker receives the message it can just look it up in the task registry to find the execution code.r[ hIjhJhMhOhhQ}r\ (hS]hT]hU]hV]hY]uh[Mh\hhC]r] heXWhen tasks are sent, we don't send the function code, just the name of the task. When the worker receives the message it can just look it up in the task registry to find the execution code.r^ r_ }r` (hHj[ hIjY ubaubh)ra }rb (hHXThis means that your workers should always be updated with the same software as the client. This is a drawback, but the alternative is a technical challenge that has yet to be solved.rc hIjhJhMhOhhQ}rd (hS]hT]hU]hV]hY]uh[Mh\hhC]re heXThis means that your workers should always be updated with the same software as the client. This is a drawback, but the alternative is a technical challenge that has yet to be solved.rf rg }rh (hHjc hIja ubaubeubhE)ri }rj (hHUhIhFhJhMhOhPhQ}rk (hS]hT]hU]hV]rl h1ahY]rm hauh[Mh\hhC]rn (h^)ro }rp (hHj}hIji hJhMhOhbhQ}rq (hV]hU]hS]hT]hY]jjxuh[Mh\hhC]rr heXTips and Best Practicesrs rt }ru (hHj}hIjo ubaubhE)rv }rw (hHUhIji hJhMhOhPhQ}rx (hS]hT]hU]hV]ry h2ahY]rz hauh[Mh\hhC]r{ (h^)r| }r} (hHjhIjv hJhMhOhbhQ}r~ (hV]hU]hS]hT]hY]jjuh[Mh\hhC]r heXIgnore results you don't wantr r }r (hHjhIj| ubaubh)r }r (hHXIf you don't care about the results of a task, be sure to set the :attr:`~celery.task.base.Task.ignore_result` option, as storing results wastes time and resources.hIjv hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r (heXBIf you don't care about the results of a task, be sure to set the r r }r (hHXBIf you don't care about the results of a task, be sure to set the hIj ubj_)r }r (hHX,:attr:`~celery.task.base.Task.ignore_result`r hIj hJhMhOjchQ}r (UreftypeXattrjejfX#celery.task.base.Task.ignore_resultU refdomainXpyr hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[MhC]r j+)r }r (hHj hQ}r (hS]hT]r (jrj Xpy-attrr ehU]hV]hY]uhIj hC]r heX ignore_resultr r }r (hHUhIj ubahOj3ubaubheX6 option, as storing results wastes time and resources.r r }r (hHX6 option, as storing results wastes time and resources.hIj ubeubjK)r }r (hHX9@task(ignore_result=True) def mytask(...) something()hIjv hJhMhOjNhQ}r (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]r heX9@task(ignore_result=True) def mytask(...) something()r r }r (hHUhIj ubaubh)r }r (hHXQResults can even be disabled globally using the ``CELERY_IGNORE_RESULT`` setting.hIjv hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r (heX0Results can even be disabled globally using the r r }r (hHX0Results can even be disabled globally using the hIj ubj+)r }r (hHX``CELERY_IGNORE_RESULT``hQ}r (hS]hT]hU]hV]hY]uhIj hC]r heXCELERY_IGNORE_RESULTr r }r (hHUhIj ubahOj3ubheX setting.r r }r (hHX setting.hIj ubeubeubhE)r }r (hHUhIji hJhMhOhPhQ}r (hS]hT]hU]hV]r h3ahY]r hauh[Mh\hhC]r (h^)r }r (hHjhIj hJhMhOhbhQ}r (hV]hU]hS]hT]hY]jjuh[Mh\hhC]r heX'Disable rate limits if they're not usedr r }r (hHjhIj ubaubh)r }r (hHXDisabling rate limits altogether is recommended if you don't have any tasks using them. This is because the rate limit subsystem introduces quite a lot of complexity.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r heXDisabling rate limits altogether is recommended if you don't have any tasks using them. This is because the rate limit subsystem introduces quite a lot of complexity.r r }r (hHj hIj ubaubh)r }r (hHXOSet the ``CELERY_DISABLE_RATE_LIMITS`` setting to globally disable rate limits:hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r (heXSet the r r }r (hHXSet the hIj ubj+)r }r (hHX``CELERY_DISABLE_RATE_LIMITS``hQ}r (hS]hT]hU]hV]hY]uhIj hC]r heXCELERY_DISABLE_RATE_LIMITSr r }r (hHUhIj ubahOj3ubheX) setting to globally disable rate limits:r r }r (hHX) setting to globally disable rate limits:hIj ubeubjK)r }r (hHX!CELERY_DISABLE_RATE_LIMITS = TruehIj hJhMhOjNhQ}r (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]r heX!CELERY_DISABLE_RATE_LIMITS = Truer r }r (hHUhIj ubaubeubhE)r }r (hHUhIji hJhMhOhPhQ}r (hS]hT]hU]hV]r h?ahY]r hauh[Mh\hhC]r (h^)r }r (hHjhIj hJhMhOhbhQ}r (hV]hU]hS]hT]hY]jjuh[Mh\hhC]r heX$Avoid launching synchronous subtasksr r }r (hHjhIj ubaubh)r }r (hHXHaving a task wait for the result of another task is really inefficient, and may even cause a deadlock if the worker pool is exhausted.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r heXHaving a task wait for the result of another task is really inefficient, and may even cause a deadlock if the worker pool is exhausted.r r }r (hHj hIj ubaubh)r }r (hHXHMake your design asynchronous instead, for example by using *callbacks*.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r (heX<Make your design asynchronous instead, for example by using r r }r (hHX<Make your design asynchronous instead, for example by using hIj ubj[)r }r (hHX *callbacks*hQ}r (hS]hT]hU]hV]hY]uhIj hC]r heX callbacksr r }r (hHUhIj ubahOjcubheX.r }r (hHX.hIj ubeubh)r }r (hHXBad:r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r heXBad:r r }r (hHj hIj ubaubjK)r }r (hHX{@task() def update_page_info(url): page = fetch_page.delay(url).get() info = parse_page.delay(url, page).get() store_page_info.delay(url, info) @task() def fetch_page(url): return myhttplib.get(url) @task() def parse_page(url, page): return myparser.parse_document(page) @task() def store_page_info(url, info): return PageInfo.objects.create(url, info)hIj hJhMhOjNhQ}r (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]r heX{@task() def update_page_info(url): page = fetch_page.delay(url).get() info = parse_page.delay(url, page).get() store_page_info.delay(url, info) @task() def fetch_page(url): return myhttplib.get(url) @task() def parse_page(url, page): return myparser.parse_document(page) @task() def store_page_info(url, info): return PageInfo.objects.create(url, info)r r }r (hHUhIj ubaubh)r }r (hHXGood:r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r heXGood:r r }r (hHj hIj ubaubjK)r }r (hHX@task(ignore_result=True) def update_page_info(url): # fetch_page -> parse_page -> store_page fetch_page.delay(url, callback=subtask(parse_page, callback=subtask(store_page_info))) @task(ignore_result=True) def fetch_page(url, callback=None): page = myhttplib.get(url) if callback: # The callback may have been serialized with JSON, # so best practice is to convert the subtask dict back # into a subtask object. subtask(callback).delay(url, page) @task(ignore_result=True) def parse_page(url, page, callback=None): info = myparser.parse_document(page) if callback: subtask(callback).delay(url, info) @task(ignore_result=True) def store_page_info(url, info): PageInfo.objects.create(url, info)hIj hJhMhOjNhQ}r (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]r! heX@task(ignore_result=True) def update_page_info(url): # fetch_page -> parse_page -> store_page fetch_page.delay(url, callback=subtask(parse_page, callback=subtask(store_page_info))) @task(ignore_result=True) def fetch_page(url, callback=None): page = myhttplib.get(url) if callback: # The callback may have been serialized with JSON, # so best practice is to convert the subtask dict back # into a subtask object. subtask(callback).delay(url, page) @task(ignore_result=True) def parse_page(url, page, callback=None): info = myparser.parse_document(page) if callback: subtask(callback).delay(url, info) @task(ignore_result=True) def store_page_info(url, info): PageInfo.objects.create(url, info)r" r# }r$ (hHUhIj ubaubh)r% }r& (hHXWe use :class:`~celery.task.sets.subtask` here to safely pass around the callback task. :class:`~celery.task.sets.subtask` is a subclass of dict used to wrap the arguments and execution options for a single task invocation. See :doc:`tasksets` for more information about subtasks.hIj hJhMhOhhQ}r' (hS]hT]hU]hV]hY]uh[M1h\hhC]r( (heXWe use r) r* }r+ (hHXWe use hIj% ubj_)r, }r- (hHX":class:`~celery.task.sets.subtask`r. hIj% hJhMhOjchQ}r/ (UreftypeXclassjejfXcelery.task.sets.subtaskU refdomainXpyr0 hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[M1hC]r1 j+)r2 }r3 (hHj. hQ}r4 (hS]hT]r5 (jrj0 Xpy-classr6 ehU]hV]hY]uhIj, hC]r7 heXsubtaskr8 r9 }r: (hHUhIj2 ubahOj3ubaubheX/ here to safely pass around the callback task. r; r< }r= (hHX/ here to safely pass around the callback task. hIj% ubj_)r> }r? (hHX":class:`~celery.task.sets.subtask`r@ hIj% hJhMhOjchQ}rA (UreftypeXclassjejfXcelery.task.sets.subtaskU refdomainXpyrB hV]hU]U refexplicithS]hT]hY]jhjijjNjkjluh[M1hC]rC j+)rD }rE (hHj@ hQ}rF (hS]hT]rG (jrjB Xpy-classrH ehU]hV]hY]uhIj> hC]rI heXsubtaskrJ rK }rL (hHUhIjD ubahOj3ubaubheXj is a subclass of dict used to wrap the arguments and execution options for a single task invocation. See rM rN }rO (hHXj is a subclass of dict used to wrap the arguments and execution options for a single task invocation. See hIj% ubj_)rP }rQ (hHX:doc:`tasksets`rR hIj% hJhMhOjchQ}rS (UreftypeXdocrT jejfXtasksetsU refdomainUhV]hU]U refexplicithS]hT]hY]jhjiuh[M1hC]rU j+)rV }rW (hHjR hQ}rX (hS]hT]rY (jrjT ehU]hV]hY]uhIjP hC]rZ heXtasksetsr[ r\ }r] (hHUhIjV ubahOj3ubaubheX% for more information about subtasks.r^ r_ }r` (hHX% for more information about subtasks.hIj% ubeubeubeubhE)ra }rb (hHUhIhFhJhMhOhPhQ}rc (hS]hT]hU]hV]rd h.ahY]re h auh[M9h\hhC]rf (h^)rg }rh (hHjhIja hJhMhOhbhQ}ri (hV]hU]hS]hT]hY]jjuh[M9h\hhC]rj heXPerformance and Strategiesrk rl }rm (hHjhIjg ubaubhE)rn }ro (hHUhIja hJhMhOhPhQ}rp (hS]hT]hU]hV]rq hh\hhC]r heXThe task's granularity is the degree of parallelization your task have. It's better to have many small tasks, than a few long running ones.r r }r (hHj} hIj{ ubaubh)r }r (hHXWith smaller tasks, you can process more tasks in parallel and the tasks won't run long enough to block the worker from processing other waiting tasks.r hIjn hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[MAh\hhC]r heXWith smaller tasks, you can process more tasks in parallel and the tasks won't run long enough to block the worker from processing other waiting tasks.r r }r (hHj hIj ubaubh)r }r (hHXHowever, there's a limit. Sending messages takes processing power and bandwidth. If your tasks are so short the overhead of passing them around is worse than just executing them in-line, you should reconsider your strategy. There is no universal answer here.r hIjn hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[MDh\hhC]r heXHowever, there's a limit. Sending messages takes processing power and bandwidth. If your tasks are so short the overhead of passing them around is worse than just executing them in-line, you should reconsider your strategy. There is no universal answer here.r r }r (hHj hIj ubaubeubhE)r }r (hHUhIja hJhMhOhPhQ}r (hS]hT]hU]hV]r h;ahY]r hauh[MJh\hhC]r (h^)r }r (hHjhIj hJhMhOhbhQ}r (hV]hU]hS]hT]hY]jjuh[MJh\hhC]r heX Data localityr r }r (hHjhIj ubaubh)r }r (hHXThe worker processing the task should be as close to the data as possible. The best would be to have a copy in memory, the worst being a full transfer from another continent.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[MLh\hhC]r heXThe worker processing the task should be as close to the data as possible. The best would be to have a copy in memory, the worst being a full transfer from another continent.r r }r (hHj hIj ubaubh)r }r (hHXIf the data is far away, you could try to run another worker at location, or if that's not possible, cache often used data, or preload data you know is going to be used.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[MPh\hhC]r heXIf the data is far away, you could try to run another worker at location, or if that's not possible, cache often used data, or preload data you know is going to be used.r r }r (hHj hIj ubaubh)r }r (hHXhThe easiest way to share data between workers is to use a distributed caching system, like `memcached`_.hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[MTh\hhC]r (heX[The easiest way to share data between workers is to use a distributed caching system, like r r }r (hHX[The easiest way to share data between workers is to use a distributed caching system, like hIj ubh)r }r (hHX `memcached`_jKhIj hOhhQ}r (UnameX memcachedr jkXhttp://memcached.org/r hV]hU]hS]hT]hY]uhC]r heX memcachedr r }r (hHUhIj ubaubheX.r }r (hHX.hIj ubeubh)r }r (hHXmFor more information about data-locality, please read http://research.microsoft.com/pubs/70001/tr-2003-24.pdfhIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[MWh\hhC]r (heX6For more information about data-locality, please read r r }r (hHX6For more information about data-locality, please read hIj ubh)r }r (hHX7http://research.microsoft.com/pubs/70001/tr-2003-24.pdfr hQ}r (Urefurij hV]hU]hS]hT]hY]uhIj hC]r heX7http://research.microsoft.com/pubs/70001/tr-2003-24.pdfr r }r (hHUhIj ubahOhubeubj)r }r (hHX&.. _`memcached`: http://memcached.org/jKhIj hJhMhOjhQ}r (jkj hV]r h9ahU]hS]hT]hY]r hauh[MZh\hhC]ubeubhE)r }r (hHUhIja hJhMhOhPhQ}r (hS]hT]hU]hV]r h6ahY]r hauh[M^h\hhC]r (h^)r }r (hHjhIj hJhMhOhbhQ}r (hV]hU]hS]hT]hY]jjuh[M^h\hhC]r heXStater r }r (hHjhIj ubaubh)r }r (hHXSince celery is a distributed system, you can't know in which process, or even on what machine the task will run. Indeed you can't even know if the task will run in a timely manner, so please be wary of the state you pass on to tasks.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[M`h\hhC]r heXSince celery is a distributed system, you can't know in which process, or even on what machine the task will run. Indeed you can't even know if the task will run in a timely manner, so please be wary of the state you pass on to tasks.r r }r (hHj hIj ubaubh)r }r (hHXOne gotcha is Django model objects. They shouldn't be passed on as arguments to task classes, it's almost always better to re-fetch the object from the database instead, as there are possible race conditions involved.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mdh\hhC]r heXOne gotcha is Django model objects. They shouldn't be passed on as arguments to task classes, it's almost always better to re-fetch the object from the database instead, as there are possible race conditions involved.r r }r (hHj hIj ubaubh)r }r (hHXxImagine the following scenario where you have an article and a task that automatically expands some abbreviations in it.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mhh\hhC]r heXxImagine the following scenario where you have an article and a task that automatically expands some abbreviations in it.r r }r (hHj hIj ubaubjK)r }r (hHXclass Article(models.Model): title = models.CharField() body = models.TextField() @task def expand_abbreviations(article): article.body.replace("MyCorp", "My Corporation") article.save()hIj hJhMhOjNhQ}r (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mkh\hhC]r heXclass Article(models.Model): title = models.CharField() body = models.TextField() @task def expand_abbreviations(article): article.body.replace("MyCorp", "My Corporation") article.save()r r }r (hHUhIj ubaubh)r }r (hHXzFirst, an author creates an article and saves it, then the author clicks on a button that initiates the abbreviation task.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mvh\hhC]r heXzFirst, an author creates an article and saves it, then the author clicks on a button that initiates the abbreviation task.r r }r (hHj hIj ubaubcdocutils.nodes doctest_block r )r }r (hHXV>>> article = Article.objects.get(id=102) >>> expand_abbreviations.delay(model_object)hIj hJNhOU doctest_blockr hQ}r (jRjShV]hU]hS]hT]hY]uh[Nh\hhC]r heXV>>> article = Article.objects.get(id=102) >>> expand_abbreviations.delay(model_object)r r }r (hHUhIj ubaubh)r }r (hHXNow, the queue is very busy, so the task won't be run for another 2 minutes, in the meantime another author makes some changes to the article, when the task is finally run, the body of the article is reverted to the old version, because the task had the old body in its argument.r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[M|h\hhC]r heXNow, the queue is very busy, so the task won't be run for another 2 minutes, in the meantime another author makes some changes to the article, when the task is finally run, the body of the article is reverted to the old version, because the task had the old body in its argument.r r }r (hHj hIj ubaubh)r }r (hHXnFixing the race condition is easy, just use the article id instead, and re-fetch the article in the task body:r hIj hJhMhOhhQ}r (hS]hT]hU]hV]hY]uh[Mh\hhC]r heXnFixing the race condition is easy, just use the article id instead, and re-fetch the article in the task body:r r! }r" (hHj hIj ubaubjK)r# }r$ (hHX@task def expand_abbreviations(article_id) article = Article.objects.get(id=article_id) article.body.replace("MyCorp", "My Corporation") article.save() >>> expand_abbreviations(article_id)hIj hJhMhOjNhQ}r% (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]r& heX@task def expand_abbreviations(article_id) article = Article.objects.get(id=article_id) article.body.replace("MyCorp", "My Corporation") article.save() >>> expand_abbreviations(article_id)r' r( }r) (hHUhIj# ubaubh)r* }r+ (hHXfThere might even be performance benefits to this approach, as sending large messages may be expensive.r, hIj hJhMhOhhQ}r- (hS]hT]hU]hV]hY]uh[Mh\hhC]r. heXfThere might even be performance benefits to this approach, as sending large messages may be expensive.r/ r0 }r1 (hHj, hIj* ubaubeubhE)r2 }r3 (hHUhIja hJhMhOhPhQ}r4 (hS]hT]hU]hV]r5 h/ahY]r6 h auh[Mh\hhC]r7 (h^)r8 }r9 (hHjhIj2 hJhMhOhbhQ}r: (hV]hU]hS]hT]hY]jjuh[Mh\hhC]r; heXDatabase transactionsr< r= }r> (hHjhIj8 ubaubh)r? }r@ (hHXLet's look at another example:rA hIj2 hJhMhOhhQ}rB (hS]hT]hU]hV]hY]uh[Mh\hhC]rC heXLet's look at another example:rD rE }rF (hHjA hIj? ubaubjK)rG }rH (hHXfrom django.db import transaction @transaction.commit_on_success def create_article(request): article = Article.objects.create(....) expand_abbreviations.delay(article.pk)hIj2 hJhMhOjNhQ}rI (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]rJ heXfrom django.db import transaction @transaction.commit_on_success def create_article(request): article = Article.objects.create(....) expand_abbreviations.delay(article.pk)rK rL }rM (hHUhIjG ubaubh)rN }rO (hHXThis is a Django view creating an article object in the database, then passing its primary key to a task. It uses the `commit_on_success` decorator, which will commit the transaction when the view returns, or roll back if the view raises an exception.hIj2 hJhMhOhhQ}rP (hS]hT]hU]hV]hY]uh[Mh\hhC]rQ (heXvThis is a Django view creating an article object in the database, then passing its primary key to a task. It uses the rR rS }rT (hHXvThis is a Django view creating an article object in the database, then passing its primary key to a task. It uses the hIjN ubjt)rU }rV (hHX`commit_on_success`hQ}rW (hS]hT]hU]hV]hY]uhIjN hC]rX heXcommit_on_successrY rZ }r[ (hHUhIjU ubahOj|ubheXr decorator, which will commit the transaction when the view returns, or roll back if the view raises an exception.r\ r] }r^ (hHXr decorator, which will commit the transaction when the view returns, or roll back if the view raises an exception.hIjN ubeubh)r_ }r` (hHXThere is a race condition if the task starts executing before the transaction has been committed: the database object does not exist yet!ra hIj2 hJhMhOhhQ}rb (hS]hT]hU]hV]hY]uh[Mh\hhC]rc heXThere is a race condition if the task starts executing before the transaction has been committed: the database object does not exist yet!rd re }rf (hHja hIj_ ubaubh)rg }rh (hHX{The solution is to **always commit transactions before applying tasks that depends on state from the current transaction**:hIj2 hJhMhOhhQ}ri (hS]hT]hU]hV]hY]uh[Mh\hhC]rj (heXThe solution is to rk rl }rm (hHXThe solution is to hIjg ubj)rn }ro (hHXg**always commit transactions before applying tasks that depends on state from the current transaction**hQ}rp (hS]hT]hU]hV]hY]uhIjg hC]rq heXcalways commit transactions before applying tasks that depends on state from the current transactionrr rs }rt (hHUhIjn ubahOjubheX:ru }rv (hHX:hIjg ubeubjK)rw }rx (hHX@transaction.commit_manually def create_article(request): try: article = Article.objects.create(...) except: transaction.rollback() raise else: transaction.commit() expand_abbreviations.delay(article.pk)hIj2 hJhMhOjNhQ}ry (jPjQXpythonjRjShV]hU]hS]hT]hY]uh[Mh\hhC]rz heX@transaction.commit_manually def create_article(request): try: article = Article.objects.create(...) except: transaction.rollback() raise else: transaction.commit() expand_abbreviations.delay(article.pk)r{ r| }r} (hHUhIjw ubaubeubeubeubahHUU transformerr~ NU footnote_refsr }r Urefnamesr }r (j ]r j aj]r jaXlogging]r jaXakismet]r (jhjjeuUsymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr ]r U citationsr ]r h\hU current_liner NUtransform_messagesr ]r Ureporterr NUid_startr KU autofootnotesr ]r U citation_refsr }r Uindirect_targetsr ]r Usettingsr (cdocutils.frontend Values r or }r (Ufootnote_backlinksr KUrecord_dependenciesr NU rfc_base_urlr Uhttp://tools.ietf.org/html/r U tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr NhbNUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformr KUwarning_streamr NUpep_file_url_templater Upep-%04dr Uexit_status_levelr KUconfigr NUstrict_visitorr NUcloak_email_addressesr Utrim_footnote_reference_spacer Uenvr NUdump_pseudo_xmlr NUexpose_internalsr NUsectsubtitle_xformr U source_linkr NUrfc_referencesr NUoutput_encodingr Uutf-8r U source_urlr NUinput_encodingr U utf-8-sigr U_disable_configr NU id_prefixr UU tab_widthr KUerror_encodingr UUTF-8r U_sourcer UM/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/tasks.rstr Ugettext_compactr U generatorr NUdump_internalsr NU smart_quotesr U pep_base_urlr Uhttp://www.python.org/dev/peps/r Usyntax_highlightr Ulongr Uinput_encoding_error_handlerr j Uauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesr NU _config_filesr ]Ufile_insertion_enabledr U raw_enabledr KU dump_settingsr NubUsymbol_footnote_startr KUidsr }r (h+j)hXj)r }r (hHUhIhFhJhMhOjhQ}r (hS]hV]r hXahU]UismodhT]hY]uh[Kh\hhC]ubh8jh)hFjfjbh4hrjBj>jjjjj0j,hhjjhhhhhhhhh*jhhhAjjTjPh6j jxjth3j h7jh,jMjjh?j jjh5jh9j jjh2jv jjh.ja h0jjjh1ji hjjjh@j h;j jj h:jh-jhBj h/j2 uUsubstitution_namesr }r hOh\hQ}r (hS]hV]hU]UsourcehMhT]hY]uU footnotesr ]r Urefidsr }r ub.PKHDDy7celery-2.0-archived/.doctrees/userguide/workers.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xinspecting workersqNX workers guideqNXremote shutdownqNXthe broadcast() function.q NXenable/disable eventsq NXpingq NX rate limitsq NXstarting the workerq NXdump of registered tasksqNX(writing your own remote control commandsqNXdump of scheduled (eta) tasksqNXremote controlqNX time limitsqNX concurrencyqNXmax tasks per child settingqNX!dump of currently executing tasksqNXstopping the workerqNXdump of reserved tasksqNXrestarting the workerqNUcontentsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startq KUnameidsq!}q"(hUinspecting-workersq#hU workers-guideq$hUremote-shutdownq%h Uthe-broadcast-functionq&h Uenable-disable-eventsq'h Upingq(h U rate-limitsq)h Ustarting-the-workerq*hUdump-of-registered-tasksq+hU(writing-your-own-remote-control-commandsq,hUdump-of-scheduled-eta-tasksq-hUremote-controlq.hU time-limitsq/hU concurrencyq0hUmax-tasks-per-child-settingq1hU!dump-of-currently-executing-tasksq2hUstopping-the-workerq3hUdump-of-reserved-tasksq4hUrestarting-the-workerq5hUcontentsq6uUchildrenq7]q8cdocutils.nodes section q9)q:}q;(U rawsourceqcdocutils.nodes reprunicode q?XO/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/workers.rstq@qA}qBbUtagnameqCUsectionqDU attributesqE}qF(UdupnamesqG]UclassesqH]UbackrefsqI]UidsqJ]qKh$aUnamesqL]qMhauUlineqNKUdocumentqOhh7]qP(cdocutils.nodes title qQ)qR}qS(hhAhCUtitleqUhE}qV(hG]hH]hI]hJ]hL]uhNKhOhh7]qWcdocutils.nodes Text qXX Workers GuideqYqZ}q[(hhAhCUtopicq_hE}q`(hG]hH]qa(UcontentsqbUlocalqcehI]hJ]qdh6ahL]qehauhNKhOhh7]qfcdocutils.nodes bullet_list qg)qh}qi(hNhCU bullet_listqjhE}qk(hG]hH]hI]hJ]hL]uhNNhOhh7]ql(cdocutils.nodes list_item qm)qn}qo(h(hJ]r?Uid10r@ahI]hG]hH]hL]Urefidh%uh=j8h7]rAhXXRemote shutdownrBrC}rD(hhAhChDhE}r(hG]hH]hI]hJ]rh*ahL]rh auhNK hOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]Urefidrh|uhNK hOhh7]rhXXStarting the workerrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNK hOhh7]rhXXHYou can start celeryd to run in the foreground by executing the command:rr}r(hhAhCU literal_blockrhE}r(U xml:spacerUpreserverhJ]hI]hG]hH]hL]uhNK hOhh7]rhXX$ celeryd --loglevel=INFOrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXX7You probably want to use a daemonization tool to start rr}r(hhAhCjhE}r(UreftypeXdocrUrefwarnrU reftargetrX../cookbook/daemonizingU refdomainUhJ]hI]U refexplicithG]hH]hL]UrefdocrjuhNKh7]rj)r}r(hhAhChhE}r"(hG]hH]hI]hJ]hL]uhNKhOhh7]r#(hXX6For a full list of available command line options see r$r%}r&(hhAhCjhE}r*(UreftypeXmodjjXcelery.bin.celerydU refdomainXpyr+hJ]hI]U refexplicithG]hH]hL]jjUpy:classr,NU py:moduler-NuhNKh7]r.j)r/}r0(hhAhCjhE}r=(jjhJ]hI]hG]hH]hL]uhNKhOhh7]r>hXX$ celeryd --helpr?r@}rA(hhAhChhE}rD(hG]hH]hI]hJ]hL]uhNKhOhh7]rE(hXXYou can also start multiple celeryd's on the same machine. If you do so be sure to give a unique name to each individual worker by specifying a hostname with the rFrG}rH(hhAhCjhE}rU(jjhJ]hI]hG]hH]hL]uhNKhOhh7]rVhXX$ celeryd --loglevel=INFO --concurrency=10 -n worker1.example.com $ celeryd --loglevel=INFO --concurrency=10 -n worker2.example.com $ celeryd --loglevel=INFO --concurrency=10 -n worker3.example.comrWrX}rY(hhAhChDhE}r\(hG]hH]hI]hJ]r]h3ahL]r^hauhNK!hOhh7]r_(hQ)r`}ra(hhAhChUhE}rb(hJ]hI]hG]hH]hL]jhuhNK!hOhh7]rchXXStopping the workerrdre}rf(hhAhChhE}rj(hG]hH]hI]hJ]hL]uhNK#hOhh7]rk(hXX*Shutdown should be accomplished using the rlrm}rn(hhAhChhE}r{(hG]hH]hI]hJ]hL]uhNK%hOhh7]r|(hXXWhen shutdown is initiated the worker will finish any tasks it's currently executing before it terminates, so if these tasks are important you should wait for it to finish before doing anything drastic (like sending the r}r~}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNK*hOhh7]r(hXX}If the worker won't shutdown after considerate time, for example because of tasks stuck in an infinite-loop, you can use the rr}r(hhAhCjhE}r(UreftypeXattrjjXcelery.task.base.Task.acks_lateU refdomainXpyrhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNK*h7]rj)r}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNK0hOhh7]r(hXXAlso, since the rr}r(hhAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNK4hOhh7]rhXX<$ ps auxww | grep celeryd | awk '{print $2}' | xargs kill -9rr}r(hhAhChDhE}r(hG]hH]hI]hJ]rh5ahL]rhauhNK7hOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jhuhNK7hOhh7]rhXXRestarting the workerrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNK9hOhh7]r(hXXcOther than stopping then starting the worker to restart, you can also restart the worker using the rr}r(hhAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNKhAhChhE}r(hG]hH]hI]hJ]hL]uhNK>hOhh7]rhXXhThe worker will then replace itself with a new instance using the same arguments as it was started with.rr}r(hhAhChDhE}r(hG]hH]hI]hJ]rh0ahL]rhauhNKBhOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jhuhNKBhOhh7]rhXX Concurrencyrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKDhOhh7]r(hXXzMultiprocessing is used to perform concurrent execution of tasks. The number of worker processes can be changed using the rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKHhOhh7]rhXXMore worker processes are usually better, but there's a cut-off point where adding more processes affects performance in negative ways. There is even some evidence to support that having multiple celeryd's running, may perform better than having a single worker. For example 3 celeryd's with 10 worker processes each, but you need to experiment to find the values that works best for you as this varies based on application, work load, task run times and other factors.rr}r(hhAhChDhE}r(hG]hH]hI]hJ]rh/ahL]rhauhNKQhOhh7]r(hQ)r}r(hhAhChUhE}r (hJ]hI]hG]hH]hL]jhuhNKQhOhh7]r!hXX Time limitsr"r#}r$(hhAhChhE}r((hG]hH]hI]hJ]hL]uhNKShOhh7]r)hXXA single task can potentially run forever, if you have lots of tasks waiting for some event that will never happen you will block the worker from processing new tasks indefinitely. The best way to defend against this scenario happening is enabling time limits.r*r+}r,(hhAhChhE}r/(hG]hH]hI]hJ]hL]uhNKXhOhh7]r0(hXXThe time limit (r1r2}r3(h}r?(hubahCjubhXX_), this raises an exception the task can catch to clean up before the hard time limit kills it:rErF}rG(hhAhCjhE}rJ(UlinenosrKUlanguagerLXpythonjjhJ]hI]hG]hH]hL]uhNK^hOhh7]rMhXXfrom celery.decorators import task from celery.exceptions import SoftTimeLimitExceeded @task() def mytask(): try: do_work() except SoftTimeLimitExceeded: clean_up_in_a_hurry()rNrO}rP(hhAhChhE}rS(hG]hH]hI]hJ]hL]uhNKjhOhh7]rT(hXX&Time limits can also be set using the rUrV}rW(hhAhChhE}ro(hG]hH]hI]hJ]hL]uhNKmhOhh7]rp(cdocutils.nodes strong rq)rr}rs(hhAhChDhE}r(hG]hH]hI]hJ]rh1ahL]rhauhNKqhOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jhuhNKqhOhh7]rhXXMax tasks per child settingrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKshOhh7]rhXXzWith this option you can configure the maximum number of tasks a worker can execute before it's replaced by a new process.rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKvhOhh7]rhXXmThis is useful if you have memory leaks you have no control over for example from closed source C extensions.rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKyhOhh7]r(hXX The option can be set using the rr}r(hhAhChDhE}r(hG]hH]hI]hJ]rh.ahL]rhauhNK}hOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jhuhNK}hOhh7]rhXXRemote controlrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXXWorkers have the ability to be remote controlled using a high-priority broadcast message queue. The commands can be directed to all, or a specific list of workers.rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXX{Commands can also have replies. The client can then wait for and collect those replies, but since there's no central authority to know how many workers are available in the cluster, there is also no way to estimate how many workers may send a reply. Therefore the client has a configurable timeout — the deadline in seconds for replies to arrive in. This timeout defaults to one second. If the worker doesn't reply within the deadline it doesn't necessarily mean the worker didn't reply, or worse is dead, but may simply be caused by network latency or the worker being slow at processing commands, so adjust the timeout accordingly.rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXXIn addition to timeouts, the client can specify the maximum number of replies to wait for. If a destination is specified this limit is set to the number of destination hosts.rr}r(hhAhChDhE}r(hG]hH]hI]hJ]rh&ahL]rh auhNKhOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jjuhNKhOhh7]r(hXXThe rr}r(hhAhCjhE}r(Ureftypej jjj U refdomainjhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNKh7]rj)r}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXXThis is the client function used to send commands to the workers. Some remote control commands also have higher-level interfaces using rr}r(hhAhCjhE}r (UreftypeXfuncjjXcelery.task.control.broadcastU refdomainXpyr hJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNKh7]r j)r}r(hhAhCjhE}r(UreftypeXfuncjjXcelery.task.control.rate_limitU refdomainXpyrhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNKh7]rj)r }r!(hhAhCjhE}r/(UreftypeXfuncjjXcelery.task.control.pingU refdomainXpyr0hJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNKh7]r1j)r2}r3(h(hhAhChhE}r@(hG]hH]hI]hJ]hL]uhNKhOhh7]rA(hXX Sending the rBrC}rD(h>> from celery.task.control import broadcast >>> broadcast("rate_limit", arguments={"task_name": "myapp.mytask", ... "rate_limit": "200/m"})h=jh>hAhCjhE}rQ(jjhJ]hI]hG]hH]hL]uhNKhOhh7]rRhXX>>> from celery.task.control import broadcast >>> broadcast("rate_limit", arguments={"task_name": "myapp.mytask", ... "rate_limit": "200/m"})rSrT}rU(hhAhChhE}rX(hG]hH]hI]hJ]hL]uhNKhOhh7]rY(hXXoThis will send the command asynchronously, without waiting for a reply. To request a reply you have to use the rZr[}r\(h>> broadcast("rate_limit", {"task_name": "myapp.mytask", ... "rate_limit": "200/m"}, reply=True) [{'worker1.example.com': 'New rate limit set successfully'}, {'worker2.example.com': 'New rate limit set successfully'}, {'worker3.example.com': 'New rate limit set successfully'}]h=jh>hAhCjhE}ri(jjhJ]hI]hG]hH]hL]uhNKhOhh7]rjhXX1>>> broadcast("rate_limit", {"task_name": "myapp.mytask", ... "rate_limit": "200/m"}, reply=True) [{'worker1.example.com': 'New rate limit set successfully'}, {'worker2.example.com': 'New rate limit set successfully'}, {'worker3.example.com': 'New rate limit set successfully'}]rkrl}rm(hhAhChhE}rp(hG]hH]hI]hJ]hL]uhNKhOhh7]rq(hXX Using the rrrs}rt(h>> broadcast >>> broadcast("rate_limit", {"task_name": "myapp.mytask", ... "rate_limit": "200/m"}, reply=True, ... destination=["worker1.example.com"]) [{'worker1.example.com': 'New rate limit set successfully'}]h=jh>hAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNKhOhh7]rhXX>>> broadcast >>> broadcast("rate_limit", {"task_name": "myapp.mytask", ... "rate_limit": "200/m"}, reply=True, ... destination=["worker1.example.com"]) [{'worker1.example.com': 'New rate limit set successfully'}]rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXXOf course, using the higher-level interface to set rate limits is much more convenient, but there are commands that can only be requested using rr}r(hhAhCjhE}r(UreftypeXfuncjjXcelery.task.control.broadcastU refdomainXpyrhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNKh7]rj)r}r(hhAhChDhE}r(hG]hH]hI]hJ]rh)ahL]rh auhNKhOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jj.uhNKhOhh7]rhXX Rate limitsrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXX(Example changing the rate limit for the rr}r(h>> from celery.task.control import rate_limit >>> rate_limit("myapp.mytask", "200/m")h=jh>NhCU doctest_blockrhE}r(jjhJ]hI]hG]hH]hL]uhNNhOhh7]rhXXV>>> from celery.task.control import rate_limit >>> rate_limit("myapp.mytask", "200/m")rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXXXExample changing the rate limit on a single host by specifying the destination hostname:rr}r(h>> rate_limit("myapp.mytask", "200/m", ... destination=["worker1.example.com"])h=jh>hAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNKhOhh7]rhXX[>>> rate_limit("myapp.mytask", "200/m", ... destination=["worker1.example.com"])rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(jq)r}r(hhAhChDhE}r(hG]hH]hI]hJ]rh%ahL]rhauhNKhOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jj@uhNKhOhh7]rhXXRemote shutdownrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXX;This command will gracefully shut down the worker remotely:rr}r(h>> broadcast("shutdown") # shutdown all workers >>> broadcast("shutdown, destination="worker1.example.com")h=jh>hAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNKhOhh7]rhXXl>>> broadcast("shutdown") # shutdown all workers >>> broadcast("shutdown, destination="worker1.example.com")rr}r(hhAhChDhE}r (hG]hH]hI]hJ]r h(ahL]r h auhNKhOhh7]r (hQ)r }r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jjRuhNKhOhh7]rhXXPingrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXXThis command requests a ping from alive workers. The workers reply with the string 'pong', and that's just about it. It will use the default one second timeout for replies unless you specify a custom timeout:rr}r(h>> from celery.task.control import ping >>> ping(timeout=0.5) [{'worker1.example.com': 'pong'}, {'worker2.example.com': 'pong'}, {'worker3.example.com': 'pong'}]h=jh>hAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNKhOhh7]rhXX>>> from celery.task.control import ping >>> ping(timeout=0.5) [{'worker1.example.com': 'pong'}, {'worker2.example.com': 'pong'}, {'worker3.example.com': 'pong'}]rr }r!(hhAhChhE}r$(hG]hH]hI]hJ]hL]uhNKhOhh7]r%(j)r&}r'(hhAhCjhE}r)(UreftypeXfuncjjXcelery.task.control.pingU refdomainXpyr*hJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNKh7]r+j)r,}r-(h(h>> ping(['worker2.example.com', 'worker3.example.com']) [{'worker2.example.com': 'pong'}, {'worker3.example.com': 'pong'}]h=jh>hAhCjhE}rD(jjhJ]hI]hG]hH]hL]uhNKhOhh7]rEhXX|>>> ping(['worker2.example.com', 'worker3.example.com']) [{'worker2.example.com': 'pong'}, {'worker3.example.com': 'pong'}]rFrG}rH(hhAhChDhE}rK(hG]hH]hI]hJ]rLh'ahL]rMh auhNKhOhh7]rN(hQ)rO}rP(hhAhChUhE}rQ(hJ]hI]hG]hH]hL]jjduhNKhOhh7]rRhXXEnable/disable eventsrSrT}rU(hhAhChhE}rX(hG]hH]hI]hJ]hL]uhNKhOhh7]rY(hXX+You can enable/disable events by using the rZr[}r\(h>>> broadcast("enable_events") >>> broadcast("disable_events")h=jIh>NhCjhE}rs(jjhJ]hI]hG]hH]hL]uhNNhOhh7]rthXX>>>> broadcast("enable_events") >>> broadcast("disable_events")rurv}rw(hhAhChDhE}rz(hG]hH]hI]hJ]r{h,ahL]r|hauhNKhOhh7]r}(hQ)r~}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jjvuhNKhOhh7]rhXX(Writing your own remote control commandsrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXXiRemote control commands are registered in the control panel and they take a single argument: the current rr}r(hhAhCjhE}r(UreftypeXclassjjX%celery.worker.control.ControlDispatchU refdomainXpyrhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNKh7]rj)r}r(hhAhCjhE}r(UreftypeXclassjjX%celery.worker.listener.CarrotListenerU refdomainXpyrhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNKh7]rj)r}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXXFHere's an example control command that restarts the broker connection:rr}r(hhAhCjhE}r(jKjLXpythonjjhJ]hI]hG]hH]hL]uhNKhOhh7]rhXXfrom celery.worker.control import Panel @Panel.register def reset_connection(panel): panel.logger.critical("Connection reset by remote control.") panel.listener.reset_connection() return {"ok": "connection reset"}rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNMhOhh7]r(hXXhThese can be added to task modules, or you can keep them in their own module then import them using the rr}r(hhAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNM hOhh7]rhXX+CELERY_IMPORTS = ("myapp.worker.control", )rr}r(hhAhChDhE}r(hG]hH]hI]hJ]rh#ahL]rhauhNM hOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jjuhNM hOhh7]rhXXInspecting workersrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNMhOhh7]r(j)r}r(hhAhCjhE}r(UreftypeXclassjjXcelery.task.control.inspectU refdomainXpyrhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNMh7]rj)r}r(h>> from celery.task.control import inspect # Inspect all nodes. >>> i = inspect() # Specify multiple nodes to inspect. >>> i = inspect(["worker1.example.com", "worker2.example.com"]) # Specify a single node to inspect. >>> i = inspect("worker1.example.com")h=jh>hAhCjhE}r(jKjLXpythonjjhJ]hI]hG]hH]hL]uhNMhOhh7]rhXX>>> from celery.task.control import inspect # Inspect all nodes. >>> i = inspect() # Specify multiple nodes to inspect. >>> i = inspect(["worker1.example.com", "worker2.example.com"]) # Specify a single node to inspect. >>> i = inspect("worker1.example.com")rr}r(hhAhChDhE}r(hG]hH]hI]hJ]rh+ahL]rhauhNM hOhh7]r(hQ)r}r(hhAhChUhE}r (hJ]hI]hG]hH]hL]jjuhNM hOhh7]r hXXDump of registered tasksr r }r (hhAhChhE}r(hG]hH]hI]hJ]hL]uhNM"hOhh7]r(hXX?You can get a list of tasks registered in the worker using the rr}r(hhAhCjhE}r(UreftypeXmethjjX,celery.task.control.inspect.registered_tasksU refdomainXpyrhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNM"h7]rj)r}r(h>> i.registered_tasks() [{'worker1.example.com': ['celery.delete_expired_task_meta', 'celery.execute_remote', 'celery.map_async', 'celery.ping', 'celery.task.http.HttpDispatchTask', 'tasks.add', 'tasks.sleeptask']}]h=jh>hAhCjhE}r((jjhJ]hI]hG]hH]hL]uhNM%hOhh7]r)hXXt>>> i.registered_tasks() [{'worker1.example.com': ['celery.delete_expired_task_meta', 'celery.execute_remote', 'celery.map_async', 'celery.ping', 'celery.task.http.HttpDispatchTask', 'tasks.add', 'tasks.sleeptask']}]r*r+}r,(hhAhChDhE}r/(hG]hH]hI]hJ]r0h2ahL]r1hauhNM/hOhh7]r2(hQ)r3}r4(hhAhChUhE}r5(hJ]hI]hG]hH]hL]jjuhNM/hOhh7]r6hXX!Dump of currently executing tasksr7r8}r9(hhAhChhE}r<(hG]hH]hI]hJ]hL]uhNM1hOhh7]r=(hXX)You can get a list of active tasks using r>r?}r@(hhAhCjhE}rD(UreftypeXmethjjX"celery.task.control.inspect.activeU refdomainXpyrEhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNM1h7]rFj)rG}rH(h>> i.active() [{'worker1.example.com': [{"name": "tasks.sleeptask", "id": "32666e9b-809c-41fa-8e93-5ae0c80afbbf", "args": "(8,)", "kwargs": "{}"}]}]h=j-h>hAhCjhE}rT(jjhJ]hI]hG]hH]hL]uhNM4hOhh7]rUhXX>>> i.active() [{'worker1.example.com': [{"name": "tasks.sleeptask", "id": "32666e9b-809c-41fa-8e93-5ae0c80afbbf", "args": "(8,)", "kwargs": "{}"}]}]rVrW}rX(hhAhChDhE}r[(hG]hH]hI]hJ]r\h-ahL]r]hauhNM=hOhh7]r^(hQ)r_}r`(hhAhChUhE}ra(hJ]hI]hG]hH]hL]jjuhNM=hOhh7]rbhXXDump of scheduled (ETA) tasksrcrd}re(hhAhChhE}rh(hG]hH]hI]hJ]hL]uhNM?hOhh7]ri(hXX=You can get a list of tasks waiting to be scheduled by using rjrk}rl(hhAhCjhE}rp(UreftypeXmethjjX%celery.task.control.inspect.scheduledU refdomainXpyrqhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNM?h7]rrj)rs}rt(h>> i.scheduled() [{'worker1.example.com': [{"eta": "2010-06-07 09:07:52", "priority": 0, "request": { "name": "tasks.sleeptask", "id": "1a7980ea-8b19-413e-91d2-0b74f3844c4d", "args": "[1]", "kwargs": "{}"}}, {"eta": "2010-06-07 09:07:53", "priority": 0, "request": { "name": "tasks.sleeptask", "id": "49661b9a-aa22-4120-94b7-9ee8031d219d", "args": "[2]", "kwargs": "{}"}}]}]h=jYh>hAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNMBhOhh7]rhXX>>> i.scheduled() [{'worker1.example.com': [{"eta": "2010-06-07 09:07:52", "priority": 0, "request": { "name": "tasks.sleeptask", "id": "1a7980ea-8b19-413e-91d2-0b74f3844c4d", "args": "[1]", "kwargs": "{}"}}, {"eta": "2010-06-07 09:07:53", "priority": 0, "request": { "name": "tasks.sleeptask", "id": "49661b9a-aa22-4120-94b7-9ee8031d219d", "args": "[2]", "kwargs": "{}"}}]}]rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNMQhOhh7]rhXXMNote that these are tasks with an eta/countdown argument, not periodic tasks.rr}r(hhAhChDhE}r(hG]hH]hI]hJ]rh4ahL]rhauhNMThOhh7]r(hQ)r}r(hhAhChUhE}r(hJ]hI]hG]hH]hL]jjuhNMThOhh7]rhXXDump of reserved tasksrr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNMVhOhh7]rhXXUReserved tasks are tasks that has been received, but is still waiting to be executed.rr}r(hhAhChhE}r(hG]hH]hI]hJ]hL]uhNMYhOhh7]r(hXX"You can get a list of these using rr}r(hhAhCjhE}r(UreftypeXmethjjX$celery.task.control.inspect.reservedU refdomainXpyrhJ]hI]U refexplicithG]hH]hL]jjj,Nj-NuhNMYh7]rj)r}r(h>> i.reserved() [{'worker1.example.com': [{"name": "tasks.sleeptask", "id": "32666e9b-809c-41fa-8e93-5ae0c80afbbf", "args": "(8,)", "kwargs": "{}"}]}]h=jh>hAhCjhE}r(jjhJ]hI]hG]hH]hL]uhNM\hOhh7]rhXX>>> i.reserved() [{'worker1.example.com': [{"name": "tasks.sleeptask", "id": "32666e9b-809c-41fa-8e93-5ae0c80afbbf", "args": "(8,)", "kwargs": "{}"}]}]rr}r(h}q?(h h8h!h6ubaubcdocutils.nodes topic q@)qA}qB(h Uh!hh"h%h'UtopicqCh)}qD(h+]h,]qE(UcontentsqFUlocalqGeh-]h.]qHhah0]qIh auh2Kh3hh]qJcdocutils.nodes bullet_list qK)qL}qM(h Uh!hAh"Nh'U bullet_listqNh)}qO(h+]h,]h-]h.]h0]uh2Nh3hh]qP(cdocutils.nodes list_item qQ)qR}qS(h Uh)}qT(h+]h,]h-]h.]h0]uh!hLh]qU(cdocutils.nodes paragraph qV)qW}qX(h Uh)}qY(h+]h,]h-]h.]h0]uh!hRh]qZcdocutils.nodes reference q[)q\}q](h Uh)}q^(h.]q_Uid1q`ah-]h+]h,]h0]Urefidhuh!hWh]qah>> s = subtask("tasks.add", args=(2, 2), kwargs={}) >>> subtask(dict(s)) # coerce dict into subtaskh!hh"h%h'hh)}r%(hhh.]h-]h+]h,]h0]uh2Kh3hh]r&h>> s = subtask("tasks.add", args=(2, 2), kwargs={}) >>> subtask(dict(s)) # coerce dict into subtaskr'r(}r)(h Uh!j#ubaubhV)r*}r+(h XEThis makes it excellent as a means to pass callbacks around to tasks.r,h!hh"h%h'hgh)}r-(h+]h,]h-]h.]h0]uh2Kh3hh]r.h(h h}h!j8ubaubhV)r?}r@(h XaLet's improve our ``add`` task so it can accept a callback that takes the result as an argument::h!j2h"h%h'hgh)}rA(h+]h,]h-]h.]h0]uh2K#h3hh]rB(h>> add.subtask(args=(10, ))h!j2h"h%h'hh)}r(hhh.]h-]h+]h,]h0]uh2K9h3hh]rh>> add.subtask(args=(10, ))rr}r(h Uh!jubaubhV)r}r(h X#``subtask.delay(result)`` becomes::rh!j2h"h%h'hgh)}r(h+]h,]h-]h.]h0]uh2K;h3hh]r(h)r}r(h X``subtask.delay(result)``h)}r(h+]h,]h-]h.]h0]uh!jh]rh>> add.apply_async(args=(result, 10))h!j2h"h%h'hh)}r(hhh.]h-]h+]h,]h0]uh2K=h3hh]rh>> add.apply_async(args=(result, 10))rr}r(h Uh!jubaubhV)r}r(h X8Now let's execute our new ``add`` task with a callback::rh!j2h"h%h'hgh)}r(h+]h,]h-]h.]h0]uh2K?h3hh]r(h>> add.delay(2, 2, callback=add.subtask((8, )))h!j2h"h%h'hh)}r(hhh.]h-]h+]h,]h0]uh2KAh3hh]rh>> add.delay(2, 2, callback=add.subtask((8, )))rr}r(h Uh!jubaubhV)r}r(h XkAs expected this will first launch one task calculating ``2 + 2``, then another task calculating ``4 + 8``.h!j2h"h%h'hgh)}r(h+]h,]h-]h.]h0]uh2KCh3hh]r(h>> from celery.task.sets import TaskSet >>> from tasks import add >>> job = TaskSet(tasks=[ ... add.subtask((4, 4)), ... add.subtask((8, 8)), ... add.subtask((16, 16)), ... add.subtask((32, 32)), ... ]) >>> result = job.apply_async() >>> result.ready() # has all subtasks completed? True >>> result.successful() # was all subtasks successful? >>> result.join() [4, 8, 16, 32, 64]h!jh"h%h'hh)}r>(hhh.]h-]h+]h,]h0]uh2KOh3hh]r?h>> from celery.task.sets import TaskSet >>> from tasks import add >>> job = TaskSet(tasks=[ ... add.subtask((4, 4)), ... add.subtask((8, 8)), ... add.subtask((16, 16)), ... add.subtask((32, 32)), ... ]) >>> result = job.apply_async() >>> result.ready() # has all subtasks completed? True >>> result.successful() # was all subtasks successful? >>> result.join() [4, 8, 16, 32, 64]r@rA}rB(h Uh!j<ubaubh)rC}rD(h Uh!jh"h%h'h(h)}rE(h+]h,]h-]h.]rFhah0]rGhauh2Kdh3hh]rH(h5)rI}rJ(h hh!jCh"h%h'h9h)}rK(h.]h-]h+]h,]h0]hhuh2Kdh3hh]rLhReturns :const:`True` if any of the subtasks is not ready yet.h!j1h"h%h'hgh)}r7(h+]h,]h-]h.]h0]uh2Kzh]r8(hh!j5h"h%h'hh)}r?(UreftypeXconsth‰hXTrueU refdomainXpyr@h.]h-]U refexplicith+]h,]h0]hhhNhNuh2Kzh]rAh)rB}rC(h j>h)}rD(h+]h,]rE(hj@Xpy-constrFeh-]h.]h0]uh!j<h]rGhUstrictr?U sectnum_xformr@KUdump_transformsrANU docinfo_xformrBKUwarning_streamrCNUpep_file_url_templaterDUpep-%04drEUexit_status_levelrFKUconfigrGNUstrict_visitorrHNUcloak_email_addressesrIUtrim_footnote_reference_spacerJUenvrKNUdump_pseudo_xmlrLNUexpose_internalsrMNUsectsubtitle_xformrNU source_linkrONUrfc_referencesrPNUoutput_encodingrQUutf-8rRU source_urlrSNUinput_encodingrTU utf-8-sigrUU_disable_configrVNU id_prefixrWUU tab_widthrXKUerror_encodingrYUUTF-8rZU_sourcer[UP/var/build/user_builds/celery/checkouts/2.0-archived/docs/userguide/tasksets.rstr\Ugettext_compactr]U generatorr^NUdump_internalsr_NU smart_quotesr`U pep_base_urlraUhttp://www.python.org/dev/peps/rbUsyntax_highlightrcUlongrdUinput_encoding_error_handlerrej?Uauto_id_prefixrfUidrgUdoctitle_xformrhUstrip_elements_with_classesriNU _config_filesrj]Ufile_insertion_enabledrkU raw_enabledrlKU dump_settingsrmNubUsymbol_footnote_startrnKUidsro}rp(hhhjhhhhhhhxhthjCh`h\hj2hhAuUsubstitution_namesrq}rrh'h3h)}rs(h+]h.]h-]Usourceh%h,]h0]uU footnotesrt]ruUrefidsrv}rwub.PKHDD?celery-2.0-archived/.doctrees/releases/1.0/announcement.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X changelogqX celerymonqX resourcesqNXfeaturesq NX what is it?q NXtoken bucket algorithmq X stable apiq NXrabbitmqq X what's new?qNXcelery deprecation timelineqXcelery 1.0 has been released!qNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU changelogqhU celerymonqhU resourcesqh Ufeaturesqh U what-is-itqh Utoken-bucket-algorithmqh U stable-apiq h Urabbitmqq!hU what-s-newq"hUcelery-deprecation-timelineq#hUcelery-1-0-has-been-releasedq$uUchildrenq%]q&cdocutils.nodes section q')q(}q)(U rawsourceq*UUparentq+hUsourceq,cdocutils.nodes reprunicode q-XW/var/build/user_builds/celery/checkouts/2.0-archived/docs/releases/1.0/announcement.rstq.q/}q0bUtagnameq1Usectionq2U attributesq3}q4(Udupnamesq5]Uclassesq6]Ubackrefsq7]Uidsq8]q9h$aUnamesq:]q;hauUlineq(cdocutils.nodes title q?)q@}qA(h*XCelery 1.0 has been released!qBh+h(h,h/h1UtitleqCh3}qD(h5]h6]h7]h8]h:]uh(h)r?}r@(h*XTask decorators Write tasks as regular functions and decorate them. There are both :func:`task`, and :func:`periodic_task` decorators. h+j;h,h/h1hh3}rA(h5]h6]h7]h8]h:]uhEvents If enabled, the worker will send events, telling you what tasks it executes, their results, and how long it took to execute them. It also sends out heartbeats, so listeners are able to detect nonfunctional workers. This is the basis for the new real-time web monitor we're working on (`celerymon`_). h+j;h,h/h1hh3}r(h5]h6]h7]h8]h:]uh}r?(h*X! If you're only running a single h+j0ubh)r@}rA(h*X ``celeryd``h3}rB(h5]h6]h7]h8]h:]uh+j0h%]rChFXcelerydrDrE}rF(h*Uh+j@ubah1hubhFX server, you can embed rGrH}rI(h*X server, you can embed h+j0ubh)rJ}rK(h*X``celerybeat``h3}rL(h5]h6]h7]h8]h:]uh+j0h%]rMhFX celerybeatrNrO}rP(h*Uh+jJubah1hubhFX inside it. Just add the rQrR}rS(h*X inside it. Just add the h+j0ubh)rT}rU(h*X ``--beat``h3}rV(h5]h6]h7]h8]h:]uh+j0h%]rWhFX--beatrXrY}rZ(h*Uh+jTubah1hubhFX argument.r[r\}r](h*X argument.h+j0ubeubeubh)r^}r_(h*XcBroadcast commands If you change your mind and don't want to run a task after all, you now have the option to revoke it. Also, you can rate limit tasks or even shut down the worker remotely. It doesn't have many commands yet, but we're waiting for broadcast commands to reach its full potential, so please share your ideas if you have any. h+jh,h/h1hh3}r`(h5]h6]h7]h8]h:]uhr?}r@(h*X& listings. Just install it using pip: h+jubh)rA}rB(h*X``pip install setproctitle``h3}rC(h5]h6]h7]h8]h:]uh+jh%]rDhFXpip install setproctitlerErF}rG(h*Uh+jAubah1hubhFX.rH}rI(h*X.h+jubeubeubh')rJ}rK(h*Uh+h(h,h/h1h2h3}rL(h5]h6]h7]h8]rMhah:]rNhauhU_sourcer?UW/var/build/user_builds/celery/checkouts/2.0-archived/docs/releases/1.0/announcement.rstr@Ugettext_compactrAU generatorrBNUdump_internalsrCNU smart_quotesrDU pep_base_urlrEUhttp://www.python.org/dev/peps/rFUsyntax_highlightrGUlongrHUinput_encoding_error_handlerrIj#Uauto_id_prefixrJUidrKUdoctitle_xformrLUstrip_elements_with_classesrMNU _config_filesrN]Ufile_insertion_enabledrOU raw_enabledrPKU dump_settingsrQNubUsymbol_footnote_startrRKUidsrS}rT(h hh"j-hhThjhjh!hhjh$h(h#j(hjJhhuUsubstitution_namesrU}rVh1h=h3}rW(h5]h8]h7]Usourceh/h6]h:]uU footnotesrX]rYUrefidsrZ}r[ub.PKHDDFJ`J`8celery-2.0-archived/.doctrees/tutorials/external.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X*tutorials and resources from the communityqNX%how to get celeryd to work on freebsdqNXpyweb-ilqX:large problems in django, mostly solved: delayed executionq NUcontentsq NXrabbitmq, celery and djangoq NXintroduction to celeryq NXKbuild a processing queue [...] in less than a day using rabbitmq and celeryq NXOdjango/celery quickstart (or, how i learned to stop using cron and love celery)qNXthinkingcactusqX;background task processing and deferred execution in djangoqNXrabbitmq with python and rubyqNXtim bullqX-message queues, django and celery quick startqNXrobert pogorzelskiqX!queued storage backend for djangoqNXviktor peterssonqX idan gazitqX alon swartzqX1how celery, carrot, and your messaging stack workqNXweb-based 3d animation softwareqNX rich lelandquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceq NU decorationq!NUautofootnote_startq"KUnameidsq#}q$(hU*tutorials-and-resources-from-the-communityq%hU%how-to-get-celeryd-to-work-on-freebsdq&hUpyweb-ilq'h U8large-problems-in-django-mostly-solved-delayed-executionq(h Ucontentsq)h Urabbitmq-celery-and-djangoq*h Uintroduction-to-celeryq+h UEbuild-a-processing-queue-in-less-than-a-day-using-rabbitmq-and-celeryq,hULdjango-celery-quickstart-or-how-i-learned-to-stop-using-cron-and-love-celeryq-hUthinkingcactusq.hU;background-task-processing-and-deferred-execution-in-djangoq/hUrabbitmq-with-python-and-rubyq0hUtim-bullq1hU,message-queues-django-and-celery-quick-startq2hUrobert-pogorzelskiq3hU!queued-storage-backend-for-djangoq4hUviktor-peterssonq5hU idan-gazitq6hU alon-swartzq7hU/how-celery-carrot-and-your-messaging-stack-workq8hUweb-based-3d-animation-softwareq9hU rich-lelandq:uUchildrenq;]q}q?(U rawsourceq@UUparentqAhUsourceqBcdocutils.nodes reprunicode qCXP/var/build/user_builds/celery/checkouts/2.0-archived/docs/tutorials/external.rstqDqE}qFbUtagnameqGUsectionqHU attributesqI}qJ(UdupnamesqK]UclassesqL]UbackrefsqM]UidsqN]qOh%aUnamesqP]qQhauUlineqRKUdocumentqShh;]qT(cdocutils.nodes title qU)qV}qW(h@X*Tutorials and resources from the communityqXhAh>hBhEhGUtitleqYhI}qZ(hK]hL]hM]hN]hP]uhRKhShh;]q[cdocutils.nodes Text q\X*Tutorials and resources from the communityq]q^}q_(h@hXhAhVubaubcdocutils.nodes paragraph q`)qa}qb(h@XThis is a list of external blog posts, tutorials and slides related to Celery. If you have a link that's missing from this list, please contact the mailing-list or submit a patch.qchAh>hBhEhGU paragraphqdhI}qe(hK]hL]hM]hN]hP]uhRKhShh;]qfh\XThis is a list of external blog posts, tutorials and slides related to Celery. If you have a link that's missing from this list, please contact the mailing-list or submit a patch.qgqh}qi(h@hchAhaubaubcdocutils.nodes topic qj)qk}ql(h@UhAh>hBhEhGUtopicqmhI}qn(hK]hL]qo(UcontentsqpUlocalqqehM]hN]qrh)ahP]qsh auhRK hShh;]qtcdocutils.nodes bullet_list qu)qv}qw(h@UhAhkhBNhGU bullet_listqxhI}qy(hK]hL]hM]hN]hP]uhRNhShh;]qz(cdocutils.nodes list_item q{)q|}q}(h@UhI}q~(hK]hL]hM]hN]hP]uhAhvh;]qh`)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAh|h;]qcdocutils.nodes reference q)q}q(h@UhI}q(hN]qUid1qahM]hK]hL]hP]Urefidh-uhAhh;]qh\XODjango/Celery Quickstart (or, how I learned to stop using cron and love celery)qq}q(h@XODjango/Celery Quickstart (or, how I learned to stop using cron and love celery)qhAhubahGU referencequbahGhdubahGU list_itemqubh{)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhvh;]qh`)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhh;]qh)q}q(h@UhI}q(hN]qUid2qahM]hK]hL]hP]Urefidh8uhAhh;]qh\X1How Celery, Carrot, and your messaging stack workqq}q(h@X1How Celery, Carrot, and your messaging stack workqhAhubahGhubahGhdubahGhubh{)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhvh;]qh`)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhh;]qh)q}q(h@UhI}q(hN]qUid3qahM]hK]hL]hP]Urefidh(uhAhh;]qh\X:Large Problems in Django, Mostly Solved: Delayed Executionqq}q(h@X:Large Problems in Django, Mostly Solved: Delayed ExecutionqhAhubahGhubahGhdubahGhubh{)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhvh;]qh`)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhh;]qh)q}q(h@UhI}q(hN]qUid4qahM]hK]hL]hP]Urefidh+uhAhh;]qh\XIntroduction to CeleryqÅq}q(h@XIntroduction to CeleryqhAhubahGhubahGhdubahGhubh{)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhvh;]qh`)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhh;]qh)q}q(h@UhI}q(hN]qUid5qahM]hK]hL]hP]Urefidh*uhAhh;]qh\XRabbitMQ, Celery and DjangoqՅq}q(h@XRabbitMQ, Celery and DjangoqhAhubahGhubahGhdubahGhubh{)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhvh;]qh`)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhh;]qh)q}q(h@UhI}q(hN]qUid6qahM]hK]hL]hP]Urefidh2uhAhh;]qh\X-Message Queues, Django and Celery Quick Startq煁q}q(h@X-Message Queues, Django and Celery Quick StartqhAhubahGhubahGhdubahGhubh{)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhvh;]qh`)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhh;]qh)q}q(h@UhI}q(hN]qUid7qahM]hK]hL]hP]Urefidh/uhAhh;]qh\X;Background task processing and deferred execution in Djangoqq}q(h@X;Background task processing and deferred execution in DjangoqhAhubahGhubahGhdubahGhubh{)q}q(h@UhI}q(hK]hL]hM]hN]hP]uhAhvh;]rh`)r}r(h@UhI}r(hK]hL]hM]hN]hP]uhAhh;]rh)r}r(h@UhI}r(hN]rUid8r ahM]hK]hL]hP]Urefidh,uhAjh;]r h\XKBuild a processing queue [...] in less than a day using RabbitMQ and Celeryr r }r (h@XKBuild a processing queue [...] in less than a day using RabbitMQ and CeleryrhAjubahGhubahGhdubahGhubh{)r}r(h@UhI}r(hK]hL]hM]hN]hP]uhAhvh;]rh`)r}r(h@UhI}r(hK]hL]hM]hN]hP]uhAjh;]rh)r}r(h@UhI}r(hN]rUid9rahM]hK]hL]hP]Urefidh&uhAjh;]rh\X%How to get celeryd to work on FreeBSDrr}r(h@X%How to get celeryd to work on FreeBSDr hAjubahGhubahGhdubahGhubh{)r!}r"(h@UhI}r#(hK]hL]hM]hN]hP]uhAhvh;]r$h`)r%}r&(h@UhI}r'(hK]hL]hM]hN]hP]uhAj!h;]r(h)r)}r*(h@UhI}r+(hN]r,Uid10r-ahM]hK]hL]hP]Urefidh9uhAj%h;]r.h\XWeb-based 3D animation softwarer/r0}r1(h@XWeb-based 3D animation softwarer2hAj)ubahGhubahGhdubahGhubh{)r3}r4(h@UhI}r5(hK]hL]hM]hN]hP]uhAhvh;]r6h`)r7}r8(h@UhI}r9(hK]hL]hM]hN]hP]uhAj3h;]r:h)r;}r<(h@UhI}r=(hN]r>Uid11r?ahM]hK]hL]hP]Urefidh4uhAj7h;]r@h\X!Queued Storage Backend for DjangorArB}rC(h@X!Queued Storage Backend for DjangorDhAj;ubahGhubahGhdubahGhubh{)rE}rF(h@UhI}rG(hK]hL]hM]hN]hP]uhAhvh;]rHh`)rI}rJ(h@UhI}rK(hK]hL]hM]hN]hP]uhAjEh;]rLh)rM}rN(h@UhI}rO(hN]rPUid12rQahM]hK]hL]hP]Urefidh0uhAjIh;]rRh\XRabbitMQ with Python and RubyrSrT}rU(h@XRabbitMQ with Python and RubyrVhAjMubahGhubahGhdubahGhubeubaubh=)rW}rX(h@UhAh>hBhEhGhHhI}rY(hK]hL]hM]hN]rZh-ahP]r[hauhRK hShh;]r\(hU)r]}r^(h@hhAjWhBhEhGhYhI}r_(hN]hM]hK]hL]hP]Urefidr`huhRK hShh;]rah\XODjango/Celery Quickstart (or, how I learned to stop using cron and love celery)rbrc}rd(h@hhAj]ubaubh`)re}rf(h@XLhttp://bitkickers.blogspot.com/2010/07/djangocelery-quickstart-or-how-i.htmlrghAjWhBhEhGhdhI}rh(hK]hL]hM]hN]hP]uhRKhShh;]rih)rj}rk(h@jghI}rl(UrefurijghN]hM]hK]hL]hP]uhAjeh;]rmh\XLhttp://bitkickers.blogspot.com/2010/07/djangocelery-quickstart-or-how-i.htmlrnro}rp(h@UhAjjubahGhubaubeubh=)rq}rr(h@UhAh>hBhEhGhHhI}rs(hK]hL]hM]hN]rth8ahP]ruhauhRKhShh;]rv(hU)rw}rx(h@hhAjqhBhEhGhYhI}ry(hN]hM]hK]hL]hP]j`huhRKhShh;]rzh\X1How Celery, Carrot, and your messaging stack workr{r|}r}(h@hhAjwubaubh`)r~}r(h@XDhttp://jasonmbaker.com/how-celery-carrot-and-your-messaging-stack-worhAjqhBhEhGhdhI}r(hK]hL]hM]hN]hP]uhRKhShh;]rh)r}r(h@jhI}r(UrefurijhN]hM]hK]hL]hP]uhAj~h;]rh\XDhttp://jasonmbaker.com/how-celery-carrot-and-your-messaging-stack-worr}r(h@UhAjubahGhubaubeubh=)r}r(h@UhAh>hBhEhGhHhI}r(hK]hL]hM]hN]rh(ahP]rh auhRKhShh;]r(hU)r}r(h@hhAjhBhEhGhYhI}r(hN]hM]hK]hL]hP]j`huhRKhShh;]rh\X:Large Problems in Django, Mostly Solved: Delayed Executionrr}r(h@hhAjubaubh`)r}r(h@X\http://ericholscher.com/blog/2010/jun/23/large-problems-django-mostly-solved-delayed-execut/rhAjhBhEhGhdhI}r(hK]hL]hM]hN]hP]uhRKhShh;]rh)r}r(h@jhI}r(UrefurijhN]hM]hK]hL]hP]uhAjh;]rh\X\http://ericholscher.com/blog/2010/jun/23/large-problems-django-mostly-solved-delayed-execut/rr}r(h@UhAjubahGhubaubeubh=)r}r(h@UhAh>hBhEhGhHhI}r(hK]hL]hM]hN]rh+ahP]rh auhRKhShh;]r(hU)r}r(h@hhAjhBhEhGhYhI}r(hN]hM]hK]hL]hP]j`huhRKhShh;]rh\XIntroduction to Celeryrr}r(h@hhAjubaubh`)r}r(h@XAwesome slides from when `Idan Gazit`_ had a talk about Celery at `PyWeb-IL`_: http://www.slideshare.net/idangazit/an-introduction-to-celeryhAjhBhEhGhdhI}r(hK]hL]hM]hN]hP]uhRKhShh;]r(h\XAwesome slides from when rr}r(h@XAwesome slides from when hAjubh)r}r(h@X `Idan Gazit`_UresolvedrKhAjhGhhI}r(UnameX Idan GazitUrefurirXhttp://twitter.com/IdanGazitrhN]hM]hK]hL]hP]uh;]rh\X Idan Gazitrr}r(h@UhAjubaubh\X had a talk about Celery at rr}r(h@X had a talk about Celery at hAjubh)r}r(h@X `PyWeb-IL`_jKhAjhGhhI}r(UnameXPyWeb-ILjX'http://groups.google.com/group/pyweb-ilrhN]hM]hK]hL]hP]uh;]rh\XPyWeb-ILrr}r(h@UhAjubaubh\X: rr}r(h@X: hAjubh)r}r(h@X=http://www.slideshare.net/idangazit/an-introduction-to-celeryrhI}r(UrefurijhN]hM]hK]hL]hP]uhAjh;]rh\X=http://www.slideshare.net/idangazit/an-introduction-to-celeryrr}r(h@UhAjubahGhubeubcdocutils.nodes target r)r}r(h@X... _`Idan Gazit`: http://twitter.com/IdanGazitU referencedrKhAjhBhEhGUtargetrhI}r(jjhN]rh6ahM]hK]hL]hP]rhauhRKhShh;]ubj)r}r(h@X7.. _`PyWeb-IL`: http://groups.google.com/group/pyweb-iljKhAjhBhEhGjhI}r(jjhN]rh'ahM]hK]hL]hP]rhauhRKhShh;]ubcdocutils.nodes raw r)r}r(h@UhAjhBhEhGUrawrhI}r(UformatXhtmlU xml:spacerUpreserverhN]hM]hK]hL]hP]uhRK!hShh;]rh\Xrr}r(h@UhAjubaubeubh=)r}r(h@UhAh>hBhEhGhHhI}r(hK]hL]hM]hN]rh*ahP]rh auhRK4hShh;]r(hU)r}r(h@hhAjhBhEhGhYhI}r(hN]hM]hK]hL]hP]j`huhRK4hShh;]rh\XRabbitMQ, Celery and Djangorr}r(h@hhAjubaubh`)r}r(h@XGreat Celery tutorial by `Robert Pogorzelski`_ at his blog "Happy Stream of Thoughts": http://robertpogorzelski.com/blog/2009/09/10/rabbitmq-celery-and-django/hAjhBhEhGhdhI}r(hK]hL]hM]hN]hP]uhRK6hShh;]r(h\XGreat Celery tutorial by rr}r(h@XGreat Celery tutorial by hAjubh)r}r(h@X`Robert Pogorzelski`_jKhAjhGhhI}r(UnameXRobert PogorzelskijXhttp://robertpogorzelski.com/rhN]hM]hK]hL]hP]uh;]rh\XRobert Pogorzelskirr }r (h@UhAjubaubh\X) at his blog "Happy Stream of Thoughts": r r }r (h@X) at his blog "Happy Stream of Thoughts": hAjubh)r}r(h@XHhttp://robertpogorzelski.com/blog/2009/09/10/rabbitmq-celery-and-django/rhI}r(UrefurijhN]hM]hK]hL]hP]uhAjh;]rh\XHhttp://robertpogorzelski.com/blog/2009/09/10/rabbitmq-celery-and-django/rr}r(h@UhAjubahGhubeubj)r}r(h@X7.. _`Robert Pogorzelski`: http://robertpogorzelski.com/jKhAjhBhEhGjhI}r(jjhN]rh3ahM]hK]hL]hP]rhauhRK:hShh;]ubeubh=)r}r(h@UhAh>hBhEhGhHhI}r(hK]hL]hM]hN]rh2ahP]rhauhRK=hShh;]r (hU)r!}r"(h@hhAjhBhEhGhYhI}r#(hN]hM]hK]hL]hP]j`huhRK=hShh;]r$h\X-Message Queues, Django and Celery Quick Startr%r&}r'(h@hhAj!ubaubh`)r(}r)(h@XCelery tutorial by `Rich Leland`_, the installation section is Mac OS X specific: http://mathematism.com/2010/feb/16/message-queues-django-and-celery-quick-start/hAjhBhEhGhdhI}r*(hK]hL]hM]hN]hP]uhRK?hShh;]r+(h\XCelery tutorial by r,r-}r.(h@XCelery tutorial by hAj(ubh)r/}r0(h@X`Rich Leland`_jKhAj(hGhhI}r1(UnameX Rich LelandjXhttp://twitter.com/richlelandr2hN]hM]hK]hL]hP]uh;]r3h\X Rich Lelandr4r5}r6(h@UhAj/ubaubh\X1, the installation section is Mac OS X specific: r7r8}r9(h@X1, the installation section is Mac OS X specific: hAj(ubh)r:}r;(h@XPhttp://mathematism.com/2010/feb/16/message-queues-django-and-celery-quick-start/r<hI}r=(Urefurij<hN]hM]hK]hL]hP]uhAj(h;]r>h\XPhttp://mathematism.com/2010/feb/16/message-queues-django-and-celery-quick-start/r?r@}rA(h@UhAj:ubahGhubeubj)rB}rC(h@X0.. _`Rich Leland`: http://twitter.com/richlelandjKhAjhBhEhGjhI}rD(jj2hN]rEh:ahM]hK]hL]hP]rFhauhRKChShh;]ubeubh=)rG}rH(h@UhAh>hBhEhGhHhI}rI(hK]hL]hM]hN]rJh/ahP]rKhauhRKGhShh;]rL(hU)rM}rN(h@hhAjGhBhEhGhYhI}rO(hN]hM]hK]hL]hP]j`huhRKGhShh;]rPh\X;Background task processing and deferred execution in DjangorQrR}rS(h@hhAjMubaubcdocutils.nodes definition_list rT)rU}rV(h@UhAjGhBhEhGUdefinition_listrWhI}rX(hK]hL]hM]hN]hP]uhRNhShh;]rYcdocutils.nodes definition_list_item rZ)r[}r\(h@Xu`Alon Swartz`_ writes about celery and RabbitMQ on his blog: http://www.turnkeylinux.org/blog/django-celery-rabbitmq hAjUhBhEhGUdefinition_list_itemr]hI}r^(hK]hL]hM]hN]hP]uhRKJh;]r_(cdocutils.nodes term r`)ra}rb(h@X<`Alon Swartz`_ writes about celery and RabbitMQ on his blog:rchAj[hBhEhGUtermrdhI}re(hK]hL]hM]hN]hP]uhRKJh;]rf(h)rg}rh(h@X`Alon Swartz`_jKhAjahGhhI}ri(UnameX Alon SwartzjXhttp://twitter.com/alonswartzrjhN]hM]hK]hL]hP]uh;]rkh\X Alon Swartzrlrm}rn(h@UhAjgubaubh\X. writes about celery and RabbitMQ on his blog:rorp}rq(h@X. writes about celery and RabbitMQ on his blog:hAjaubeubcdocutils.nodes definition rr)rs}rt(h@UhI}ru(hK]hL]hM]hN]hP]uhAj[h;]rvh`)rw}rx(h@X7http://www.turnkeylinux.org/blog/django-celery-rabbitmqryhAjshBhEhGhdhI}rz(hK]hL]hM]hN]hP]uhRKJh;]r{h)r|}r}(h@jyhI}r~(UrefurijyhN]hM]hK]hL]hP]uhAjwh;]rh\X7http://www.turnkeylinux.org/blog/django-celery-rabbitmqrr}r(h@UhAj|ubahGhubaubahGU definitionrubeubaubj)r}r(h@X0.. _`Alon Swartz`: http://twitter.com/alonswartzjKhAjGhBhEhGjhI}r(jjjhN]rh7ahM]hK]hL]hP]rhauhRKLhShh;]ubeubh=)r}r(h@UhAh>hBhEhGhHhI}r(hK]hL]hM]hN]rh,ahP]rh auhRKOhShh;]r(hU)r}r(h@jhAjhBhEhGhYhI}r(hN]hM]hK]hL]hP]j`j uhRKOhShh;]rh\XKBuild a processing queue [...] in less than a day using RabbitMQ and Celeryrr}r(h@jhAjubaubh`)r}r(h@XlTutorial in 2 parts written by `Tim Bull`_: http://timbull.com/build-a-processing-queue-with-multi-threadinghAjhBhEhGhdhI}r(hK]hL]hM]hN]hP]uhRKQhShh;]r(h\XTutorial in 2 parts written by rr}r(h@XTutorial in 2 parts written by hAjubh)r}r(h@X `Tim Bull`_jKhAjhGhhI}r(UnameXTim BulljXhttp://twitter.com/timbullrhN]hM]hK]hL]hP]uh;]rh\XTim Bullrr}r(h@UhAjubaubh\X: rr}r(h@X: hAjubh)r}r(h@X@http://timbull.com/build-a-processing-queue-with-multi-threadingrhI}r(UrefurijhN]hM]hK]hL]hP]uhAjh;]rh\X@http://timbull.com/build-a-processing-queue-with-multi-threadingrr}r(h@UhAjubahGhubeubj)r}r(h@X*.. _`Tim Bull`: http://twitter.com/timbulljKhAjhBhEhGjhI}r(jjhN]rh1ahM]hK]hL]hP]rhauhRKThShh;]ubeubh=)r}r(h@UhAh>hBhEhGhHhI}r(hK]hL]hM]hN]rh&ahP]rhauhRKWhShh;]r(hU)r}r(h@j hAjhBhEhGhYhI}r(hN]hM]hK]hL]hP]j`juhRKWhShh;]rh\X%How to get celeryd to work on FreeBSDrr}r(h@j hAjubaubh`)r}r(h@XInstalling multiprocessing on FreeBSD isn't that easy, but thanks to `Viktor Petersson`_ we now have a step-to-step guide: http://www.playingwithwire.com/2009/10/how-to-get-celeryd-to-work-on-freebsd/hAjhBhEhGhdhI}r(hK]hL]hM]hN]hP]uhRKYhShh;]r(h\XEInstalling multiprocessing on FreeBSD isn't that easy, but thanks to rr}r(h@XEInstalling multiprocessing on FreeBSD isn't that easy, but thanks to hAjubh)r}r(h@X`Viktor Petersson`_jKhAjhGhhI}r(UnameXViktor PeterssonjXhttp://twitter.com/vpeterssonrhN]hM]hK]hL]hP]uh;]rh\XViktor Peterssonrr}r(h@UhAjubaubh\X# we now have a step-to-step guide: rr}r(h@X# we now have a step-to-step guide: hAjubh)r}r(h@XMhttp://www.playingwithwire.com/2009/10/how-to-get-celeryd-to-work-on-freebsd/rhI}r(UrefurijhN]hM]hK]hL]hP]uhAjh;]rh\XMhttp://www.playingwithwire.com/2009/10/how-to-get-celeryd-to-work-on-freebsd/rr}r(h@UhAjubahGhubeubj)r}r(h@X5.. _`Viktor Petersson`: http://twitter.com/vpeterssonjKhAjhBhEhGjhI}r(jjhN]rh5ahM]hK]hL]hP]rhauhRK]hShh;]ubeubh=)r}r(h@UhAh>hBhEhGhHhI}r(hK]hL]hM]hN]rh9ahP]rhauhRK`hShh;]r(hU)r}r(h@j2hAjhBhEhGhYhI}r(hN]hM]hK]hL]hP]j`j-uhRK`hShh;]rh\XWeb-based 3D animation softwarerr}r(h@j2hAjubaubh`)r}r(h@XIndy Chang Liu at `ThinkingCactus`_ uses Celery to render animations asynchronously (PDF): http://ojs.pythonpapers.org/index.php/tppm/article/viewFile/105/122hAjhBhEhGhdhI}r(hK]hL]hM]hN]hP]uhRKbhShh;]r(h\XIndy Chang Liu at rr}r(h@XIndy Chang Liu at hAjubh)r}r(h@X`ThinkingCactus`_jKhAjhGhhI}r(UnameXThinkingCactusjXhttp://thinkingcactus.com/rhN]hM]hK]hL]hP]uh;]rh\XThinkingCactusrr}r(h@UhAjubaubh\X8 uses Celery to render animations asynchronously (PDF): rr}r(h@X8 uses Celery to render animations asynchronously (PDF): hAjubh)r}r(h@XChttp://ojs.pythonpapers.org/index.php/tppm/article/viewFile/105/122rhI}r(UrefurijhN]hM]hK]hL]hP]uhAjh;]rh\XChttp://ojs.pythonpapers.org/index.php/tppm/article/viewFile/105/122rr}r(h@UhAjubahGhubeubj)r}r (h@X0.. _`ThinkingCactus`: http://thinkingcactus.com/jKhAjhBhEhGjhI}r (jjhN]r h.ahM]hK]hL]hP]r hauhRKfhShh;]ubeubh=)r }r(h@UhAh>hBhEhGhHhI}r(hK]hL]hM]hN]rh4ahP]rhauhRKihShh;]r(hU)r}r(h@jDhAj hBhEhGhYhI}r(hN]hM]hK]hL]hP]j`j?uhRKihShh;]rh\X!Queued Storage Backend for Djangorr}r(h@jDhAjubaubh`)r}r(h@XPhttp://stepsandnumbers.com/archive/2010/01/04/queued-storage-backend-for-django/rhAj hBhEhGhdhI}r(hK]hL]hM]hN]hP]uhRKjhShh;]rh)r}r (h@jhI}r!(UrefurijhN]hM]hK]hL]hP]uhAjh;]r"h\XPhttp://stepsandnumbers.com/archive/2010/01/04/queued-storage-backend-for-django/r#r$}r%(h@UhAjubahGhubaubeubh=)r&}r'(h@UhAh>hBhEhGhHhI}r((hK]hL]hM]hN]r)h0ahP]r*hauhRKmhShh;]r+(hU)r,}r-(h@jVhAj&hBhEhGhYhI}r.(hN]hM]hK]hL]hP]j`jQuhRKmhShh;]r/h\XRabbitMQ with Python and Rubyr0r1}r2(h@jVhAj,ubaubh`)r3}r4(h@XMhttp://www.slideshare.net/hungryblank/rabbitmq-with-python-and-ruby-rupy-2009r5hAj&hBhEhGhdhI}r6(hK]hL]hM]hN]hP]uhRKohShh;]r7h)r8}r9(h@j5hI}r:(Urefurij5hN]hM]hK]hL]hP]uhAj3h;]r;h\XMhttp://www.slideshare.net/hungryblank/rabbitmq-with-python-and-ruby-rupy-2009r<r=}r>(h@UhAj8ubahGhubaubeubeubah@UU transformerr?NU footnote_refsr@}rAUrefnamesrB}rC(Xviktor petersson]rDjaXrobert pogorzelski]rEjaX idan gazit]rFjaX alon swartz]rGjgaXpyweb-il]rHjaXthinkingcactus]rIjaX rich leland]rJj/aXtim bull]rKjauUsymbol_footnotesrL]rMUautofootnote_refsrN]rOUsymbol_footnote_refsrP]rQU citationsrR]rShShU current_linerTNUtransform_messagesrU]rVUreporterrWNUid_startrXK U autofootnotesrY]rZU citation_refsr[}r\Uindirect_targetsr]]r^Usettingsr_(cdocutils.frontend Values r`ora}rb(Ufootnote_backlinksrcKUrecord_dependenciesrdNU rfc_base_urlreUhttp://tools.ietf.org/html/rfU tracebackrgUpep_referencesrhNUstrip_commentsriNU toc_backlinksrjUentryrkU language_coderlUenrmU datestamprnNU report_levelroKU _destinationrpNU halt_levelrqKU strip_classesrrNhYNUerror_encoding_error_handlerrsUbackslashreplacertUdebugruNUembed_stylesheetrvUoutput_encoding_error_handlerrwUstrictrxU sectnum_xformryKUdump_transformsrzNU docinfo_xformr{KUwarning_streamr|NUpep_file_url_templater}Upep-%04dr~Uexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUP/var/build/user_builds/celery/checkouts/2.0-archived/docs/tutorials/external.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjxUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(h-jWh9jh&jjQjMh)hkh+jj jjjhhh5jh%h>hhhhhhhhj-j)j?j;h8jqh.jh,jh1jh7jh(jh0j&h2jh6jh3jh*jh:jBh4j h'jh/jGhhhhuUsubstitution_namesr}rhGhShI}r(hK]hN]hM]UsourcehEhL]hP]uU footnotesr]rUrefidsr}rub.PKHDD@SS<celery-2.0-archived/.doctrees/tutorials/clickcounter.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X'using carrot to send clicks as messagesqNX introductionqNX:tutorial: creating a click counter using carrot and celeryqNX view and urlsq NXcreating the periodic taskq NX finishingq NX the modelq NUcontentsq NuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU'using-carrot-to-send-clicks-as-messagesqhU introductionqhU9tutorial-creating-a-click-counter-using-carrot-and-celeryqh U view-and-urlsqh Ucreating-the-periodic-taskqh U finishingqh U the-modelqh UcontentsquUchildrenq]q cdocutils.nodes section q!)q"}q#(U rawsourceq$UUparentq%hUsourceq&cdocutils.nodes reprunicode q'XT/var/build/user_builds/celery/checkouts/2.0-archived/docs/tutorials/clickcounter.rstq(q)}q*bUtagnameq+Usectionq,U attributesq-}q.(Udupnamesq/]Uclassesq0]Ubackrefsq1]Uidsq2]q3haUnamesq4]q5hauUlineq6KUdocumentq7hh]q8(cdocutils.nodes title q9)q:}q;(h$X:Tutorial: Creating a click counter using carrot and celeryq(h/]h0]h1]h2]h4]uh6Kh7hh]q?cdocutils.nodes Text q@X:Tutorial: Creating a click counter using carrot and celeryqAqB}qC(h$hh%j h&h)h+hkh-}r?(h/]h0]h1]h2]h4]uh6K#h7hh]r@(cdocutils.nodes emphasis rA)rB}rC(h$X*clickmuncher/models.py*h-}rD(h/]h0]h1]h2]h4]uh%j<h]rEh@Xclickmuncher/models.pyrFrG}rH(h$Uh%jBubah+UemphasisrIubh@X:rJ}rK(h$X:h%j<ubeubcdocutils.nodes literal_block rL)rM}rN(h$Xfrom django.db import models from django.utils.translation import ugettext_lazy as _ class ClickManager(models.Manager): def increment_clicks(self, for_url, increment_by=1): """Increment the click count for an URL. >>> Click.objects.increment_clicks("http://google.com", 10) """ click, created = self.get_or_create(url=for_url, defaults={"click_count": increment_by}) if not created: click.click_count += increment_by click.save() return click.click_count class Click(models.Model): url = models.URLField(_(u"URL"), verify_exists=False, unique=True) click_count = models.PositiveIntegerField(_(u"click_count"), default=0) objects = ClickManager() class Meta: verbose_name = _(u"URL clicks") verbose_name_plural = _(u"URL clicks")h%j h&h)h+U literal_blockrOh-}rP(UlinenosrQUlanguagerRXpythonU xml:spacerSUpreserverTh2]h1]h/]h0]h4]uh6K%h7hh]rUh@Xfrom django.db import models from django.utils.translation import ugettext_lazy as _ class ClickManager(models.Manager): def increment_clicks(self, for_url, increment_by=1): """Increment the click count for an URL. >>> Click.objects.increment_clicks("http://google.com", 10) """ click, created = self.get_or_create(url=for_url, defaults={"click_count": increment_by}) if not created: click.click_count += increment_by click.save() return click.click_count class Click(models.Model): url = models.URLField(_(u"URL"), verify_exists=False, unique=True) click_count = models.PositiveIntegerField(_(u"click_count"), default=0) objects = ClickManager() class Meta: verbose_name = _(u"URL clicks") verbose_name_plural = _(u"URL clicks")rVrW}rX(h$Uh%jMubaubeubh!)rY}rZ(h$Uh%h"h&h)h+h,h-}r[(h/]h0]h1]h2]r\hah4]r]hauh6KHh7hh]r^(h9)r_}r`(h$hh%jYh&h)h+h=h-}ra(h2]h1]h/]h0]h4]hhuh6KHh7hh]rbh@X'Using carrot to send clicks as messagesrcrd}re(h$hh%j_ubaubhZ)rf}rg(h$X4The model is normal django stuff, nothing new there. But now we get on to the messaging. It has been a tradition for me to put the projects messaging related code in its own ``messaging.py`` module, and I will continue to do so here so maybe you can adopt this practice. In this module we have two functions:h%jYh&h)h+hkh-}rh(h/]h0]h1]h2]h4]uh6KJh7hh]ri(h@XThe model is normal django stuff, nothing new there. But now we get on to the messaging. It has been a tradition for me to put the projects messaging related code in its own rjrk}rl(h$XThe model is normal django stuff, nothing new there. But now we get on to the messaging. It has been a tradition for me to put the projects messaging related code in its own h%jfubh)rm}rn(h$X``messaging.py``h-}ro(h/]h0]h1]h2]h4]uh%jfh]rph@X messaging.pyrqrr}rs(h$Uh%jmubah+hubh@Xv module, and I will continue to do so here so maybe you can adopt this practice. In this module we have two functions:rtru}rv(h$Xv module, and I will continue to do so here so maybe you can adopt this practice. In this module we have two functions:h%jfubeubhO)rw}rx(h$Uh%jYh&h)h+hRh-}ry(UbulletrzX*h2]h1]h/]h0]h4]uh6KPh7hh]r{(hU)r|}r}(h$X``send_increment_clicks`` This function sends a simple message to the broker. The message body only contains the URL we want to increment as plain-text, so the exchange and routing key play a role here. We use an exchange called ``clicks``, with a routing key of ``increment_click``, so any consumer binding a queue to this exchange using this routing key will receive these messages. h%jwh&h)h+hlh-}r~(h/]h0]h1]h2]h4]uh6Nh7hh]r(hZ)r}r(h$X``send_increment_clicks``rh%j|h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6KPh]rh)r}r(h$jh-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xsend_increment_clicksrr}r(h$Uh%jubah+hubaubhZ)r}r(h$XfThis function sends a simple message to the broker. The message body only contains the URL we want to increment as plain-text, so the exchange and routing key play a role here. We use an exchange called ``clicks``, with a routing key of ``increment_click``, so any consumer binding a queue to this exchange using this routing key will receive these messages.h%j|h&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6KRh]r(h@XThis function sends a simple message to the broker. The message body only contains the URL we want to increment as plain-text, so the exchange and routing key play a role here. We use an exchange called rr}r(h$XThis function sends a simple message to the broker. The message body only contains the URL we want to increment as plain-text, so the exchange and routing key play a role here. We use an exchange called h%jubh)r}r(h$X ``clicks``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xclicksrr}r(h$Uh%jubah+hubh@X, with a routing key of rr}r(h$X, with a routing key of h%jubh)r}r(h$X``increment_click``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xincrement_clickrr}r(h$Uh%jubah+hubh@Xf, so any consumer binding a queue to this exchange using this routing key will receive these messages.rr}r(h$Xf, so any consumer binding a queue to this exchange using this routing key will receive these messages.h%jubeubeubhU)r}r(h$XZ``process_clicks`` This function processes all currently gathered clicks sent using ``send_increment_clicks``. Instead of issuing one database query for every click it processes all of the messages first, calculates the new click count and issues one update per URL. A message that has been received will not be deleted from the broker until it has been acknowledged by the receiver, so if the receiver dies in the middle of processing the message, it will be re-sent at a later point in time. This guarantees delivery and we respect this feature here by not acknowledging the message until the clicks has actually been written to disk. **Note**: This could probably be optimized further with some hand-written SQL, but it will do for now. Let's say it's an exercise left for the picky reader, albeit a discouraged one if you can survive without doing it. h%jwh&h)h+hlh-}r(h/]h0]h1]h2]h4]uh6Nh7hh]r(hZ)r}r(h$X``process_clicks``rh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6KXh]rh)r}r(h$jh-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xprocess_clicksrr}r(h$Uh%jubah+hubaubhZ)r}r(h$XiThis function processes all currently gathered clicks sent using ``send_increment_clicks``. Instead of issuing one database query for every click it processes all of the messages first, calculates the new click count and issues one update per URL. A message that has been received will not be deleted from the broker until it has been acknowledged by the receiver, so if the receiver dies in the middle of processing the message, it will be re-sent at a later point in time. This guarantees delivery and we respect this feature here by not acknowledging the message until the clicks has actually been written to disk.h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6KZh]r(h@XAThis function processes all currently gathered clicks sent using rr}r(h$XAThis function processes all currently gathered clicks sent using h%jubh)r}r(h$X``send_increment_clicks``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xsend_increment_clicksrr}r(h$Uh%jubah+hubh@X. Instead of issuing one database query for every click it processes all of the messages first, calculates the new click count and issues one update per URL. A message that has been received will not be deleted from the broker until it has been acknowledged by the receiver, so if the receiver dies in the middle of processing the message, it will be re-sent at a later point in time. This guarantees delivery and we respect this feature here by not acknowledging the message until the clicks has actually been written to disk.rr}r(h$X. Instead of issuing one database query for every click it processes all of the messages first, calculates the new click count and issues one update per URL. A message that has been received will not be deleted from the broker until it has been acknowledged by the receiver, so if the receiver dies in the middle of processing the message, it will be re-sent at a later point in time. This guarantees delivery and we respect this feature here by not acknowledging the message until the clicks has actually been written to disk.h%jubeubhZ)r}r(h$X**Note**: This could probably be optimized further with some hand-written SQL, but it will do for now. Let's say it's an exercise left for the picky reader, albeit a discouraged one if you can survive without doing it.h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kdh]r(cdocutils.nodes strong r)r}r(h$X**Note**h-}r(h/]h0]h1]h2]h4]uh%jh]rh@XNoterr}r(h$Uh%jubah+Ustrongrubh@X: This could probably be optimized further with some hand-written SQL, but it will do for now. Let's say it's an exercise left for the picky reader, albeit a discouraged one if you can survive without doing it.rr}r(h$X: This could probably be optimized further with some hand-written SQL, but it will do for now. Let's say it's an exercise left for the picky reader, albeit a discouraged one if you can survive without doing it.h%jubeubeubeubhZ)r}r(h$XOn to the code...rh%jYh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kih7hh]rh@XOn to the code...rr}r(h$jh%jubaubhZ)r}r(h$X*clickmuncher/messaging.py*:rh%jYh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kkh7hh]r(jA)r}r(h$X*clickmuncher/messaging.py*h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xclickmuncher/messaging.pyrr}r(h$Uh%jubah+jIubh@X:r}r(h$X:h%jubeubjL)r}r(h$Xqfrom celery.messaging import establish_connection from carrot.messaging import Publisher, Consumer from clickmuncher.models import Click def send_increment_clicks(for_url): """Send a message for incrementing the click count for an URL.""" connection = establish_connection() publisher = Publisher(connection=connection, exchange="clicks", routing_key="increment_click", exchange_type="direct") publisher.send(for_url) publisher.close() connection.close() def process_clicks(): """Process all currently gathered clicks by saving them to the database.""" connection = establish_connection() consumer = Consumer(connection=connection, queue="clicks", exchange="clicks", routing_key="increment_click", exchange_type="direct") # First process the messages: save the number of clicks # for every URL. clicks_for_url = {} messages_for_url = {} for message in consumer.iterqueue(): url = message.body clicks_for_url[url] = clicks_for_url.get(url, 0) + 1 # We also need to keep the message objects so we can ack the # messages as processed when we are finished with them. if url in messages_for_url: messages_for_url[url].append(message) else: messages_for_url[url] = [message] # Then increment the clicks in the database so we only need # one UPDATE/INSERT for each URL. for url, click_count in clicks_for_urls.items(): Click.objects.increment_clicks(url, click_count) # Now that the clicks has been registered for this URL we can # acknowledge the messages [message.ack() for message in messages_for_url[url]] consumer.close() connection.close()h%jYh&h)h+jOh-}r(jQjRXpythonjSjTh2]h1]h/]h0]h4]uh6Kmh7hh]rh@Xqfrom celery.messaging import establish_connection from carrot.messaging import Publisher, Consumer from clickmuncher.models import Click def send_increment_clicks(for_url): """Send a message for incrementing the click count for an URL.""" connection = establish_connection() publisher = Publisher(connection=connection, exchange="clicks", routing_key="increment_click", exchange_type="direct") publisher.send(for_url) publisher.close() connection.close() def process_clicks(): """Process all currently gathered clicks by saving them to the database.""" connection = establish_connection() consumer = Consumer(connection=connection, queue="clicks", exchange="clicks", routing_key="increment_click", exchange_type="direct") # First process the messages: save the number of clicks # for every URL. clicks_for_url = {} messages_for_url = {} for message in consumer.iterqueue(): url = message.body clicks_for_url[url] = clicks_for_url.get(url, 0) + 1 # We also need to keep the message objects so we can ack the # messages as processed when we are finished with them. if url in messages_for_url: messages_for_url[url].append(message) else: messages_for_url[url] = [message] # Then increment the clicks in the database so we only need # one UPDATE/INSERT for each URL. for url, click_count in clicks_for_urls.items(): Click.objects.increment_clicks(url, click_count) # Now that the clicks has been registered for this URL we can # acknowledge the messages [message.ack() for message in messages_for_url[url]] consumer.close() connection.close()rr}r(h$Uh%jubaubeubh!)r}r(h$Uh%h"h&h)h+h,h-}r(h/]h0]h1]h2]rhah4]rh auh6Kh7hh]r(h9)r}r(h$hh%jh&h)h+h=h-}r(h2]h1]h/]h0]h4]hhuh6Kh7hh]rh@X View and URLsrr}r(h$hh%jubaubhZ)r}r(h$XThis is also simple stuff, don't think I have to explain this code to you. The interface is as follows, if you have a link to http://google.com you would want to count the clicks for, you replace the URL with:h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]r(h@X~This is also simple stuff, don't think I have to explain this code to you. The interface is as follows, if you have a link to rr}r(h$X~This is also simple stuff, don't think I have to explain this code to you. The interface is as follows, if you have a link to h%jubh_)r }r (h$Xhttp://google.comr h-}r (Urefurij h2]h1]h/]h0]h4]uh%jh]r h@Xhttp://google.comrr}r(h$Uh%j ubah+hjubh@XB you would want to count the clicks for, you replace the URL with:rr}r(h$XB you would want to count the clicks for, you replace the URL with:h%jubeubcdocutils.nodes block_quote r)r}r(h$Uh%jh&h)h+U block_quoterh-}r(h/]h0]h1]h2]h4]uh6Nh7hh]rhZ)r}r(h$X5http://mysite/clickmuncher/count/?u=http://google.comrh%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh]rh_)r}r (h$jh-}r!(Urefurijh2]h1]h/]h0]h4]uh%jh]r"h@X5http://mysite/clickmuncher/count/?u=http://google.comr#r$}r%(h$Uh%jubah+hjubaubaubhZ)r&}r'(h$XWand the ``count`` view will send off an increment message and forward you to that site.h%jh&h)h+hkh-}r((h/]h0]h1]h2]h4]uh6Kh7hh]r)(h@Xand the r*r+}r,(h$Xand the h%j&ubh)r-}r.(h$X ``count``h-}r/(h/]h0]h1]h2]h4]uh%j&h]r0h@Xcountr1r2}r3(h$Uh%j-ubah+hubh@XF view will send off an increment message and forward you to that site.r4r5}r6(h$XF view will send off an increment message and forward you to that site.h%j&ubeubhZ)r7}r8(h$X*clickmuncher/views.py*:r9h%jh&h)h+hkh-}r:(h/]h0]h1]h2]h4]uh6Kh7hh]r;(jA)r<}r=(h$X*clickmuncher/views.py*h-}r>(h/]h0]h1]h2]h4]uh%j7h]r?h@Xclickmuncher/views.pyr@rA}rB(h$Uh%j<ubah+jIubh@X:rC}rD(h$X:h%j7ubeubjL)rE}rF(h$Xfrom django.http import HttpResponseRedirect from clickmuncher.messaging import send_increment_clicks def count(request): url = request.GET["u"] send_increment_clicks(url) return HttpResponseRedirect(url)h%jh&h)h+jOh-}rG(jQjRXpythonjSjTh2]h1]h/]h0]h4]uh6Kh7hh]rHh@Xfrom django.http import HttpResponseRedirect from clickmuncher.messaging import send_increment_clicks def count(request): url = request.GET["u"] send_increment_clicks(url) return HttpResponseRedirect(url)rIrJ}rK(h$Uh%jEubaubhZ)rL}rM(h$X*clickmuncher/urls.py*:rNh%jh&h)h+hkh-}rO(h/]h0]h1]h2]h4]uh6Kh7hh]rP(jA)rQ}rR(h$X*clickmuncher/urls.py*h-}rS(h/]h0]h1]h2]h4]uh%jLh]rTh@Xclickmuncher/urls.pyrUrV}rW(h$Uh%jQubah+jIubh@X:rX}rY(h$X:h%jLubeubjL)rZ}r[(h$Xfrom django.conf.urls.defaults import patterns, url from clickmuncher import views urlpatterns = patterns("", url(r'^$', views.count, name="clickmuncher-count"), )h%jh&h)h+jOh-}r\(jQjRXpythonjSjTh2]h1]h/]h0]h4]uh6Kh7hh]r]h@Xfrom django.conf.urls.defaults import patterns, url from clickmuncher import views urlpatterns = patterns("", url(r'^$', views.count, name="clickmuncher-count"), )r^r_}r`(h$Uh%jZubaubeubh!)ra}rb(h$Uh%h"h&h)h+h,h-}rc(h/]h0]h1]h2]rdhah4]reh auh6Kh7hh]rf(h9)rg}rh(h$hh%jah&h)h+h=h-}ri(h2]h1]h/]h0]h4]hhuh6Kh7hh]rjh@XCreating the periodic taskrkrl}rm(h$hh%jgubaubhZ)rn}ro(h$XKProcessing the clicks every 30 minutes is easy using celery periodic tasks.rph%jah&h)h+hkh-}rq(h/]h0]h1]h2]h4]uh6Kh7hh]rrh@XKProcessing the clicks every 30 minutes is easy using celery periodic tasks.rsrt}ru(h$jph%jnubaubhZ)rv}rw(h$X*clickmuncher/tasks.py*:rxh%jah&h)h+hkh-}ry(h/]h0]h1]h2]h4]uh6Kh7hh]rz(jA)r{}r|(h$X*clickmuncher/tasks.py*h-}r}(h/]h0]h1]h2]h4]uh%jvh]r~h@Xclickmuncher/tasks.pyrr}r(h$Uh%j{ubah+jIubh@X:r}r(h$X:h%jvubeubjL)r}r(h$Xfrom celery.task import PeriodicTask from clickmuncher.messaging import process_clicks from datetime import timedelta class ProcessClicksTask(PeriodicTask): run_every = timedelta(minutes=30) def run(self, **kwargs): process_clicks()h%jah&h)h+jOh-}r(jQjRXpythonjSjTh2]h1]h/]h0]h4]uh6Kh7hh]rh@Xfrom celery.task import PeriodicTask from clickmuncher.messaging import process_clicks from datetime import timedelta class ProcessClicksTask(PeriodicTask): run_every = timedelta(minutes=30) def run(self, **kwargs): process_clicks()rr}r(h$Uh%jubaubhZ)r}r(h$XWe subclass from :class:`celery.task.base.PeriodicTask`, set the ``run_every`` attribute and in the body of the task just call the ``process_clicks`` function we wrote earlier.h%jah&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]r(h@XWe subclass from rr}r(h$XWe subclass from h%jubcsphinx.addnodes pending_xref r)r}r(h$X&:class:`celery.task.base.PeriodicTask`rh%jh&h)h+U pending_xrefrh-}r(UreftypeXclassUrefwarnrU reftargetrXcelery.task.base.PeriodicTaskU refdomainXpyrh2]h1]U refexplicith/]h0]h4]UrefdocrXtutorials/clickcounterrUpy:classrNU py:modulerNuh6Kh]rh)r}r(h$jh-}r(h/]h0]r(UxrefrjXpy-classreh1]h2]h4]uh%jh]rh@Xcelery.task.base.PeriodicTaskrr}r(h$Uh%jubah+hubaubh@X , set the rr}r(h$X , set the h%jubh)r}r(h$X ``run_every``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@X run_everyrr}r(h$Uh%jubah+hubh@X5 attribute and in the body of the task just call the rr}r(h$X5 attribute and in the body of the task just call the h%jubh)r}r(h$X``process_clicks``h-}r(h/]h0]h1]h2]h4]uh%jh]rh@Xprocess_clicksrr}r(h$Uh%jubah+hubh@X function we wrote earlier.rr}r(h$X function we wrote earlier.h%jubeubeubh!)r}r(h$Uh%h"h&h)h+h,h-}r(h/]h0]h1]h2]rhah4]rh auh6Kh7hh]r(h9)r}r(h$hh%jh&h)h+h=h-}r(h2]h1]h/]h0]h4]hhuh6Kh7hh]rh@X Finishingrr}r(h$hh%jubaubhZ)r}r(h$XThere are still ways to improve this application. The URLs could be cleaned so the URL http://google.com and http://google.com/ is the same. Maybe it's even possible to update the click count using a single UPDATE query?h%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]r(h@XWThere are still ways to improve this application. The URLs could be cleaned so the URL rr}r(h$XWThere are still ways to improve this application. The URLs could be cleaned so the URL h%jubh_)r}r(h$Xhttp://google.comrh-}r(Urefurijh2]h1]h/]h0]h4]uh%jh]rh@Xhttp://google.comrr}r(h$Uh%jubah+hjubh@X and rr}r(h$X and h%jubh_)r}r(h$Xhttp://google.com/rh-}r(Urefurijh2]h1]h/]h0]h4]uh%jh]rh@Xhttp://google.com/rr}r(h$Uh%jubah+hjubh@X] is the same. Maybe it's even possible to update the click count using a single UPDATE query?rr}r(h$X] is the same. Maybe it's even possible to update the click count using a single UPDATE query?h%jubeubhZ)r}r(h$XIf you have any questions regarding this tutorial, please send a mail to the mailing-list or come join us in the #celery IRC channel at Freenode: http://celeryq.org/introduction.html#getting-helph%jh&h)h+hkh-}r(h/]h0]h1]h2]h4]uh6Kh7hh]r(h@XIf you have any questions regarding this tutorial, please send a mail to the mailing-list or come join us in the #celery IRC channel at Freenode: rr}r(h$XIf you have any questions regarding this tutorial, please send a mail to the mailing-list or come join us in the #celery IRC channel at Freenode: h%jubh_)r}r(h$X1http://celeryq.org/introduction.html#getting-helprh-}r(Urefurijh2]h1]h/]h0]h4]uh%jh]rh@X1http://celeryq.org/introduction.html#getting-helprr}r(h$Uh%jubah+hjubeubeubeubah$UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh7hU current_linerNUtransform_messagesr]r Ureporterr NUid_startr KU autofootnotesr ]r U citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenr U datestampr!NU report_levelr"KU _destinationr#NU halt_levelr$KU strip_classesr%Nh=NUerror_encoding_error_handlerr&Ubackslashreplacer'Udebugr(NUembed_stylesheetr)Uoutput_encoding_error_handlerr*Ustrictr+U sectnum_xformr,KUdump_transformsr-NU docinfo_xformr.KUwarning_streamr/NUpep_file_url_templater0Upep-%04dr1Uexit_status_levelr2KUconfigr3NUstrict_visitorr4NUcloak_email_addressesr5Utrim_footnote_reference_spacer6Uenvr7NUdump_pseudo_xmlr8NUexpose_internalsr9NUsectsubtitle_xformr:U source_linkr;NUrfc_referencesr<NUoutput_encodingr=Uutf-8r>U source_urlr?NUinput_encodingr@U utf-8-sigrAU_disable_configrBNU id_prefixrCUU tab_widthrDKUerror_encodingrEUUTF-8rFU_sourcerGUT/var/build/user_builds/celery/checkouts/2.0-archived/docs/tutorials/clickcounter.rstrHUgettext_compactrIU generatorrJNUdump_internalsrKNU smart_quotesrLU pep_base_urlrMUhttp://www.python.org/dev/peps/rNUsyntax_highlightrOUlongrPUinput_encoding_error_handlerrQj+Uauto_id_prefixrRUidrSUdoctitle_xformrTUstrip_elements_with_classesrUNU _config_filesrV]Ufile_insertion_enabledrWU raw_enabledrXKU dump_settingsrYNubUsymbol_footnote_startrZKUidsr[}r\(hhhjhhhjahhhhhyhuhh"hdh`hhhjYhjhj hhEuUsubstitution_namesr]}r^h+h7h-}r_(h/]h2]h1]Usourceh)h0]h4]uU footnotesr`]raUrefidsrb}rcub.PKHDDAgz//5celery-2.0-archived/.doctrees/tutorials/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qX tutorialsqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU tutorialsqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXM/var/build/user_builds/celery/checkouts/2.0-archived/docs/tutorials/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX Tutorialsq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X Tutorialsq3q4}q5(hh.hh,ubaubcdocutils.nodes field_list q6)q7}q8(hUhhhhhU field_listq9h}q:(h!]h"]h#]h$]h&]uh(Kh)hh]q;(cdocutils.nodes field q<)q=}q>(hUhh7hhhUfieldq?h}q@(h!]h"]h#]h$]h&]uh(Kh)hh]qA(cdocutils.nodes field_name qB)qC}qD(hXReleaseqEh}qF(h!]h"]h#]h$]h&]uhh=h]qGh2XReleaseqHqI}qJ(hhEhhCubahU field_nameqKubcdocutils.nodes field_body qL)qM}qN(hX |version|qOh}qP(h!]h"]h#]h$]h&]uhh=h]qQcdocutils.nodes paragraph qR)qS}qT(hhOhhMhhhU paragraphqUh}qV(h!]h"]h#]h$]h&]uh(Kh]qWh2X2.0qXqY}qZ(hU2.0q[hhSubaubahU field_bodyq\ubeubh<)q]}q^(hUhh7hhhh?h}q_(h!]h"]h#]h$]h&]uh(Kh)hh]q`(hB)qa}qb(hXDateqch}qd(h!]h"]h#]h$]h&]uhh]h]qeh2XDateqfqg}qh(hhchhaubahhKubhL)qi}qj(hX|today| h}qk(h!]h"]h#]h$]h&]uhh]h]qlhR)qm}qn(hX|today|qohhihhhhUh}qp(h!]h"]h#]h$]h&]uh(Kh]qqh2XFebruary 04, 2014qrqs}qt(hXFebruary 04, 2014hhmubaubahh\ubeubeubcdocutils.nodes compound qu)qv}qw(hUhhhhhUcompoundqxh}qy(h!]h"]qzUtoctree-wrapperq{ah#]h$]h&]uh(Nh)hh]q|csphinx.addnodes toctree q})q~}q(hUhhvhhhUtoctreeqh}q(UnumberedqKU includehiddenqhXtutorials/indexqU titlesonlyqUglobqh$]h#]h!]h"]h&]Uentriesq]q(NXtutorials/externalqqNXtutorials/otherqueuesqqNXtutorials/clickcounterqqeUhiddenqU includefilesq]q(hhheUmaxdepthqKuh(Kh]ubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetq‰Uoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqΈUtrim_footnote_reference_spaceqωUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqӉU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUM/var/build/user_builds/celery/checkouts/2.0-archived/docs/tutorials/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PKHDD#PeAA;celery-2.0-archived/.doctrees/tutorials/otherqueues.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X configurationqNX installationqNXdatabaseqNXimportant notesq NXredisq NX8using celery with redis/database as the messaging queue.q NXcarrotq Xghettoqq UcontentsqNuUsubstitution_defsq}qUparse_messagesq]qcdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUU referencedqKhh)q}q(hUhh)q}q(hUhhUsourceq cdocutils.nodes reprunicode q!XS/var/build/user_builds/celery/checkouts/2.0-archived/docs/tutorials/otherqueues.rstq"q#}q$bUtagnameq%Usectionq&U attributesq'}q((Udupnamesq)]Uclassesq*]Ubackrefsq+]Uidsq,]q-U7using-celery-with-redis-database-as-the-messaging-queueq.aUnamesq/]q0h auUlineq1KUdocumentq2hUchildrenq3]q4(cdocutils.nodes title q5)q6}q7(hX8Using Celery with Redis/Database as the messaging queue.q8hhh h#h%Utitleq9h'}q:(h)]h*]h+]h,]h/]uh1Kh2hh3]q;cdocutils.nodes Text q}q?(hh8hh6ubaubcdocutils.nodes paragraph q@)qA}qB(hXThere's a plug-in for celery that enables the use of Redis or an SQL database as the messaging queue. This is not part of celery itself, but exists as an extension to `carrot`_.hhh h#h%U paragraphqCh'}qD(h)]h*]h+]h,]h/]uh1Kh2hh3]qE(h(hUhKhj!h h#h%h&h'}r?(h)]r@X configurationrAah*]h+]h,]rBhah/]uh1Kh2hh3]rC(h5)rD}rE(hhhj=h h#h%h9h'}rF(h,]h+]h)]h*]h/]hhuh1Kh2hh3]rGhh3]rhr?}r@(hUhj:ubaubeh%j ubeubaubeubh h#h%Usystem_messagerAh'}rB(h)]UlevelKh,]h+]rChaUsourceh#h*]h/]UlineK-UtypeUINFOrDuh1K-h2hh3]rEh@)rF}rG(hUh'}rH(h)]h*]h+]h,]h/]uhhh3]rIh>Fcelery-2.0-archived/.doctrees/reference/celery.loaders.default.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X0celery.loaders.default.Loader.read_configurationqX)celery.loaders.default.wanted_module_itemqX,celery.loaders.default.Loader.setup_settingsqXcelery.loaders.default.Settingsq X'default loader - celery.loaders.defaultq NXcelery.loaders.default.Loaderq X-celery.loaders.default.Loader.import_from_cwdq X,celery.loaders.default.Loader.on_worker_initq X$celery.loaders.default.NotConfiguredqUcontentsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh h h U%default-loader-celery-loaders-defaultqh h h h h h hhhUcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceq UUparentq!hUsourceq"cdocutils.nodes reprunicode q#X^/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.loaders.default.rstq$q%}q&bUtagnameq'Usectionq(U attributesq)}q*(Udupnamesq+]Uclassesq,]Ubackrefsq-]Uidsq.]q/haUnamesq0]q1h auUlineq2KUdocumentq3hh]q4(cdocutils.nodes title q5)q6}q7(h X'Default Loader - celery.loaders.defaultq8h!hh"h%h'Utitleq9h)}q:(h+]h,]h-]h.]h0]uh2Kh3hh]q;cdocutils.nodes Text q}q?(h h8h!h6ubaubcdocutils.nodes target q@)qA}qB(h Uh!hh"U qCh'UtargetqDh)}qE(h+]h.]qFXmodule-celery.loaders.defaultqGah-]Uismodh,]h0]uh2Kh3hh]ubcsphinx.addnodes index qH)qI}qJ(h Uh!hh"hCh'UindexqKh)}qL(h.]h-]h+]h,]h0]Uentries]qM(UsingleqNXcelery.loaders.default (module)Xmodule-celery.loaders.defaultUtqOauh2Kh3hh]ubhH)qP}qQ(h Uh!hh"Nh'hKh)}qR(h.]h-]h+]h,]h0]Uentries]qS(hNX(Loader (class in celery.loaders.default)h UtqTauh2Nh3hh]ubcsphinx.addnodes desc qU)qV}qW(h Uh!hh"Nh'UdescqXh)}qY(UnoindexqZUdomainq[Xpyh.]h-]h+]h,]h0]Uobjtypeq\Xclassq]Udesctypeq^h]uh2Nh3hh]q_(csphinx.addnodes desc_signature q`)qa}qb(h XLoaderqch!hVh"U qdh'Udesc_signatureqeh)}qf(h.]qgh aUmoduleqhh#Xcelery.loaders.defaultqiqj}qkbh-]h+]h,]h0]qlh aUfullnameqmhcUclassqnUUfirstqouh2Nh3hh]qp(csphinx.addnodes desc_annotation qq)qr}qs(h Xclass h!hah"hdh'Udesc_annotationqth)}qu(h+]h,]h-]h.]h0]uh2Nh3hh]qvh)h!hh"hdh'heh)}q(h.]qh ahhh#Xcelery.loaders.defaultqq}qbh-]h+]h,]h0]qh ahmXLoader.import_from_cwdhnhchouh2Nh3hh]q(h)q}q(h Ximport_from_cwdh!hh"hdh'hh)}q(h+]h,]h-]h.]h0]uh2Nh3hh]qhh)}q(h+]h,]h-]h.]h0]uh!hh]qhqӅq}q(h Uh!hubah'hubeubeubh)q}q(h Uh!hh"hdh'hh)}q(h+]h,]h-]h.]h0]uh2Nh3hh]q(h)q}q(h XOImport module, but make sure it finds modules located in the current directory.qh!hh"hh'hh)}q(h+]h,]h-]h.]h0]uh2Kh3hh]qh}r?(h Uh!hh"j:h'hXh)}r@(hZh[Xpyh.]h-]h+]h,]h0]h\XmethodrAh^jAuh2Nh3hh]rB(h`)rC}rD(h XLoader.read_configuration()h!j>h"hdh'heh)}rE(h.]rFhahhh#Xcelery.loaders.defaultrGrH}rIbh-]h+]h,]h0]rJhahmXLoader.read_configurationhnhchouh2Nh3hh]rK(h)rL}rM(h Xread_configurationh!jCh"hdh'hh)}rN(h+]h,]h-]h.]h0]uh2Nh3hh]rOhh"hdh'hh)}rX(h+]h,]h-]h.]h0]uh2Nh3hh]rYh)rZ}r[(h XpRead configuration from ``celeryconfig.py`` and configure celery and Django so it can be used by regular Python.h!jVh"j:h'hh)}r\(h+]h,]h-]h.]h0]uh2Kh3hh]r](h(h Uh)}r?(h+]h,]h-]h.]h0]uh!j8h]r@h from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUX/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.http.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDT@celery-2.0-archived/.doctrees/reference/celery.task.base.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X!defining tasks - celery.task.baseqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXX/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.base.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Udefining-tasks-celery-task-baseq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX!Defining Tasks - celery.task.baseq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X!Defining Tasks - celery.task.baseq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUX/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.base.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDKjBcelery-2.0-archived/.doctrees/reference/celery.bin.celeryd.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X)celery worker daemon - celery.bin.celerydqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXZ/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.celeryd.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U'celery-worker-daemon-celery-bin-celerydq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX)Celery Worker Daemon - celery.bin.celerydq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X)Celery Worker Daemon - celery.bin.celerydq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUZ/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.celeryd.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD#Q//Ecelery-2.0-archived/.doctrees/reference/celery.task.schedules.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX8periodic task schedule behaviors - celery.task.schedulesqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX]/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.schedules.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U6periodic-task-schedule-behaviors-celery-task-schedulesq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX8Periodic Task Schedule Behaviors - celery.task.schedulesq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X8Periodic Task Schedule Behaviors - celery.task.schedulesq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU]/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.schedules.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDvi\@celery-2.0-archived/.doctrees/reference/celery.task.sets.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X4task sets, subtasks and callbacks - celery.task.setsqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXX/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.sets.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U1task-sets-subtasks-and-callbacks-celery-task-setsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX4Task Sets, Subtasks and Callbacks - celery.task.setsq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X4Task Sets, Subtasks and Callbacks - celery.task.setsq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUX/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.sets.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDᵂHcelery-2.0-archived/.doctrees/reference/celery.contrib.abortable.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX3contrib: abortable tasks - celery.contrib.abortableqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX`/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.contrib.abortable.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U0contrib-abortable-tasks-celery-contrib-abortableq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX3Contrib: Abortable tasks - celery.contrib.abortableq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X3Contrib: Abortable tasks - celery.contrib.abortableq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.task.base import Task File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/task/__init__.py", line 7, in from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU`/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.contrib.abortable.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(hFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local: hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubh"huUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDMi "">celery-2.0-archived/.doctrees/reference/celery.loaders.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery.loaders.load_settingsqXcelery.loaders.setup_loaderqXloaders - celery.loadersqNXcelery.loaders.get_loader_clsq Xcelery.loaders.current_loaderq Ucontentsq NuUsubstitution_defsq }q Uparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhUloaders-celery-loadersqh h h h h UcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXV/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.loaders.rstq q!}q"bUtagnameq#Usectionq$U attributesq%}q&(Udupnamesq']Uclassesq(]Ubackrefsq)]Uidsq*]q+haUnamesq,]q-hauUlineq.KUdocumentq/hh]q0(cdocutils.nodes title q1)q2}q3(hXLoaders - celery.loadersq4hhhh!h#Utitleq5h%}q6(h']h(]h)]h*]h,]uh.Kh/hh]q7cdocutils.nodes Text q8XLoaders - celery.loadersq9q:}q;(hh4hh2ubaubcdocutils.nodes target q<)q=}q>(hUhhhU q?h#Utargetq@h%}qA(h']h*]qBXmodule-celery.loadersqCah)]Uismodh(]h,]uh.Kh/hh]ubcsphinx.addnodes index qD)qE}qF(hUhhhh?h#UindexqGh%}qH(h*]h)]h']h(]h,]Uentries]qI(UsingleqJXcelery.loaders (module)Xmodule-celery.loadersUtqKauh.Kh/hh]ubhD)qL}qM(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py:docstring of celery.loaders.current_loaderqNh#hGh%}qO(h*]h)]h']h(]h,]Uentries]qP(hJX+current_loader() (in module celery.loaders)h UtqQauh.Nh/hh]ubcsphinx.addnodes desc qR)qS}qT(hUhhhhNh#UdescqUh%}qV(UnoindexqWUdomainqXXpyh*]h)]h']h(]h,]UobjtypeqYXfunctionqZUdesctypeq[hZuh.Nh/hh]q\(csphinx.addnodes desc_signature q])q^}q_(hXcurrent_loader()hhShU q`h#Udesc_signatureqah%}qb(h*]qch aUmoduleqdhXcelery.loadersqeqf}qgbh)]h']h(]h,]qhh aUfullnameqiXcurrent_loaderqjUclassqkUUfirstqluh.Nh/hh]qm(csphinx.addnodes desc_addname qn)qo}qp(hXcelery.loaders.hh^hh`h#U desc_addnameqqh%}qr(h']h(]h)]h*]h,]uh.Nh/hh]qsh8Xcelery.loaders.qtqu}qv(hUhhoubaubcsphinx.addnodes desc_name qw)qx}qy(hhjhh^hh`h#U desc_nameqzh%}q{(h']h(]h)]h*]h,]uh.Nh/hh]q|h8Xcurrent_loaderq}q~}q(hUhhxubaubcsphinx.addnodes desc_parameterlist q)q}q(hUhh^hh`h#Udesc_parameterlistqh%}q(h']h(]h)]h*]h,]uh.Nh/hh]ubeubcsphinx.addnodes desc_content q)q}q(hUhhShh`h#U desc_contentqh%}q(h']h(]h)]h*]h,]uh.Nh/hh]qcdocutils.nodes paragraph q)q}q(hX%Detect and return the current loader.qhhhhNh#U paragraphqh%}q(h']h(]h)]h*]h,]uh.Kh/hh]qh8X%Detect and return the current loader.qq}q(hhhhubaubaubeubhD)q}q(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py:docstring of celery.loaders.get_loader_clsqh#hGh%}q(h*]h)]h']h(]h,]Uentries]q(hJX+get_loader_cls() (in module celery.loaders)h Utqauh.Nh/hh]ubhR)q}q(hUhhhhh#hUh%}q(hWhXXpyh*]h)]h']h(]h,]hYXfunctionqh[huh.Nh/hh]q(h])q}q(hXget_loader_cls(loader)hhhh`h#hah%}q(h*]qh ahdhXcelery.loadersqq}qbh)]h']h(]h,]qh ahiXget_loader_clsqhkUhluh.Nh/hh]q(hn)q}q(hXcelery.loaders.hhhh`h#hqh%}q(h']h(]h)]h*]h,]uh.Nh/hh]qh8Xcelery.loaders.qq}q(hUhhubaubhw)q}q(hhhhhh`h#hzh%}q(h']h(]h)]h*]h,]uh.Nh/hh]qh8Xget_loader_clsqq}q(hUhhubaubh)q}q(hUhhhh`h#hh%}q(h']h(]h)]h*]h,]uh.Nh/hh]qcsphinx.addnodes desc_parameter q)q}q(hXloaderh%}q(h']h(]h)]h*]h,]uhhh]qh8Xloaderqq}q(hUhhubah#Udesc_parameterqubaubeubh)q}q(hUhhhh`h#hh%}q(h']h(]h)]h*]h,]uh.Nh/hh]qh)q}q(hXGet loader class by name/aliasqhhhhh#hh%}q(h']h(]h)]h*]h,]uh.Kh/hh]qh8XGet loader class by name/aliasq΅q}q(hhhhubaubaubeubhD)q}q(hUhhhX/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py:docstring of celery.loaders.load_settingsqh#hGh%}q(h*]h)]h']h(]h,]Uentries]q(hJX*load_settings() (in module celery.loaders)hUtqauh.Nh/hh]ubhR)q}q(hUhhhhh#hUh%}q(hWhXXpyh*]h)]h']h(]h,]hYXfunctionqh[huh.Nh/hh]q(h])q}q(hXload_settings()hhhh`h#hah%}q(h*]qhahdhXcelery.loadersqq}qbh)]h']h(]h,]qhahiX load_settingsqhkUhluh.Nh/hh]q(hn)q}q(hXcelery.loaders.hhhh`h#hqh%}q(h']h(]h)]h*]h,]uh.Nh/hh]qh8Xcelery.loaders.qꅁq}q(hUhhubaubhw)q}q(hhhhhh`h#hzh%}q(h']h(]h)]h*]h,]uh.Nh/hh]qh8X load_settingsqq}q(hUhhubaubh)q}q(hUhhhh`h#hh%}q(h']h(]h)]h*]h,]uh.Nh/hh]ubeubh)q}q(hUhhhh`h#hh%}q(h']h(]h)]h*]h,]uh.Nh/hh]qh)q}q(hX Load the global settings object.qhhhhh#hh%}q(h']h(]h)]h*]h,]uh.Kh/hh]qh8X Load the global settings object.rr}r(hhhhubaubaubeubhD)r}r(hUhhhNh#hGh%}r(h*]h)]h']h(]h,]Uentries]r(hJX)setup_loader() (in module celery.loaders)hUtrauh.Nh/hh]ubhR)r}r (hUhhhNh#hUh%}r (hWhXXpyh*]h)]h']h(]h,]hYXfunctionr h[j uh.Nh/hh]r (h])r }r(hXsetup_loader()rhjhh`h#hah%}r(h*]rhahdhXcelery.loadersrr}rbh)]h']h(]h,]rhahiX setup_loaderrhkUhluh.Nh/hh]r(hn)r}r(hXcelery.loaders.hj hh`h#hqh%}r(h']h(]h)]h*]h,]uh.Nh/hh]rh8Xcelery.loaders.rr}r(hUhjubaubhw)r}r (hjhj hh`h#hzh%}r!(h']h(]h)]h*]h,]uh.Nh/hh]r"h8X setup_loaderr#r$}r%(hUhjubaubh)r&}r'(hUhj hh`h#hh%}r((h']h(]h)]h*]h,]uh.Nh/hh]ubeubh)r)}r*(hUhjhh`h#hh%}r+(h']h(]h)]h*]h,]uh.Nh/hh]ubeubeubahUU transformerr,NU footnote_refsr-}r.Urefnamesr/}r0Usymbol_footnotesr1]r2Uautofootnote_refsr3]r4Usymbol_footnote_refsr5]r6U citationsr7]r8h/hU current_liner9NUtransform_messagesr:]r;cdocutils.nodes system_message r<)r=}r>(hUh%}r?(h']UlevelKh*]h)]Usourceh?h(]h,]UlineKUtypeUINFOr@uh]rAh)rB}rC(hUh%}rD(h']h(]h)]h*]h,]uhj=h]rEh8X;Hyperlink target "module-celery.loaders" is not referenced.rFrG}rH(hUhjBubah#hubah#Usystem_messagerIubaUreporterrJNUid_startrKKU autofootnotesrL]rMU citation_refsrN}rOUindirect_targetsrP]rQUsettingsrR(cdocutils.frontend Values rSorT}rU(Ufootnote_backlinksrVKUrecord_dependenciesrWNU rfc_base_urlrXUhttp://tools.ietf.org/html/rYU tracebackrZUpep_referencesr[NUstrip_commentsr\NU toc_backlinksr]Uentryr^U language_coder_Uenr`U datestampraNU report_levelrbKU _destinationrcNU halt_levelrdKU strip_classesreNh5NUerror_encoding_error_handlerrfUbackslashreplacergUdebugrhNUembed_stylesheetriUoutput_encoding_error_handlerrjUstrictrkU sectnum_xformrlKUdump_transformsrmNU docinfo_xformrnKUwarning_streamroNUpep_file_url_templaterpUpep-%04drqUexit_status_levelrrKUconfigrsNUstrict_visitorrtNUcloak_email_addressesruUtrim_footnote_reference_spacervUenvrwNUdump_pseudo_xmlrxNUexpose_internalsryNUsectsubtitle_xformrzU source_linkr{NUrfc_referencesr|NUoutput_encodingr}Uutf-8r~U source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUV/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.loaders.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjkUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hj hhh hhhhCh=h h^hcdocutils.nodes topic r)r}r(hUhhhh!h#Utopicrh%}r(h']h(]r(UcontentsrUlocalreh)]h*]rhah,]rh auh.Kh/hh]rcdocutils.nodes pending r)r}r(hX.. contents:: :local:hjU transformrcdocutils.transforms.parts Contents rUdetailsr}rUlocalNsh#Upendingrh%}r(h']h(]h)]h*]h,]uh]ubaubuUsubstitution_namesr}rh#h/h%}r(h']h*]h)]Usourceh!h(]h,]uU footnotesr]rUrefidsr}rub.PKHDDfhMHMH?celery-2.0-archived/.doctrees/reference/celery.registry.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery.registry.TaskRegistryqX$celery.registry.TaskRegistry.regularqXtask registry - celery.registryqNX celery.registry.TaskRegistry.popq X%celery.registry.TaskRegistry.periodicq Ucontentsq NX*celery.registry.TaskRegistry.NotRegisteredq X%celery.registry.TaskRegistry.registerq X'celery.registry.TaskRegistry.unregisterqX)celery.registry.TaskRegistry.filter_typesquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhUtask-registry-celery-registryqh h h h h Ucontentsqh h h h hhhhuUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceq UUparentq!hUsourceq"cdocutils.nodes reprunicode q#XW/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.registry.rstq$q%}q&bUtagnameq'Usectionq(U attributesq)}q*(Udupnamesq+]Uclassesq,]Ubackrefsq-]Uidsq.]q/haUnamesq0]q1hauUlineq2KUdocumentq3hh]q4(cdocutils.nodes title q5)q6}q7(h XTask Registry - celery.registryq8h!hh"h%h'Utitleq9h)}q:(h+]h,]h-]h.]h0]uh2Kh3hh]q;cdocutils.nodes Text q}q?(h h8h!h6ubaubcdocutils.nodes target q@)qA}qB(h Uh!hh"U qCh'UtargetqDh)}qE(h+]h.]qFXmodule-celery.registryqGah-]Uismodh,]h0]uh2Kh3hh]ubcsphinx.addnodes index qH)qI}qJ(h Uh!hh"hCh'UindexqKh)}qL(h.]h-]h+]h,]h0]Uentries]qM(UsingleqNXcelery.registry (module)Xmodule-celery.registryUtqOauh2Kh3hh]ubcdocutils.nodes paragraph qP)qQ}qR(h Xcelery.registryqSh!hh"X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/registry.py:docstring of celery.registryqTh'U paragraphqUh)}qV(h+]h,]h-]h.]h0]uh2Kh3hh]qWhqoh'Udesc_signatureqph)}qq(h.]qrhaUmoduleqsh#Xcelery.registryqtqu}qvbh-]h+]h,]h0]qwhaUfullnameqxX TaskRegistryqyUclassqzUUfirstq{uh2Nh3hh]q|(csphinx.addnodes desc_annotation q})q~}q(h Xclass h!hlh"hoh'Udesc_annotationqh)}q(h+]h,]h-]h.]h0]uh2Nh3hh]qhh ahxXTaskRegistry.periodichzX TaskRegistryh{uh2Nh3hh]r?(h)r@}rA(h X TaskRegistry.h!j7h"hoh'hh)}rB(h+]h,]h-]h.]h0]uh2Nh3hh]rCh}r?(h j9h!j7ubaubcdocutils.nodes field_list r@)rA}rB(h Uh!j3h"Nh'U field_listrCh)}rD(h+]h,]h-]h.]h0]uh2Nh3hh]rE(cdocutils.nodes field rF)rG}rH(h Uh)}rI(h+]h,]h-]h.]h0]uh!jAh]rJ(cdocutils.nodes field_name rK)rL}rM(h Uh)}rN(h+]h,]h-]h.]h0]uh!jGh]rOhh'h3h)}r?(h+]h.]h-]Usourceh%h,]h0]uU footnotesr@]rAUrefidsrB}rCub.PKHDDڀz=celery-2.0-archived/.doctrees/reference/celery.events.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xevents - celery.eventsqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXU/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.events.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Uevents-celery-eventsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXEvents - celery.eventsq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0XEvents - celery.eventsq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.messaging import EventPublisher, EventConsumer File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/messaging.py", line 13, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUU/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.events.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD`@celery-2.0-archived/.doctrees/reference/celery.messaging.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNXmessaging - celery.messagingqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXX/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.messaging.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Umessaging-celery-messagingq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXMessaging - celery.messagingq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0XMessaging - celery.messagingq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUX/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.messaging.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDv*ffHcelery-2.0-archived/.doctrees/reference/celery.bin.celeryd_multi.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X#celery.bin.celeryd_multi.multi_argsqX-celeryd multi tool - celery.bin.celeryd_multiqNXcelery.bin.celeryd_multi.quoteqUcontentsq NX'celery.bin.celeryd_multi.parse_ns_rangeq X(celery.bin.celeryd_multi.MultiTool.namesq X&celery.bin.celeryd_multi.abbreviationsq Xcelery.bin.celeryd_multi.sayq X#celery.bin.celeryd_multi.format_optqX(celery.bin.celeryd_multi.MultiTool.startqXcelery.bin.celeryd_multi.mainqX(celery.bin.celeryd_multi.MultiTool.usageqX8celery.bin.celeryd_multi.NamespacedOptionParser.optmergeqX/celery.bin.celeryd_multi.NamespacedOptionParserqX:celery.bin.celeryd_multi.NamespacedOptionParser.add_optionqXAcelery.bin.celeryd_multi.NamespacedOptionParser.process_short_optqX"celery.bin.celeryd_multi.MultiToolqX)celery.bin.celeryd_multi.MultiTool.expandqX&celery.bin.celeryd_multi.MultiTool.getqX'celery.bin.celeryd_multi.MultiTool.helpqX@celery.bin.celeryd_multi.NamespacedOptionParser.process_long_optqX5celery.bin.celeryd_multi.NamespacedOptionParser.parsequUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceq NU decorationq!NUautofootnote_startq"KUnameidsq#}q$(hhhU+celeryd-multi-tool-celery-bin-celeryd-multiq%hhh Ucontentsq&h h h h h h h h hhhhhhhhhhhhhhhhhhhhhhhhhhhhuUchildrenq']q(cdocutils.nodes section q))q*}q+(U rawsourceq,UUparentq-hUsourceq.cdocutils.nodes reprunicode q/X`/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.celeryd_multi.rstq0q1}q2bUtagnameq3Usectionq4U attributesq5}q6(Udupnamesq7]Uclassesq8]Ubackrefsq9]Uidsq:]q;h%aUnamesq<]q=hauUlineq>KUdocumentq?hh']q@(cdocutils.nodes title qA)qB}qC(h,X-Celeryd Multi Tool - celery.bin.celeryd_multiqDh-h*h.h1h3UtitleqEh5}qF(h7]h8]h9]h:]h<]uh>Kh?hh']qGcdocutils.nodes Text qHX-Celeryd Multi Tool - celery.bin.celeryd_multiqIqJ}qK(h,hDh-hBubaubcdocutils.nodes target qL)qM}qN(h,Uh-h*h.U qOh3UtargetqPh5}qQ(h7]h:]qRXmodule-celery.bin.celeryd_multiqSah9]Uismodh8]h<]uh>Kh?hh']ubcsphinx.addnodes index qT)qU}qV(h,Uh-h*h.hOh3UindexqWh5}qX(h:]h9]h7]h8]h<]Uentries]qY(UsingleqZX!celery.bin.celeryd_multi (module)Xmodule-celery.bin.celeryd_multiUtq[auh>Kh?hh']ubhT)q\}q](h,Uh-h*h.Nh3hWh5}q^(h:]h9]h7]h8]h<]Uentries]q_(hZX-MultiTool (class in celery.bin.celeryd_multi)hUtq`auh>Nh?hh']ubcsphinx.addnodes desc qa)qb}qc(h,Uh-h*h.Nh3Udescqdh5}qe(UnoindexqfUdomainqgXpyh:]h9]h7]h8]h<]UobjtypeqhXclassqiUdesctypeqjhiuh>Nh?hh']qk(csphinx.addnodes desc_signature ql)qm}qn(h,X MultiTool()h-hbh.U qoh3Udesc_signatureqph5}qq(h:]qrhaUmoduleqsh/Xcelery.bin.celeryd_multiqtqu}qvbh9]h7]h8]h<]qwhaUfullnameqxX MultiToolqyUclassqzUUfirstq{uh>Nh?hh']q|(csphinx.addnodes desc_annotation q})q~}q(h,Xclass h-hmh.hoh3Udesc_annotationqh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']qhHXclass qq}q(h,Uh-h~ubaubcsphinx.addnodes desc_addname q)q}q(h,Xcelery.bin.celeryd_multi.h-hmh.hoh3U desc_addnameqh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']qhHXcelery.bin.celeryd_multi.qq}q(h,Uh-hubaubcsphinx.addnodes desc_name q)q}q(h,hyh-hmh.hoh3U desc_nameqh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']qhHX MultiToolqq}q(h,Uh-hubaubeubcsphinx.addnodes desc_content q)q}q(h,Uh-hbh.hoh3U desc_contentqh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']q(hT)q}q(h,Uh-hh.Nh3hWh5}q(h:]h9]h7]h8]h<]Uentries]q(hZX4expand() (celery.bin.celeryd_multi.MultiTool method)hUtqauh>Nh?hh']ubha)q}q(h,Uh-hh.Nh3hdh5}q(hfhgXpyh:]h9]h7]h8]h<]hhXmethodqhjhuh>Nh?hh']q(hl)q}q(h,X MultiTool.expand(argv, cmd=None)h-hh.hoh3hph5}q(h:]qhahsh/Xcelery.bin.celeryd_multiqq}qbh9]h7]h8]h<]qhahxXMultiTool.expandhzhyh{uh>Nh?hh']q(h)q}q(h,Xexpandh-hh.hoh3hh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']qhHXexpandqq}q(h,Uh-hubaubcsphinx.addnodes desc_parameterlist q)q}q(h,Uh-hh.hoh3Udesc_parameterlistqh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']q(csphinx.addnodes desc_parameter q)q}q(h,Xargvh5}q(h7]h8]h9]h:]h<]uh-hh']qhHXargvqÅq}q(h,Uh-hubah3Udesc_parameterqubh)q}q(h,Xcmd=Noneh5}q(h7]h8]h9]h:]h<]uh-hh']qhHXcmd=Noneq˅q}q(h,Uh-hubah3hubeubeubh)q}q(h,Uh-hh.hoh3hh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)q}q(h,Uh-hh.Nh3hWh5}q(h:]h9]h7]h8]h<]Uentries]q(hZX1get() (celery.bin.celeryd_multi.MultiTool method)hUtqauh>Nh?hh']ubha)q}q(h,Uh-hh.Nh3hdh5}q(hfhgXpyh:]h9]h7]h8]h<]hhXmethodqhjhuh>Nh?hh']q(hl)q}q(h,XMultiTool.get(argv, cmd)h-hh.hoh3hph5}q(h:]qhahsh/Xcelery.bin.celeryd_multiq߅q}qbh9]h7]h8]h<]qhahxX MultiTool.gethzhyh{uh>Nh?hh']q(h)q}q(h,Xgeth-hh.hoh3hh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']qhHXgetq腁q}q(h,Uh-hubaubh)q}q(h,Uh-hh.hoh3hh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']q(h)q}q(h,Xargvh5}q(h7]h8]h9]h:]h<]uh-hh']qhHXargvqq}q(h,Uh-hubah3hubh)q}q(h,Xcmdh5}q(h7]h8]h9]h:]h<]uh-hh']qhHXcmdqq}q(h,Uh-hubah3hubeubeubh)q}q(h,Uh-hh.hoh3hh5}q(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r}r(h,Uh-hh.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZX2help() (celery.bin.celeryd_multi.MultiTool method)hUtrauh>Nh?hh']ubha)r}r(h,Uh-hh.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXmethodrhjjuh>Nh?hh']r (hl)r }r (h,XMultiTool.help(argv, cmd=None)h-jh.hoh3hph5}r (h:]r hahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rhahxXMultiTool.helphzhyh{uh>Nh?hh']r(h)r}r(h,Xhelph-j h.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXhelprr}r(h,Uh-jubaubh)r}r(h,Uh-j h.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']r(h)r}r(h,Xargvh5}r (h7]h8]h9]h:]h<]uh-jh']r!hHXargvr"r#}r$(h,Uh-jubah3hubh)r%}r&(h,Xcmd=Noneh5}r'(h7]h8]h9]h:]h<]uh-jh']r(hHXcmd=Noner)r*}r+(h,Uh-j%ubah3hubeubeubh)r,}r-(h,Uh-jh.hoh3hh5}r.(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r/}r0(h,Uh-hh.Nh3hWh5}r1(h:]h9]h7]h8]h<]Uentries]r2(hZX3names() (celery.bin.celeryd_multi.MultiTool method)h Utr3auh>Nh?hh']ubha)r4}r5(h,Uh-hh.Nh3hdh5}r6(hfhgXpyh:]h9]h7]h8]h<]hhXmethodr7hjj7uh>Nh?hh']r8(hl)r9}r:(h,XMultiTool.names(argv, cmd)h-j4h.hoh3hph5}r;(h:]r<h ahsh/Xcelery.bin.celeryd_multir=r>}r?bh9]h7]h8]h<]r@h ahxXMultiTool.nameshzhyh{uh>Nh?hh']rA(h)rB}rC(h,Xnamesh-j9h.hoh3hh5}rD(h7]h8]h9]h:]h<]uh>Nh?hh']rEhHXnamesrFrG}rH(h,Uh-jBubaubh)rI}rJ(h,Uh-j9h.hoh3hh5}rK(h7]h8]h9]h:]h<]uh>Nh?hh']rL(h)rM}rN(h,Xargvh5}rO(h7]h8]h9]h:]h<]uh-jIh']rPhHXargvrQrR}rS(h,Uh-jMubah3hubh)rT}rU(h,Xcmdh5}rV(h7]h8]h9]h:]h<]uh-jIh']rWhHXcmdrXrY}rZ(h,Uh-jTubah3hubeubeubh)r[}r\(h,Uh-j4h.hoh3hh5}r](h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r^}r_(h,Uh-hh.Nh3hWh5}r`(h:]h9]h7]h8]h<]Uentries]ra(hZX3start() (celery.bin.celeryd_multi.MultiTool method)hUtrbauh>Nh?hh']ubha)rc}rd(h,Uh-hh.Nh3hdh5}re(hfhgXpyh:]h9]h7]h8]h<]hhXmethodrfhjjfuh>Nh?hh']rg(hl)rh}ri(h,XMultiTool.start(argv, cmd)h-jch.hoh3hph5}rj(h:]rkhahsh/Xcelery.bin.celeryd_multirlrm}rnbh9]h7]h8]h<]rohahxXMultiTool.starthzhyh{uh>Nh?hh']rp(h)rq}rr(h,Xstarth-jhh.hoh3hh5}rs(h7]h8]h9]h:]h<]uh>Nh?hh']rthHXstartrurv}rw(h,Uh-jqubaubh)rx}ry(h,Uh-jhh.hoh3hh5}rz(h7]h8]h9]h:]h<]uh>Nh?hh']r{(h)r|}r}(h,Xargvh5}r~(h7]h8]h9]h:]h<]uh-jxh']rhHXargvrr}r(h,Uh-j|ubah3hubh)r}r(h,Xcmdh5}r(h7]h8]h9]h:]h<]uh-jxh']rhHXcmdrr}r(h,Uh-jubah3hubeubeubh)r}r(h,Uh-jch.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r}r(h,Uh-hh.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZX3usage() (celery.bin.celeryd_multi.MultiTool method)hUtrauh>Nh?hh']ubha)r}r(h,Uh-hh.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXmethodrhjjuh>Nh?hh']r(hl)r}r(h,XMultiTool.usage()h-jh.hoh3hph5}r(h:]rhahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rhahxXMultiTool.usagehzhyh{uh>Nh?hh']r(h)r}r(h,Xusageh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXusagerr}r(h,Uh-jubaubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubeubeubhT)r}r(h,Uh-h*h.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZX:NamespacedOptionParser (class in celery.bin.celeryd_multi)hUtrauh>Nh?hh']ubha)r}r(h,Uh-h*h.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXclassrhjjuh>Nh?hh']r(hl)r}r(h,XNamespacedOptionParser(args)rh-jh.hoh3hph5}r(h:]rhahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rhahxXNamespacedOptionParserrhzUh{uh>Nh?hh']r(h})r}r(h,Xclass h-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXclass rr}r(h,Uh-jubaubh)r}r(h,Xcelery.bin.celeryd_multi.h-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXcelery.bin.celeryd_multi.rr}r(h,Uh-jubaubh)r}r(h,jh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXNamespacedOptionParserrr}r(h,Uh-jubaubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rh)r}r(h,Xargsh5}r(h7]h8]h9]h:]h<]uh-jh']rhHXargsrr}r(h,Uh-jubah3hubaubeubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']r(hT)r}r(h,Uh-jh.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZXEadd_option() (celery.bin.celeryd_multi.NamespacedOptionParser method)hUtrauh>Nh?hh']ubha)r}r(h,Uh-jh.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXmethodrhjjuh>Nh?hh']r(hl)r}r(h,XDNamespacedOptionParser.add_option(name, value, short=False, ns=None)h-jh.hoh3hph5}r(h:]rhahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rhahxX!NamespacedOptionParser.add_optionhzjh{uh>Nh?hh']r(h)r}r(h,X add_optionh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHX add_optionrr}r(h,Uh-jubaubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']r(h)r}r(h,Xnameh5}r(h7]h8]h9]h:]h<]uh-jh']rhHXnamerr }r (h,Uh-jubah3hubh)r }r (h,Xvalueh5}r (h7]h8]h9]h:]h<]uh-jh']rhHXvaluerr}r(h,Uh-j ubah3hubh)r}r(h,X short=Falseh5}r(h7]h8]h9]h:]h<]uh-jh']rhHX short=Falserr}r(h,Uh-jubah3hubh)r}r(h,Xns=Noneh5}r(h7]h8]h9]h:]h<]uh-jh']rhHXns=Nonerr}r(h,Uh-jubah3hubeubeubh)r }r!(h,Uh-jh.hoh3hh5}r"(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r#}r$(h,Uh-jh.Nh3hWh5}r%(h:]h9]h7]h8]h<]Uentries]r&(hZXCoptmerge() (celery.bin.celeryd_multi.NamespacedOptionParser method)hUtr'auh>Nh?hh']ubha)r(}r)(h,Uh-jh.Nh3hdh5}r*(hfhgXpyh:]h9]h7]h8]h<]hhXmethodr+hjj+uh>Nh?hh']r,(hl)r-}r.(h,X2NamespacedOptionParser.optmerge(ns, defaults=None)h-j(h.hoh3hph5}r/(h:]r0hahsh/Xcelery.bin.celeryd_multir1r2}r3bh9]h7]h8]h<]r4hahxXNamespacedOptionParser.optmergehzjh{uh>Nh?hh']r5(h)r6}r7(h,Xoptmergeh-j-h.hoh3hh5}r8(h7]h8]h9]h:]h<]uh>Nh?hh']r9hHXoptmerger:r;}r<(h,Uh-j6ubaubh)r=}r>(h,Uh-j-h.hoh3hh5}r?(h7]h8]h9]h:]h<]uh>Nh?hh']r@(h)rA}rB(h,Xnsh5}rC(h7]h8]h9]h:]h<]uh-j=h']rDhHXnsrErF}rG(h,Uh-jAubah3hubh)rH}rI(h,X defaults=Noneh5}rJ(h7]h8]h9]h:]h<]uh-j=h']rKhHX defaults=NonerLrM}rN(h,Uh-jHubah3hubeubeubh)rO}rP(h,Uh-j(h.hoh3hh5}rQ(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)rR}rS(h,Uh-jh.Nh3hWh5}rT(h:]h9]h7]h8]h<]Uentries]rU(hZX@parse() (celery.bin.celeryd_multi.NamespacedOptionParser method)hUtrVauh>Nh?hh']ubha)rW}rX(h,Uh-jh.Nh3hdh5}rY(hfhgXpyh:]h9]h7]h8]h<]hhXmethodrZhjjZuh>Nh?hh']r[(hl)r\}r](h,XNamespacedOptionParser.parse()h-jWh.hoh3hph5}r^(h:]r_hahsh/Xcelery.bin.celeryd_multir`ra}rbbh9]h7]h8]h<]rchahxXNamespacedOptionParser.parsehzjh{uh>Nh?hh']rd(h)re}rf(h,Xparseh-j\h.hoh3hh5}rg(h7]h8]h9]h:]h<]uh>Nh?hh']rhhHXparserirj}rk(h,Uh-jeubaubh)rl}rm(h,Uh-j\h.hoh3hh5}rn(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubh)ro}rp(h,Uh-jWh.hoh3hh5}rq(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)rr}rs(h,Uh-jh.Nh3hWh5}rt(h:]h9]h7]h8]h<]Uentries]ru(hZXKprocess_long_opt() (celery.bin.celeryd_multi.NamespacedOptionParser method)hUtrvauh>Nh?hh']ubha)rw}rx(h,Uh-jh.Nh3hdh5}ry(hfhgXpyh:]h9]h7]h8]h<]hhXmethodrzhjjzuh>Nh?hh']r{(hl)r|}r}(h,X8NamespacedOptionParser.process_long_opt(arg, value=None)h-jwh.hoh3hph5}r~(h:]rhahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rhahxX'NamespacedOptionParser.process_long_opthzjh{uh>Nh?hh']r(h)r}r(h,Xprocess_long_opth-j|h.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXprocess_long_optrr}r(h,Uh-jubaubh)r}r(h,Uh-j|h.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']r(h)r}r(h,Xargh5}r(h7]h8]h9]h:]h<]uh-jh']rhHXargrr}r(h,Uh-jubah3hubh)r}r(h,X value=Noneh5}r(h7]h8]h9]h:]h<]uh-jh']rhHX value=Nonerr}r(h,Uh-jubah3hubeubeubh)r}r(h,Uh-jwh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r}r(h,Uh-jh.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZXLprocess_short_opt() (celery.bin.celeryd_multi.NamespacedOptionParser method)hUtrauh>Nh?hh']ubha)r}r(h,Uh-jh.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXmethodrhjjuh>Nh?hh']r(hl)r}r(h,X9NamespacedOptionParser.process_short_opt(arg, value=None)h-jh.hoh3hph5}r(h:]rhahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rhahxX(NamespacedOptionParser.process_short_opthzjh{uh>Nh?hh']r(h)r}r(h,Xprocess_short_opth-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXprocess_short_optrr}r(h,Uh-jubaubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']r(h)r}r(h,Xargh5}r(h7]h8]h9]h:]h<]uh-jh']rhHXargrr}r(h,Uh-jubah3hubh)r}r(h,X value=Noneh5}r(h7]h8]h9]h:]h<]uh-jh']rhHX value=Nonerr}r(h,Uh-jubah3hubeubeubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubeubeubhT)r}r(h,Uh-h*h.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZX4abbreviations() (in module celery.bin.celeryd_multi)h Utrauh>Nh?hh']ubha)r}r(h,Uh-h*h.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXfunctionrhjjuh>Nh?hh']r(hl)r}r(h,Xabbreviations(map)h-jh.hoh3hph5}r(h:]rh ahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rh ahxX abbreviationsrhzUh{uh>Nh?hh']r(h)r}r(h,Xcelery.bin.celeryd_multi.h-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXcelery.bin.celeryd_multi.rr}r(h,Uh-jubaubh)r}r(h,jh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHX abbreviationsrr}r(h,Uh-jubaubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rh)r}r(h,Xmaph5}r(h7]h8]h9]h:]h<]uh-jh']rhHXmaprr}r(h,Uh-jubah3hubaubeubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r}r(h,Uh-h*h.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZX1format_opt() (in module celery.bin.celeryd_multi)hUtrauh>Nh?hh']ubha)r}r(h,Uh-h*h.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXfunctionrhjjuh>Nh?hh']r (hl)r }r (h,Xformat_opt(opt, value)h-jh.hoh3hph5}r (h:]r hahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rhahxX format_optrhzUh{uh>Nh?hh']r(h)r}r(h,Xcelery.bin.celeryd_multi.h-j h.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXcelery.bin.celeryd_multi.rr}r(h,Uh-jubaubh)r}r(h,jh-j h.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHX format_optrr }r!(h,Uh-jubaubh)r"}r#(h,Uh-j h.hoh3hh5}r$(h7]h8]h9]h:]h<]uh>Nh?hh']r%(h)r&}r'(h,Xopth5}r((h7]h8]h9]h:]h<]uh-j"h']r)hHXoptr*r+}r,(h,Uh-j&ubah3hubh)r-}r.(h,Xvalueh5}r/(h7]h8]h9]h:]h<]uh-j"h']r0hHXvaluer1r2}r3(h,Uh-j-ubah3hubeubeubh)r4}r5(h,Uh-jh.hoh3hh5}r6(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r7}r8(h,Uh-h*h.Nh3hWh5}r9(h:]h9]h7]h8]h<]Uentries]r:(hZX+main() (in module celery.bin.celeryd_multi)hUtr;auh>Nh?hh']ubha)r<}r=(h,Uh-h*h.Nh3hdh5}r>(hfhgXpyh:]h9]h7]h8]h<]hhXfunctionr?hjj?uh>Nh?hh']r@(hl)rA}rB(h,Xmain()h-j<h.hoh3hph5}rC(h:]rDhahsh/Xcelery.bin.celeryd_multirErF}rGbh9]h7]h8]h<]rHhahxXmainrIhzUh{uh>Nh?hh']rJ(h)rK}rL(h,Xcelery.bin.celeryd_multi.h-jAh.hoh3hh5}rM(h7]h8]h9]h:]h<]uh>Nh?hh']rNhHXcelery.bin.celeryd_multi.rOrP}rQ(h,Uh-jKubaubh)rR}rS(h,jIh-jAh.hoh3hh5}rT(h7]h8]h9]h:]h<]uh>Nh?hh']rUhHXmainrVrW}rX(h,Uh-jRubaubh)rY}rZ(h,Uh-jAh.hoh3hh5}r[(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubh)r\}r](h,Uh-j<h.hoh3hh5}r^(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r_}r`(h,Uh-h*h.Nh3hWh5}ra(h:]h9]h7]h8]h<]Uentries]rb(hZX1multi_args() (in module celery.bin.celeryd_multi)hUtrcauh>Nh?hh']ubha)rd}re(h,Uh-h*h.Nh3hdh5}rf(hfhgXpyh:]h9]h7]h8]h<]hhXfunctionrghjjguh>Nh?hh']rh(hl)ri}rj(h,X=multi_args(p, cmd='celeryd', append='', prefix='', suffix='')h-jdh.hoh3hph5}rk(h:]rlhahsh/Xcelery.bin.celeryd_multirmrn}robh9]h7]h8]h<]rphahxX multi_argsrqhzUh{uh>Nh?hh']rr(h)rs}rt(h,Xcelery.bin.celeryd_multi.h-jih.hoh3hh5}ru(h7]h8]h9]h:]h<]uh>Nh?hh']rvhHXcelery.bin.celeryd_multi.rwrx}ry(h,Uh-jsubaubh)rz}r{(h,jqh-jih.hoh3hh5}r|(h7]h8]h9]h:]h<]uh>Nh?hh']r}hHX multi_argsr~r}r(h,Uh-jzubaubh)r}r(h,Uh-jih.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']r(h)r}r(h,Xph5}r(h7]h8]h9]h:]h<]uh-jh']rhHXpr}r(h,Uh-jubah3hubh)r}r(h,X cmd='celeryd'h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX cmd='celeryd'rr}r(h,Uh-jubah3hubh)r}r(h,X append=''h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX append=''rr}r(h,Uh-jubah3hubh)r}r(h,X prefix=''h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX prefix=''rr}r(h,Uh-jubah3hubh)r}r(h,X suffix=''h5}r(h7]h8]h9]h:]h<]uh-jh']rhHX suffix=''rr}r(h,Uh-jubah3hubeubeubh)r}r(h,Uh-jdh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r}r(h,Uh-h*h.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZX5parse_ns_range() (in module celery.bin.celeryd_multi)h Utrauh>Nh?hh']ubha)r}r(h,Uh-h*h.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXfunctionrhjjuh>Nh?hh']r(hl)r}r(h,X parse_ns_range(ns, ranges=False)h-jh.hoh3hph5}r(h:]rh ahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rh ahxXparse_ns_rangerhzUh{uh>Nh?hh']r(h)r}r(h,Xcelery.bin.celeryd_multi.h-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXcelery.bin.celeryd_multi.rr}r(h,Uh-jubaubh)r}r(h,jh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXparse_ns_rangerr}r(h,Uh-jubaubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']r(h)r}r(h,Xnsh5}r(h7]h8]h9]h:]h<]uh-jh']rhHXnsrr}r(h,Uh-jubah3hubh)r}r(h,X ranges=Falseh5}r(h7]h8]h9]h:]h<]uh-jh']rhHX ranges=Falserr}r(h,Uh-jubah3hubeubeubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r}r(h,Uh-h*h.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZX,quote() (in module celery.bin.celeryd_multi)hUtrauh>Nh?hh']ubha)r}r(h,Uh-h*h.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXfunctionrhjjuh>Nh?hh']r(hl)r}r(h,Xquote(v)h-jh.hoh3hph5}r(h:]rhahsh/Xcelery.bin.celeryd_multirr}rbh9]h7]h8]h<]rhahxXquoterhzUh{uh>Nh?hh']r(h)r}r(h,Xcelery.bin.celeryd_multi.h-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXcelery.bin.celeryd_multi.rr}r(h,Uh-jubaubh)r}r(h,jh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rhHXquoterr}r(h,Uh-jubaubh)r}r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']rh)r}r(h,Xvh5}r (h7]h8]h9]h:]h<]uh-jh']r hHXvr }r (h,Uh-jubah3hubaubeubh)r }r(h,Uh-jh.hoh3hh5}r(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubhT)r}r(h,Uh-h*h.Nh3hWh5}r(h:]h9]h7]h8]h<]Uentries]r(hZX*say() (in module celery.bin.celeryd_multi)h Utrauh>Nh?hh']ubha)r}r(h,Uh-h*h.Nh3hdh5}r(hfhgXpyh:]h9]h7]h8]h<]hhXfunctionrhjjuh>Nh?hh']r(hl)r}r(h,Xsay(m)rh-jh.hoh3hph5}r(h:]rh ahsh/Xcelery.bin.celeryd_multirr }r!bh9]h7]h8]h<]r"h ahxXsayr#hzUh{uh>Nh?hh']r$(h)r%}r&(h,Xcelery.bin.celeryd_multi.h-jh.hoh3hh5}r'(h7]h8]h9]h:]h<]uh>Nh?hh']r(hHXcelery.bin.celeryd_multi.r)r*}r+(h,Uh-j%ubaubh)r,}r-(h,j#h-jh.hoh3hh5}r.(h7]h8]h9]h:]h<]uh>Nh?hh']r/hHXsayr0r1}r2(h,Uh-j,ubaubh)r3}r4(h,Uh-jh.hoh3hh5}r5(h7]h8]h9]h:]h<]uh>Nh?hh']r6h)r7}r8(h,Xmh5}r9(h7]h8]h9]h:]h<]uh-j3h']r:hHXmr;}r<(h,Uh-j7ubah3hubaubeubh)r=}r>(h,Uh-jh.hoh3hh5}r?(h7]h8]h9]h:]h<]uh>Nh?hh']ubeubeubah,UU transformerr@NU footnote_refsrA}rBUrefnamesrC}rDUsymbol_footnotesrE]rFUautofootnote_refsrG]rHUsymbol_footnote_refsrI]rJU citationsrK]rLh?hU current_linerMNUtransform_messagesrN]rOcdocutils.nodes system_message rP)rQ}rR(h,Uh5}rS(h7]UlevelKh:]h9]UsourcehOh8]h<]UlineKUtypeUINFOrTuh']rUcdocutils.nodes paragraph rV)rW}rX(h,Uh5}rY(h7]h8]h9]h:]h<]uh-jQh']rZhHXEHyperlink target "module-celery.bin.celeryd_multi" is not referenced.r[r\}r](h,Uh-jWubah3U paragraphr^ubah3Usystem_messager_ubaUreporterr`NUid_startraKU autofootnotesrb]rcU citation_refsrd}reUindirect_targetsrf]rgUsettingsrh(cdocutils.frontend Values riorj}rk(Ufootnote_backlinksrlKUrecord_dependenciesrmNU rfc_base_urlrnUhttp://tools.ietf.org/html/roU tracebackrpUpep_referencesrqNUstrip_commentsrrNU toc_backlinksrsUentryrtU language_coderuUenrvU datestamprwNU report_levelrxKU _destinationryNU halt_levelrzKU strip_classesr{NhENUerror_encoding_error_handlerr|Ubackslashreplacer}Udebugr~NUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerU`/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.celeryd_multi.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjihjh&cdocutils.nodes topic r)r}r(h,Uh-h*h.h1h3Utopicrh5}r(h7]h8]r(UcontentsrUlocalreh9]h:]rh&ah<]rh auh>Kh?hh']rcdocutils.nodes pending r)r}r(h,X.. contents:: :local:h-jU transformrcdocutils.transforms.parts Contents rUdetailsr}rUlocalNsh3Upendingrh5}r(h7]h8]h9]h:]h<]uh']ubaubh jh j9h jh jhj hjhhjAhShMhjhj-hjhjhjhhmhhhhhj h%h*hj|hj\uUsubstitution_namesr}rh3h?h5}r(h7]h:]h9]Usourceh1h8]h<]uU footnotesr]rUrefidsr}rub.PKHDD냢=celery-2.0-archived/.doctrees/reference/celery.result.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xtask result - celery.resultqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXU/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.result.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Utask-result-celery-resultq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hXTask Result - celery.resultq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0XTask Result - celery.resultq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.backends import default_backend File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/backends/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUU/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.result.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD(s(s>celery-2.0-archived/.doctrees/reference/celery.signals.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery.signals.task_sentqXbasicsqNXcelery.signals.worker_initqXcelery.signals.worker_readyq Xsignalsq NXcelery.signals.worker_shutdownq Xcelery.signals.task_prerunq X"celery.signals.worker_process_initq Xsignals - celery.signalsqNXworker signalsqNX task signalsqNUcontentsqNXcelery.signals.task_postrunquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUbasicsqhhh h h Usignalsqh h h h h h hUsignals-celery-signalsqhUworker-signalsqhU task-signalsq hUcontentsq!hhuUchildrenq"]q#cdocutils.nodes section q$)q%}q&(U rawsourceq'UUparentq(hUsourceq)cdocutils.nodes reprunicode q*XV/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.signals.rstq+q,}q-bUtagnameq.Usectionq/U attributesq0}q1(Udupnamesq2]Uclassesq3]Ubackrefsq4]Uidsq5]q6haUnamesq7]q8hauUlineq9KUdocumentq:hh"]q;(cdocutils.nodes title q<)q=}q>(h'XSignals - celery.signalsq?h(h%h)h,h.Utitleq@h0}qA(h2]h3]h4]h5]h7]uh9Kh:hh"]qBcdocutils.nodes Text qCXSignals - celery.signalsqDqE}qF(h'h?h(h=ubaubcdocutils.nodes topic qG)qH}qI(h'Uh(h%h)h,h.UtopicqJh0}qK(h2]h3]qL(UcontentsqMUlocalqNeh4]h5]qOh!ah7]qPhauh9Kh:hh"]qQcdocutils.nodes bullet_list qR)qS}qT(h'Uh(hHh)Nh.U bullet_listqUh0}qV(h2]h3]h4]h5]h7]uh9Nh:hh"]qW(cdocutils.nodes list_item qX)qY}qZ(h'Uh0}q[(h2]h3]h4]h5]h7]uh(hSh"]q\cdocutils.nodes paragraph q])q^}q_(h'Uh0}q`(h2]h3]h4]h5]h7]uh(hYh"]qacdocutils.nodes reference qb)qc}qd(h'Uh0}qe(h5]qfUid1qgah4]h2]h3]h7]Urefidhuh(h^h"]qhhCXBasicsqiqj}qk(h'XBasicsqlh(hcubah.U referenceqmubah.U paragraphqnubah.U list_itemqoubhX)qp}qq(h'Uh0}qr(h2]h3]h4]h5]h7]uh(hSh"]qs(h])qt}qu(h'Uh0}qv(h2]h3]h4]h5]h7]uh(hph"]qwhb)qx}qy(h'Uh0}qz(h5]q{Uid2q|ah4]h2]h3]h7]Urefidhuh(hth"]q}hCXSignalsq~q}q(h'XSignalsqh(hxubah.hmubah.hnubhR)q}q(h'Uh0}q(h2]h3]h4]h5]h7]uh(hph"]q(hX)q}q(h'Uh0}q(h2]h3]h4]h5]h7]uh(hh"]qh])q}q(h'Uh0}q(h2]h3]h4]h5]h7]uh(hh"]qhb)q}q(h'Uh0}q(h5]qUid3qah4]h2]h3]h7]Urefidh uh(hh"]qhCX Task Signalsqq}q(h'X Task Signalsqh(hubah.hmubah.hnubah.houbhX)q}q(h'Uh0}q(h2]h3]h4]h5]h7]uh(hh"]qh])q}q(h'Uh0}q(h2]h3]h4]h5]h7]uh(hh"]qhb)q}q(h'Uh0}q(h5]qUid4qah4]h2]h3]h7]Urefidhuh(hh"]qhCXWorker Signalsqq}q(h'XWorker Signalsqh(hubah.hmubah.hnubah.houbeh.hUubeh.houbeubaubh$)q}q(h'Uh(h%h)h,h.h/h0}q(h2]h3]h4]h5]qhah7]qhauh9K h:hh"]q(h<)q}q(h'hlh(hh)h,h.h@h0}q(h5]h4]h2]h3]h7]Urefidqhguh9K h:hh"]qhCXBasicsqq}q(h'hlh(hubaubh])q}q(h'XmSeveral kinds of events trigger signals, you can connect to these signals to perform actions as they trigger.qh(hh)h,h.hnh0}q(h2]h3]h4]h5]h7]uh9K h:hh"]qhCXmSeveral kinds of events trigger signals, you can connect to these signals to perform actions as they trigger.qq}q(h'hh(hubaubh])q}q(h'X3Example connecting to the :data:`task_sent` signal:qh(hh)h,h.hnh0}q(h2]h3]h4]h5]h7]uh9Kh:hh"]q(hCXExample connecting to the qŅq}q(h'XExample connecting to the h(hubcsphinx.addnodes pending_xref q)q}q(h'X:data:`task_sent`qh(hh)h,h.U pending_xrefqh0}q(UreftypeXdataUrefwarnqΉU reftargetqX task_sentU refdomainXpyqh5]h4]U refexplicith2]h3]h7]UrefdocqXreference/celery.signalsqUpy:classqNU py:moduleqXcelery.signalsquh9Kh"]qcdocutils.nodes literal q)q}q(h'hh0}q(h2]h3]q(UxrefqhXpy-dataqeh4]h5]h7]uh(hh"]qhCX task_sentq߅q}q(h'Uh(hubah.UliteralqubaubhCX signal:qㅁq}q(h'X signal:h(hubeubcdocutils.nodes literal_block q)q}q(h'Xfrom celery.signals import task_sent def task_sent_handler(sender=None, task_id=None, task=None, args=None, kwargs=None, **kwds): print("Got signal task_sent for task id %s" % (task_id, )) task_sent.connect(task_sent_handler)h(hh)h,h.U literal_blockqh0}q(UlinenosqUlanguageqXpythonU xml:spaceqUpreserveqh5]h4]h2]h3]h7]uh9Kh:hh"]qhCXfrom celery.signals import task_sent def task_sent_handler(sender=None, task_id=None, task=None, args=None, kwargs=None, **kwds): print("Got signal task_sent for task id %s" % (task_id, )) task_sent.connect(task_sent_handler)qq}q(h'Uh(hubaubh])q}q(h'XESome signals also have a sender which you can filter by. For example the :data:`task_sent` signal uses the task name as a sender, so you can connect your handler to be called only when tasks with name ``"tasks.add"`` has been sent by providing the ``sender`` argument to :class:`~celery.utils.dispatch.signal.Signal.connect`:h(hh)h,h.hnh0}q(h2]h3]h4]h5]h7]uh9Kh:hh"]q(hCXISome signals also have a sender which you can filter by. For example the qq}q(h'XISome signals also have a sender which you can filter by. For example the h(hubh)q}q(h'X:data:`task_sent`qh(hh)h,h.hh0}q(UreftypeXdatahΉhX task_sentU refdomainXpyqh5]h4]U refexplicith2]h3]h7]hhhNhhuh9Kh"]qh)r}r(h'hh0}r(h2]h3]r(hhXpy-datareh4]h5]h7]uh(hh"]rhCX task_sentrr}r(h'Uh(jubah.hubaubhCXo signal uses the task name as a sender, so you can connect your handler to be called only when tasks with name r r }r (h'Xo signal uses the task name as a sender, so you can connect your handler to be called only when tasks with name h(hubh)r }r (h'X``"tasks.add"``h0}r(h2]h3]h4]h5]h7]uh(hh"]rhCX "tasks.add"rr}r(h'Uh(j ubah.hubhCX has been sent by providing the rr}r(h'X has been sent by providing the h(hubh)r}r(h'X ``sender``h0}r(h2]h3]h4]h5]h7]uh(hh"]rhCXsenderrr}r(h'Uh(jubah.hubhCX argument to rr}r(h'X argument to h(hubh)r }r!(h'X5:class:`~celery.utils.dispatch.signal.Signal.connect`r"h(hh)h,h.hh0}r#(UreftypeXclasshΉhX+celery.utils.dispatch.signal.Signal.connectU refdomainXpyr$h5]h4]U refexplicith2]h3]h7]hhhNhhuh9Kh"]r%h)r&}r'(h'j"h0}r((h2]h3]r)(hj$Xpy-classr*eh4]h5]h7]uh(j h"]r+hCXconnectr,r-}r.(h'Uh(j&ubah.hubaubhCX:r/}r0(h'X:h(hubeubh)r1}r2(h'X8task_sent.connect(task_sent_handler, sender="tasks.add")h(hh)h,h.hh0}r3(hhXpythonhhh5]h4]h2]h3]h7]uh9K"h:hh"]r4hCX8task_sent.connect(task_sent_handler, sender="tasks.add")r5r6}r7(h'Uh(j1ubaubeubh$)r8}r9(h'Uh(h%h)h,h.h/h0}r:(h2]h3]h4]h5]r;hah7]r<h auh9K'h:hh"]r=(h<)r>}r?(h'hh(j8h)h,h.h@h0}r@(h5]h4]h2]h3]h7]hh|uh9K'h:hh"]rAhCXSignalsrBrC}rD(h'hh(j>ubaubh$)rE}rF(h'Uh(j8h)h,h.h/h0}rG(h2]h3]h4]h5]rHh ah7]rIhauh9K*h:hh"]rJ(h<)rK}rL(h'hh(jEh)h,h.h@h0}rM(h5]h4]h2]h3]h7]hhuh9K*h:hh"]rNhCX Task SignalsrOrP}rQ(h'hh(jKubaubcsphinx.addnodes index rR)rS}rT(h'Uh(jEh)Nh.UindexrUh0}rV(h5]h4]h2]h3]h7]Uentries]rW(UsinglerXX$task_sent (in module celery.signals)hUtrYauh9Nh:hh"]ubcsphinx.addnodes desc rZ)r[}r\(h'Uh(jEh)Nh.Udescr]h0}r^(Unoindexr_Udomainr`Xpyh5]h4]h2]h3]h7]UobjtyperaXdatarbUdesctypercjbuh9Nh:hh"]rd(csphinx.addnodes desc_signature re)rf}rg(h'X task_sentrhh(j[h)h,h.Udesc_signaturerih0}rj(h5]rkhaUmodulerlhh4]h2]h3]h7]rmhaUfullnamernjhUclassroUUfirstrpuh9KGh:hh"]rq(csphinx.addnodes desc_addname rr)rs}rt(h'Xcelery.signals.h(jfh)h,h.U desc_addnameruh0}rv(h2]h3]h4]h5]h7]uh9KGh:hh"]rwhCXcelery.signals.rxry}rz(h'Uh(jsubaubcsphinx.addnodes desc_name r{)r|}r}(h'jhh(jfh)h,h.U desc_namer~h0}r(h2]h3]h4]h5]h7]uh9KGh:hh"]rhCX task_sentrr}r(h'Uh(j|ubaubeubcsphinx.addnodes desc_content r)r}r(h'Uh(j[h)h,h.U desc_contentrh0}r(h2]h3]h4]h5]h7]uh9KGh:hh"]r(h])r}r(h'XDispatched when a task has been sent to the broker. Note that this is executed in the client process, the one sending the task, not in the worker.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9K.h:hh"]rhCXDispatched when a task has been sent to the broker. Note that this is executed in the client process, the one sending the task, not in the worker.rr}r(h'jh(jubaubh])r}r(h'X*Sender is the name of the task being sent.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9K2h:hh"]rhCX*Sender is the name of the task being sent.rr}r(h'jh(jubaubh])r}r(h'XProvides arguments:rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9K4h:hh"]rhCXProvides arguments:rr}r(h'jh(jubaubhR)r}r(h'Uh(jh)h,h.hUh0}r(UbulletrX*h5]h4]h2]h3]h7]uh9K6h:hh"]r(hX)r}r(h'X)task_id Id of the task to be executed. h(jh)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rcdocutils.nodes definition_list r)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rcdocutils.nodes definition_list_item r)r}r(h'X'task_id Id of the task to be executed. h(jh)h,h.Udefinition_list_itemrh0}r(h2]h3]h4]h5]h7]uh9K7h"]r(cdocutils.nodes term r)r}r(h'Xtask_idrh(jh)h,h.Utermrh0}r(h2]h3]h4]h5]h7]uh9K7h"]rhCXtask_idrr}r(h'jh(jubaubcdocutils.nodes definition r)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'XId of the task to be executed.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9K7h"]rhCXId of the task to be executed.rr}r(h'jh(jubaubah.U definitionrubeubah.Udefinition_listrubaubhX)r}r(h'X task The task being executed. h(jh)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'Xtask The task being executed. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9K:h"]r(j)r}r(h'Xtaskrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9K:h"]rhCXtaskrr}r(h'jh(jubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'XThe task being executed.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9K:h"]rhCXThe task being executed.rr}r(h'jh(jubaubah.jubeubah.jubaubhX)r}r(h'X'args the tasks positional arguments. h(jh)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'X%args the tasks positional arguments. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9K=h"]r(j)r}r(h'Xargsrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9K=h"]rhCXargsrr}r(h'jh(jubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'Xthe tasks positional arguments.r h(jh)h,h.hnh0}r (h2]h3]h4]h5]h7]uh9K=h"]r hCXthe tasks positional arguments.r r }r(h'j h(jubaubah.jubeubah.jubaubhX)r}r(h'X&kwargs The tasks keyword arguments. h(jh)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'X$kwargs The tasks keyword arguments. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9K@h"]r(j)r}r(h'Xkwargsrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9K@h"]rhCXkwargsr r!}r"(h'jh(jubaubj)r#}r$(h'Uh0}r%(h2]h3]h4]h5]h7]uh(jh"]r&h])r'}r((h'XThe tasks keyword arguments.r)h(j#h)h,h.hnh0}r*(h2]h3]h4]h5]h7]uh9K@h"]r+hCXThe tasks keyword arguments.r,r-}r.(h'j)h(j'ubaubah.jubeubah.jubaubhX)r/}r0(h'X$eta The time to execute the task. h(jh)Nh.hoh0}r1(h2]h3]h4]h5]h7]uh9Nh:hh"]r2j)r3}r4(h'Uh0}r5(h2]h3]h4]h5]h7]uh(j/h"]r6j)r7}r8(h'X"eta The time to execute the task. h(j3h)h,h.jh0}r9(h2]h3]h4]h5]h7]uh9KCh"]r:(j)r;}r<(h'Xetar=h(j7h)h,h.jh0}r>(h2]h3]h4]h5]h7]uh9KCh"]r?hCXetar@rA}rB(h'j=h(j;ubaubj)rC}rD(h'Uh0}rE(h2]h3]h4]h5]h7]uh(j7h"]rFh])rG}rH(h'XThe time to execute the task.rIh(jCh)h,h.hnh0}rJ(h2]h3]h4]h5]h7]uh9KCh"]rKhCXThe time to execute the task.rLrM}rN(h'jIh(jGubaubah.jubeubah.jubaubhX)rO}rP(h'X:taskset Id of the taskset this task is part of (if any).h(jh)Nh.hoh0}rQ(h2]h3]h4]h5]h7]uh9Nh:hh"]rRj)rS}rT(h'Uh0}rU(h2]h3]h4]h5]h7]uh(jOh"]rVj)rW}rX(h'X8taskset Id of the taskset this task is part of (if any).h(jSh)h,h.jh0}rY(h2]h3]h4]h5]h7]uh9KEh"]rZ(j)r[}r\(h'Xtasksetr]h(jWh)h,h.jh0}r^(h2]h3]h4]h5]h7]uh9KEh"]r_hCXtasksetr`ra}rb(h'j]h(j[ubaubj)rc}rd(h'Uh0}re(h2]h3]h4]h5]h7]uh(jWh"]rfh])rg}rh(h'X0Id of the taskset this task is part of (if any).rih(jch)h,h.hnh0}rj(h2]h3]h4]h5]h7]uh9KFh"]rkhCX0Id of the taskset this task is part of (if any).rlrm}rn(h'jih(jgubaubah.jubeubah.jubaubeubeubeubjR)ro}rp(h'Uh(jEh)Nh.jUh0}rq(h5]h4]h2]h3]h7]Uentries]rr(jXX&task_prerun (in module celery.signals)h Utrsauh9Nh:hh"]ubjZ)rt}ru(h'Uh(jEh)Nh.j]h0}rv(j_j`Xpyh5]h4]h2]h3]h7]jaXdatarwjcjwuh9Nh:hh"]rx(je)ry}rz(h'X task_prerunr{h(jth)h,h.jih0}r|(h5]r}h ajlhh4]h2]h3]h7]r~h ajnj{joUjpuh9K[h:hh"]r(jr)r}r(h'Xcelery.signals.h(jyh)h,h.juh0}r(h2]h3]h4]h5]h7]uh9K[h:hh"]rhCXcelery.signals.rr}r(h'Uh(jubaubj{)r}r(h'j{h(jyh)h,h.j~h0}r(h2]h3]h4]h5]h7]uh9K[h:hh"]rhCX task_prerunrr}r(h'Uh(jubaubeubj)r}r(h'Uh(jth)h,h.jh0}r(h2]h3]h4]h5]h7]uh9K[h:hh"]r(h])r}r(h'X%Dispatched before a task is executed.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9KJh:hh"]rhCX%Dispatched before a task is executed.rr}r(h'jh(jubaubh])r}r(h'X(Sender is the task class being executed.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9KLh:hh"]rhCX(Sender is the task class being executed.rr}r(h'jh(jubaubh])r}r(h'XProvides arguments:rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9KNh:hh"]rhCXProvides arguments:rr}r(h'jh(jubaubhR)r}r(h'Uh(jh)h,h.hUh0}r(jX*h5]h4]h2]h3]h7]uh9KPh:hh"]r(hX)r}r(h'X)task_id Id of the task to be executed. h(jh)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'X'task_id Id of the task to be executed. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9KQh"]r(j)r}r(h'Xtask_idrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9KQh"]rhCXtask_idrr}r(h'jh(jubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'XId of the task to be executed.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9KQh"]rhCXId of the task to be executed.rr}r(h'jh(jubaubah.jubeubah.jubaubhX)r}r(h'X task The task being executed. h(jh)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'Xtask The task being executed. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9KTh"]r(j)r}r(h'Xtaskrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9KTh"]rhCXtaskrr}r(h'jh(jubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'XThe task being executed.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9KTh"]rhCXThe task being executed.rr}r(h'jh(jubaubah.jubeubah.jubaubhX)r}r(h'X'args the tasks positional arguments. h(jh)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'X%args the tasks positional arguments. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9KWh"]r(j)r}r(h'Xargsrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9KWh"]rhCXargsrr}r(h'jh(jubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'Xthe tasks positional arguments.rh(jh)h,h.hnh0}r (h2]h3]h4]h5]h7]uh9KWh"]r hCXthe tasks positional arguments.r r }r (h'jh(jubaubah.jubeubah.jubaubhX)r}r(h'X%kwargs The tasks keyword arguments.h(jh)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'X#kwargs The tasks keyword arguments.h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9KYh"]r(j)r}r(h'Xkwargsrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9KYh"]rhCXkwargsrr }r!(h'jh(jubaubj)r"}r#(h'Uh0}r$(h2]h3]h4]h5]h7]uh(jh"]r%h])r&}r'(h'XThe tasks keyword arguments.r(h(j"h)h,h.hnh0}r)(h2]h3]h4]h5]h7]uh9KZh"]r*hCXThe tasks keyword arguments.r+r,}r-(h'j(h(j&ubaubah.jubeubah.jubaubeubeubeubjR)r.}r/(h'Uh(jEh)Nh.jUh0}r0(h5]h4]h2]h3]h7]Uentries]r1(jXX'task_postrun (in module celery.signals)hUtr2auh9Nh:hh"]ubjZ)r3}r4(h'Uh(jEh)Nh.j]h0}r5(j_j`Xpyh5]h4]h2]h3]h7]jaXdatar6jcj6uh9Nh:hh"]r7(je)r8}r9(h'X task_postrunr:h(j3h)h,h.jih0}r;(h5]r<hajlhh4]h2]h3]h7]r=hajnj:joUjpuh9Ksh:hh"]r>(jr)r?}r@(h'Xcelery.signals.h(j8h)h,h.juh0}rA(h2]h3]h4]h5]h7]uh9Ksh:hh"]rBhCXcelery.signals.rCrD}rE(h'Uh(j?ubaubj{)rF}rG(h'j:h(j8h)h,h.j~h0}rH(h2]h3]h4]h5]h7]uh9Ksh:hh"]rIhCX task_postrunrJrK}rL(h'Uh(jFubaubeubj)rM}rN(h'Uh(j3h)h,h.jh0}rO(h2]h3]h4]h5]h7]uh9Ksh:hh"]rP(h])rQ}rR(h'X*Dispatched after a task has been executed.rSh(jMh)h,h.hnh0}rT(h2]h3]h4]h5]h7]uh9K^h:hh"]rUhCX*Dispatched after a task has been executed.rVrW}rX(h'jSh(jQubaubh])rY}rZ(h'X"Sender is the task class executed.r[h(jMh)h,h.hnh0}r\(h2]h3]h4]h5]h7]uh9K`h:hh"]r]hCX"Sender is the task class executed.r^r_}r`(h'j[h(jYubaubh])ra}rb(h'XProvides arguments:rch(jMh)h,h.hnh0}rd(h2]h3]h4]h5]h7]uh9Kbh:hh"]rehCXProvides arguments:rfrg}rh(h'jch(jaubaubhR)ri}rj(h'Uh(jMh)h,h.hUh0}rk(jX*h5]h4]h2]h3]h7]uh9Kdh:hh"]rl(hX)rm}rn(h'X)task_id Id of the task to be executed. h(jih)Nh.hoh0}ro(h2]h3]h4]h5]h7]uh9Nh:hh"]rpj)rq}rr(h'Uh0}rs(h2]h3]h4]h5]h7]uh(jmh"]rtj)ru}rv(h'X'task_id Id of the task to be executed. h(jqh)h,h.jh0}rw(h2]h3]h4]h5]h7]uh9Keh"]rx(j)ry}rz(h'Xtask_idr{h(juh)h,h.jh0}r|(h2]h3]h4]h5]h7]uh9Keh"]r}hCXtask_idr~r}r(h'j{h(jyubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(juh"]rh])r}r(h'XId of the task to be executed.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9Keh"]rhCXId of the task to be executed.rr}r(h'jh(jubaubah.jubeubah.jubaubhX)r}r(h'X task The task being executed. h(jih)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'Xtask The task being executed. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9Khh"]r(j)r}r(h'Xtaskrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9Khh"]rhCXtaskrr}r(h'jh(jubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'XThe task being executed.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9Khh"]rhCXThe task being executed.rr}r(h'jh(jubaubah.jubeubah.jubaubhX)r}r(h'X'args The tasks positional arguments. h(jih)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'X%args The tasks positional arguments. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9Kkh"]r(j)r}r(h'Xargsrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9Kkh"]rhCXargsrr}r(h'jh(jubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'XThe tasks positional arguments.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9Kkh"]rhCXThe tasks positional arguments.rr}r(h'jh(jubaubah.jubeubah.jubaubhX)r}r(h'X&kwargs The tasks keyword arguments. h(jih)Nh.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]rj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rj)r}r(h'X$kwargs The tasks keyword arguments. h(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9Knh"]r(j)r}r(h'Xkwargsrh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9Knh"]rhCXkwargsrr}r(h'jh(jubaubj)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'XThe tasks keyword arguments.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9Knh"]rhCXThe tasks keyword arguments.rr}r(h'jh(jubaubah.jubeubah.jubaubhX)r}r(h'X'retval The return value of the task.h(jih)h,h.hoh0}r(h2]h3]h4]h5]h7]uh9Nh:hh"]r(h])r}r(h'Xretvalrh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9Kph"]rhCXretvalrr}r(h'jh(jubaubcdocutils.nodes block_quote r)r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rh])r}r(h'XThe return value of the task.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9Krh"]rhCXThe return value of the task.rr}r(h'jh(jubaubah.U block_quoterubeubeubeubeubeubh$)r}r(h'Uh(j8h)h,h.h/h0}r (h2]h3]h4]h5]r hah7]r hauh9Kuh:hh"]r (h<)r }r(h'hh(jh)h,h.h@h0}r(h5]h4]h2]h3]h7]hhuh9Kuh:hh"]rhCXWorker Signalsrr}r(h'hh(j ubaubjR)r}r(h'Uh(jh)h,h.jUh0}r(h5]h4]h2]h3]h7]Uentries]r(jXX&worker_init (in module celery.signals)hUtrauh9Nh:hh"]ubjZ)r}r(h'Uh(jh)h,h.j]h0}r(j_j`Xpyh5]h4]h2]h3]h7]jaXdatarjcjuh9Nh:hh"]r(je)r}r(h'X worker_initr h(jh)h,h.jih0}r!(h5]r"hajlhh4]h2]h3]h7]r#hajnj joUjpuh9Kzh:hh"]r$(jr)r%}r&(h'Xcelery.signals.h(jh)h,h.juh0}r'(h2]h3]h4]h5]h7]uh9Kzh:hh"]r(hCXcelery.signals.r)r*}r+(h'Uh(j%ubaubj{)r,}r-(h'j h(jh)h,h.j~h0}r.(h2]h3]h4]h5]h7]uh9Kzh:hh"]r/hCX worker_initr0r1}r2(h'Uh(j,ubaubeubj)r3}r4(h'Uh(jh)h,h.jh0}r5(h2]h3]h4]h5]h7]uh9Kzh:hh"]r6h])r7}r8(h'X(Dispatched before the worker is started.r9h(j3h)h,h.hnh0}r:(h2]h3]h4]h5]h7]uh9Kyh:hh"]r;hCX(Dispatched before the worker is started.r<r=}r>(h'j9h(j7ubaubaubeubjR)r?}r@(h'Uh(jh)h,h.jUh0}rA(h5]h4]h2]h3]h7]Uentries]rB(jXX'worker_ready (in module celery.signals)h UtrCauh9Nh:hh"]ubjZ)rD}rE(h'Uh(jh)h,h.j]h0}rF(j_j`Xpyh5]h4]h2]h3]h7]jaXdatarGjcjGuh9Nh:hh"]rH(je)rI}rJ(h'X worker_readyrKh(jDh)h,h.jih0}rL(h5]rMh ajlhh4]h2]h3]h7]rNh ajnjKjoUjpuh9K~h:hh"]rO(jr)rP}rQ(h'Xcelery.signals.h(jIh)h,h.juh0}rR(h2]h3]h4]h5]h7]uh9K~h:hh"]rShCXcelery.signals.rTrU}rV(h'Uh(jPubaubj{)rW}rX(h'jKh(jIh)h,h.j~h0}rY(h2]h3]h4]h5]h7]uh9K~h:hh"]rZhCX worker_readyr[r\}r](h'Uh(jWubaubeubj)r^}r_(h'Uh(jDh)h,h.jh0}r`(h2]h3]h4]h5]h7]uh9K~h:hh"]rah])rb}rc(h'X3Dispatched when the worker is ready to accept work.rdh(j^h)h,h.hnh0}re(h2]h3]h4]h5]h7]uh9K}h:hh"]rfhCX3Dispatched when the worker is ready to accept work.rgrh}ri(h'jdh(jbubaubaubeubjR)rj}rk(h'Uh(jh)h,h.jUh0}rl(h5]h4]h2]h3]h7]Uentries]rm(jXX.worker_process_init (in module celery.signals)h Utrnauh9Nh:hh"]ubjZ)ro}rp(h'Uh(jh)h,h.j]h0}rq(j_j`Xpyh5]h4]h2]h3]h7]jaXdatarrjcjruh9Nh:hh"]rs(je)rt}ru(h'Xworker_process_initrvh(joh)h,h.jih0}rw(h5]rxh ajlhh4]h2]h3]h7]ryh ajnjvjoUjpuh9Kh:hh"]rz(jr)r{}r|(h'Xcelery.signals.h(jth)h,h.juh0}r}(h2]h3]h4]h5]h7]uh9Kh:hh"]r~hCXcelery.signals.rr}r(h'Uh(j{ubaubj{)r}r(h'jvh(jth)h,h.j~h0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXworker_process_initrr}r(h'Uh(jubaubeubj)r}r(h'Uh(joh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rh])r}r(h'X:Dispatched by each new pool worker process when it starts.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCX:Dispatched by each new pool worker process when it starts.rr}r(h'jh(jubaubaubeubjR)r}r(h'Uh(jh)h,h.jUh0}r(h5]h4]h2]h3]h7]Uentries]r(jXX*worker_shutdown (in module celery.signals)h Utrauh9Nh:hh"]ubjZ)r}r(h'Uh(jh)h,h.j]h0}r(j_j`Xpyh5]h4]h2]h3]h7]jaXdatarjcjuh9Nh:hh"]r(je)r}r(h'Xworker_shutdownrh(jh)h,h.jih0}r(h5]rh ajlhh4]h2]h3]h7]rh ajnjjoUjpuh9Kh:hh"]r(jr)r}r(h'Xcelery.signals.h(jh)h,h.juh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXcelery.signals.rr}r(h'Uh(jubaubj{)r}r(h'jh(jh)h,h.j~h0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXworker_shutdownrr}r(h'Uh(jubaubeubj)r}r(h'Uh(jh)h,h.jh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rh])r}r(h'X1Dispatched when the worker is about to shut down.rh(jh)h,h.hnh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCX1Dispatched when the worker is about to shut down.rr}r(h'jh(jubaubaubeubeubeubeubah'UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh:hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh@NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixr UU tab_widthr KUerror_encodingr UUTF-8r U_sourcer UV/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.signals.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startr KUidsr!}r"(hjfhhhjh jyhjhhh|hxhhh jIhghchj8h jEh jth jhh%h!hHhj8uUsubstitution_namesr#}r$h.h:h0}r%(h2]h5]h4]Usourceh,h3]h7]uU footnotesr&]r'Urefidsr(}r)ub.PKHDD]Acelery-2.0-archived/.doctrees/reference/celery.decorators.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX#task decorators - celery.decoratorsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXY/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.decorators.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U!task-decorators-celery-decoratorsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX#Task Decorators - celery.decoratorsq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X#Task Decorators - celery.decoratorsq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.task.base import Task, PeriodicTask File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/task/__init__.py", line 7, in from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUY/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.decorators.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDZΗ5celery-2.0-archived/.doctrees/reference/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qX api referenceqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhU api-referenceqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXM/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hX API Referenceq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2X API Referenceq3q4}q5(hh.hh,ubaubcdocutils.nodes field_list q6)q7}q8(hUhhhhhU field_listq9h}q:(h!]h"]h#]h$]h&]uh(Kh)hh]q;(cdocutils.nodes field q<)q=}q>(hUhh7hhhUfieldq?h}q@(h!]h"]h#]h$]h&]uh(Kh)hh]qA(cdocutils.nodes field_name qB)qC}qD(hXReleaseqEh}qF(h!]h"]h#]h$]h&]uhh=h]qGh2XReleaseqHqI}qJ(hhEhhCubahU field_nameqKubcdocutils.nodes field_body qL)qM}qN(hX |version|qOh}qP(h!]h"]h#]h$]h&]uhh=h]qQcdocutils.nodes paragraph qR)qS}qT(hhOhhMhhhU paragraphqUh}qV(h!]h"]h#]h$]h&]uh(Kh]qWh2X2.0qXqY}qZ(hU2.0q[hhSubaubahU field_bodyq\ubeubh<)q]}q^(hUhh7hhhh?h}q_(h!]h"]h#]h$]h&]uh(Kh)hh]q`(hB)qa}qb(hXDateqch}qd(h!]h"]h#]h$]h&]uhh]h]qeh2XDateqfqg}qh(hhchhaubahhKubhL)qi}qj(hX|today| h}qk(h!]h"]h#]h$]h&]uhh]h]qlhR)qm}qn(hX|today|qohhihhhhUh}qp(h!]h"]h#]h$]h&]uh(Kh]qqh2XFebruary 04, 2014qrqs}qt(hXFebruary 04, 2014hhmubaubahh\ubeubeubcdocutils.nodes compound qu)qv}qw(hUhhhhhUcompoundqxh}qy(h!]h"]qzUtoctree-wrapperq{ah#]h$]h&]uh(Nh)hh]q|csphinx.addnodes toctree q})q~}q(hUhhvhhhUtoctreeqh}q(UnumberedqKU includehiddenqhXreference/indexqU titlesonlyqUglobqh$]h#]h!]h"]h&]Uentriesq]q(NXreference/celery.decoratorsqqNXreference/celery.task.baseqqNXreference/celery.task.setsqqNXreference/celery.executeqqNXreference/celery.resultqqNXreference/celery.taskqqNXreference/celery.confqqNXreference/celery.task.controlqqNXreference/celery.task.httpqqNXreference/celery.task.schedulesqqNXreference/celery.signalsqqNXreference/celery.exceptionsqqNXreference/celery.task.builtinsqqNXreference/celery.loadersqqNXreference/celery.loaders.baseqqNX reference/celery.loaders.defaultqqNXreference/celery.registryqqNXreference/celery.statesqqNXreference/celery.messagingqqNX"reference/celery.contrib.abortableqqNXreference/celery.eventsqqNXreference/celery.events.stateqqNXreference/celery.bin.celerydqqNXreference/celery.bin.celerybeatqqNXreference/celery.bin.celeryevqqNXreference/celery.bin.camqadmqqNX"reference/celery.bin.celeryd_multiqqeUhiddenqU includefilesq]q(hhhhhhhhhhhhhhhhhhhhhhhhhhheUmaxdepthqKuh(Kh]ubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingr U utf-8-sigr U_disable_configr NU id_prefixr UU tab_widthr KUerror_encodingrUUTF-8rU_sourcerUM/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/index.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrhUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]r Ufile_insertion_enabledr!U raw_enabledr"KU dump_settingsr#NubUsymbol_footnote_startr$KUidsr%}r&hhsUsubstitution_namesr'}r(hh)h}r)(h!]h$]h#]Usourcehh"]h&]uU footnotesr*]r+Urefidsr,}r-ub.PKHDDDcelery-2.0-archived/.doctrees/reference/celery.task.builtins.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X,built-in task classes - celery.task.builtinsqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX\/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.builtins.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U*built-in-task-classes-celery-task-builtinsq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX,Built-in Task Classes - celery.task.builtinsq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X,Built-in Task Classes - celery.task.builtinsq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU\/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.builtins.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD}Ccelery-2.0-archived/.doctrees/reference/celery.task.control.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X2remote management of workers - celery.task.controlqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX[/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.control.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U0remote-management-of-workers-celery-task-controlq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX2Remote Management of Workers - celery.task.controlq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X2Remote Management of Workers - celery.task.controlq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU[/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.control.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDY@PPAcelery-2.0-archived/.doctrees/reference/celery.exceptions.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X!celery.exceptions.WorkerLostErrorqXexceptions - celery.exceptionsqNX"celery.exceptions.TaskRevokedErrorqX celery.exceptions.RetryTaskErrorq Xcelery.exceptions.TimeoutErrorq X'celery.exceptions.SoftTimeLimitExceededq X#celery.exceptions.AlreadyRegisteredq Xcelery.exceptions.NotRegisteredq UcontentsqNX#celery.exceptions.TimeLimitExceededqXcelery.exceptions.QueueNotFoundqX)celery.exceptions.MaxRetriesExceededErrorqX&celery.exceptions.ImproperlyConfiguredquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhUexceptions-celery-exceptionsqhhh h h h h h h h h h hUcontentsqhhhhhhhhuUchildrenq]qcdocutils.nodes section q )q!}q"(U rawsourceq#UUparentq$hUsourceq%cdocutils.nodes reprunicode q&XY/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.exceptions.rstq'q(}q)bUtagnameq*Usectionq+U attributesq,}q-(Udupnamesq.]Uclassesq/]Ubackrefsq0]Uidsq1]q2haUnamesq3]q4hauUlineq5KUdocumentq6hh]q7(cdocutils.nodes title q8)q9}q:(h#XExceptions - celery.exceptionsq;h$h!h%h(h*Utitleqcdocutils.nodes Text q?XExceptions - celery.exceptionsq@qA}qB(h#h;h$h9ubaubcdocutils.nodes target qC)qD}qE(h#Uh$h!h%U qFh*UtargetqGh,}qH(h.]h1]qIXmodule-celery.exceptionsqJah0]Uismodh/]h3]uh5Kh6hh]ubcsphinx.addnodes index qK)qL}qM(h#Uh$h!h%hFh*UindexqNh,}qO(h1]h0]h.]h/]h3]Uentries]qP(UsingleqQXcelery.exceptions (module)Xmodule-celery.exceptionsUtqRauh5Kh6hh]ubcdocutils.nodes paragraph qS)qT}qU(h#XCommon ExceptionsqVh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptionsqWh*U paragraphqXh,}qY(h.]h/]h0]h1]h3]uh5Kh6hh]qZh?XCommon Exceptionsq[q\}q](h#hVh$hTubaubhK)q^}q_(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.AlreadyRegisteredq`h*hNh,}qa(h1]h0]h.]h/]h3]Uentries]qb(hQXAlreadyRegisteredqch Utqdauh5Nh6hh]ubcsphinx.addnodes desc qe)qf}qg(h#Uh$h!h%h`h*Udescqhh,}qi(UnoindexqjUdomainqkXpyh1]h0]h.]h/]h3]UobjtypeqlX exceptionqmUdesctypeqnhmuh5Nh6hh]qo(csphinx.addnodes desc_signature qp)qq}qr(h#hch$hfh%U qsh*Udesc_signatureqth,}qu(h1]qvh aUmoduleqwh&Xcelery.exceptionsqxqy}qzbh0]h.]h/]h3]q{h aUfullnameq|hcUclassq}UUfirstq~uh5Nh6hh]q(csphinx.addnodes desc_annotation q)q}q(h#X exception h$hqh%hsh*Udesc_annotationqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?X exception qq}q(h#Uh$hubaubcsphinx.addnodes desc_addname q)q}q(h#Xcelery.exceptions.h$hqh%hsh*U desc_addnameqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?Xcelery.exceptions.qq}q(h#Uh$hubaubcsphinx.addnodes desc_name q)q}q(h#hch$hqh%hsh*U desc_nameqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?XAlreadyRegisteredqq}q(h#Uh$hubaubeubcsphinx.addnodes desc_content q)q}q(h#Uh$hfh%hsh*U desc_contentqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qhS)q}q(h#XThe task is already registered.qh$hh%h`h*hXh,}q(h.]h/]h0]h1]h3]uh5Kh6hh]qh?XThe task is already registered.qq}q(h#hh$hubaubaubeubhK)q}q(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.ImproperlyConfiguredqh*hNh,}q(h1]h0]h.]h/]h3]Uentries]q(hQXImproperlyConfiguredqhUtqauh5Nh6hh]ubhe)q}q(h#Uh$h!h%hh*hhh,}q(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionqhnhuh5Nh6hh]q(hp)q}q(h#hh$hh%hsh*hth,}q(h1]qhahwh&Xcelery.exceptionsqq}qbh0]h.]h/]h3]qhah|hh}Uh~uh5Nh6hh]q(h)q}q(h#X exception h$hh%hsh*hh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?X exception q…q}q(h#Uh$hubaubh)q}q(h#Xcelery.exceptions.h$hh%hsh*hh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?Xcelery.exceptions.qɅq}q(h#Uh$hubaubh)q}q(h#hh$hh%hsh*hh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?XImproperlyConfiguredqЅq}q(h#Uh$hubaubeubh)q}q(h#Uh$hh%hsh*hh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qhS)q}q(h#X(Celery is somehow improperly configured.qh$hh%hh*hXh,}q(h.]h/]h0]h1]h3]uh5Kh6hh]qh?X(Celery is somehow improperly configured.q܅q}q(h#hh$hubaubaubeubhK)q}q(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.MaxRetriesExceededErrorqh*hNh,}q(h1]h0]h.]h/]h3]Uentries]q(hQXMaxRetriesExceededErrorqhUtqauh5Nh6hh]ubhe)q}q(h#Uh$h!h%hh*hhh,}q(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionqhnhuh5Nh6hh]q(hp)q}q(h#hh$hh%hsh*hth,}q(h1]qhahwh&Xcelery.exceptionsqq}qbh0]h.]h/]h3]qhah|hh}Uh~uh5Nh6hh]q(h)q}q(h#X exception h$hh%hsh*hh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?X exception qq}q(h#Uh$hubaubh)q}q(h#Xcelery.exceptions.h$hh%hsh*hh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?Xcelery.exceptions.qr}r(h#Uh$hubaubh)r}r(h#hh$hh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?XMaxRetriesExceededErrorrr}r(h#Uh$jubaubeubh)r }r (h#Uh$hh%hsh*hh,}r (h.]h/]h0]h1]h3]uh5Nh6hh]r hS)r }r(h#X.The tasks max restart limit has been exceeded.rh$j h%hh*hXh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?X.The tasks max restart limit has been exceeded.rr}r(h#jh$j ubaubaubeubhK)r}r(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.NotRegisteredrh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX NotRegisteredrh Utrauh5Nh6hh]ubhe)r}r(h#Uh$h!h%jh*hhh,}r(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionrhnjuh5Nh6hh]r (hp)r!}r"(h#X'NotRegistered(message, *args, **kwargs)h$jh%hsh*hth,}r#(h1]r$h ahwh&Xcelery.exceptionsr%r&}r'bh0]h.]h/]h3]r(h ah|jh}Uh~uh5Nh6hh]r)(h)r*}r+(h#X exception h$j!h%hsh*hh,}r,(h.]h/]h0]h1]h3]uh5Nh6hh]r-h?X exception r.r/}r0(h#Uh$j*ubaubh)r1}r2(h#Xcelery.exceptions.h$j!h%hsh*hh,}r3(h.]h/]h0]h1]h3]uh5Nh6hh]r4h?Xcelery.exceptions.r5r6}r7(h#Uh$j1ubaubh)r8}r9(h#jh$j!h%hsh*hh,}r:(h.]h/]h0]h1]h3]uh5Nh6hh]r;h?X NotRegisteredr<r=}r>(h#Uh$j8ubaubcsphinx.addnodes desc_parameterlist r?)r@}rA(h#Uh$j!h%hsh*Udesc_parameterlistrBh,}rC(h.]h/]h0]h1]h3]uh5Nh6hh]rD(csphinx.addnodes desc_parameter rE)rF}rG(h#Xmessageh,}rH(h.]h/]h0]h1]h3]uh$j@h]rIh?XmessagerJrK}rL(h#Uh$jFubah*Udesc_parameterrMubjE)rN}rO(h#X*argsh,}rP(h.]h/]h0]h1]h3]uh$j@h]rQh?X*argsrRrS}rT(h#Uh$jNubah*jMubjE)rU}rV(h#X**kwargsh,}rW(h.]h/]h0]h1]h3]uh$j@h]rXh?X**kwargsrYrZ}r[(h#Uh$jUubah*jMubeubeubh)r\}r](h#Uh$jh%hsh*hh,}r^(h.]h/]h0]h1]h3]uh5Nh6hh]r_hS)r`}ra(h#XThe task is not registered.rbh$j\h%jh*hXh,}rc(h.]h/]h0]h1]h3]uh5Kh6hh]rdh?XThe task is not registered.rerf}rg(h#jbh$j`ubaubaubeubhK)rh}ri(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.QueueNotFoundrjh*hNh,}rk(h1]h0]h.]h/]h3]Uentries]rl(hQX QueueNotFoundrmhUtrnauh5Nh6hh]ubhe)ro}rp(h#Uh$h!h%jjh*hhh,}rq(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionrrhnjruh5Nh6hh]rs(hp)rt}ru(h#jmh$joh%hsh*hth,}rv(h1]rwhahwh&Xcelery.exceptionsrxry}rzbh0]h.]h/]h3]r{hah|jmh}Uh~uh5Nh6hh]r|(h)r}}r~(h#X exception h$jth%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X exception rr}r(h#Uh$j}ubaubh)r}r(h#Xcelery.exceptions.h$jth%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.exceptions.rr}r(h#Uh$jubaubh)r}r(h#jmh$jth%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X QueueNotFoundrr}r(h#Uh$jubaubeubh)r}r(h#Uh$joh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rhS)r}r(h#X,Task routed to a queue not in CELERY_QUEUES.rh$jh%jjh*hXh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?X,Task routed to a queue not in CELERY_QUEUES.rr}r(h#jh$jubaubaubeubhK)r}r(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.RetryTaskErrorrh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQXRetryTaskErrorrh Utrauh5Nh6hh]ubhe)r}r(h#Uh$h!h%jh*hhh,}r(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionrhnjuh5Nh6hh]r(hp)r}r(h#X-RetryTaskError(message, exc, *args, **kwargs)h$jh%hsh*hth,}r(h1]rh ahwh&Xcelery.exceptionsrr}rbh0]h.]h/]h3]rh ah|jh}Uh~uh5Nh6hh]r(h)r}r(h#X exception h$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X exception rr}r(h#Uh$jubaubh)r}r(h#Xcelery.exceptions.h$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.exceptions.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?XRetryTaskErrorrr}r(h#Uh$jubaubj?)r}r(h#Uh$jh%hsh*jBh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]r(jE)r}r(h#Xmessageh,}r(h.]h/]h0]h1]h3]uh$jh]rh?Xmessagerr}r(h#Uh$jubah*jMubjE)r}r(h#Xexch,}r(h.]h/]h0]h1]h3]uh$jh]rh?Xexcrr}r(h#Uh$jubah*jMubjE)r}r(h#X*argsh,}r(h.]h/]h0]h1]h3]uh$jh]rh?X*argsrr}r(h#Uh$jubah*jMubjE)r}r(h#X**kwargsh,}r(h.]h/]h0]h1]h3]uh$jh]rh?X**kwargsrr}r(h#Uh$jubah*jMubeubeubh)r}r(h#Uh$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rhS)r}r(h#X The task is to be retried later.rh$jh%jh*hXh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?X The task is to be retried later.rr}r(h#jh$jubaubaubeubhK)r}r(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.SoftTimeLimitExceededrh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQXSoftTimeLimitExceededrh Utrauh5Nh6hh]ubhe)r}r(h#Uh$h!h%jh*hhh,}r(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionrhnjuh5Nh6hh]r(hp)r}r(h#jh$jh%hsh*hth,}r(h1]rh ahwh&Xcelery.exceptionsrr}rbh0]h.]h/]h3]rh ah|jh}Uh~uh5Nh6hh]r(h)r }r (h#X exception h$jh%hsh*hh,}r (h.]h/]h0]h1]h3]uh5Nh6hh]r h?X exception r r}r(h#Uh$j ubaubh)r}r(h#Xcelery.exceptions.h$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.exceptions.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?XSoftTimeLimitExceededrr}r(h#Uh$jubaubeubh)r}r(h#Uh$jh%hsh*hh,}r (h.]h/]h0]h1]h3]uh5Nh6hh]r!hS)r"}r#(h#XfThe soft time limit has been exceeded. This exception is raised to give the task a chance to clean up.r$h$jh%jh*hXh,}r%(h.]h/]h0]h1]h3]uh5Kh6hh]r&h?XfThe soft time limit has been exceeded. This exception is raised to give the task a chance to clean up.r'r(}r)(h#j$h$j"ubaubaubeubhK)r*}r+(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.TaskRevokedErrorr,h*hNh,}r-(h1]h0]h.]h/]h3]Uentries]r.(hQXTaskRevokedErrorr/hUtr0auh5Nh6hh]ubhe)r1}r2(h#Uh$h!h%j,h*hhh,}r3(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionr4hnj4uh5Nh6hh]r5(hp)r6}r7(h#j/h$j1h%hsh*hth,}r8(h1]r9hahwh&Xcelery.exceptionsr:r;}r<bh0]h.]h/]h3]r=hah|j/h}Uh~uh5Nh6hh]r>(h)r?}r@(h#X exception h$j6h%hsh*hh,}rA(h.]h/]h0]h1]h3]uh5Nh6hh]rBh?X exception rCrD}rE(h#Uh$j?ubaubh)rF}rG(h#Xcelery.exceptions.h$j6h%hsh*hh,}rH(h.]h/]h0]h1]h3]uh5Nh6hh]rIh?Xcelery.exceptions.rJrK}rL(h#Uh$jFubaubh)rM}rN(h#j/h$j6h%hsh*hh,}rO(h.]h/]h0]h1]h3]uh5Nh6hh]rPh?XTaskRevokedErrorrQrR}rS(h#Uh$jMubaubeubh)rT}rU(h#Uh$j1h%hsh*hh,}rV(h.]h/]h0]h1]h3]uh5Nh6hh]rWhS)rX}rY(h#X2The task has been revoked, so no result available.rZh$jTh%j,h*hXh,}r[(h.]h/]h0]h1]h3]uh5Kh6hh]r\h?X2The task has been revoked, so no result available.r]r^}r_(h#jZh$jXubaubaubeubhK)r`}ra(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.TimeLimitExceededrbh*hNh,}rc(h1]h0]h.]h/]h3]Uentries]rd(hQXTimeLimitExceededrehUtrfauh5Nh6hh]ubhe)rg}rh(h#Uh$h!h%jbh*hhh,}ri(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionrjhnjjuh5Nh6hh]rk(hp)rl}rm(h#jeh$jgh%hsh*hth,}rn(h1]rohahwh&Xcelery.exceptionsrprq}rrbh0]h.]h/]h3]rshah|jeh}Uh~uh5Nh6hh]rt(h)ru}rv(h#X exception h$jlh%hsh*hh,}rw(h.]h/]h0]h1]h3]uh5Nh6hh]rxh?X exception ryrz}r{(h#Uh$juubaubh)r|}r}(h#Xcelery.exceptions.h$jlh%hsh*hh,}r~(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.exceptions.rr}r(h#Uh$j|ubaubh)r}r(h#jeh$jlh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?XTimeLimitExceededrr}r(h#Uh$jubaubeubh)r}r(h#Uh$jgh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rhS)r}r(h#XAThe time limit has been exceeded and the job has been terminated.rh$jh%jbh*hXh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?XAThe time limit has been exceeded and the job has been terminated.rr}r(h#jh$jubaubaubeubhK)r}r(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.TimeoutErrorrh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX TimeoutErrorrh Utrauh5Nh6hh]ubhe)r}r(h#Uh$h!h%jh*hhh,}r(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionrhnjuh5Nh6hh]r(hp)r}r(h#jh$jh%hsh*hth,}r(h1]rh ahwh&Xcelery.exceptionsrr}rbh0]h.]h/]h3]rh ah|jh}Uh~uh5Nh6hh]r(h)r}r(h#X exception h$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X exception rr}r(h#Uh$jubaubh)r}r(h#Xcelery.exceptions.h$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.exceptions.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X TimeoutErrorrr}r(h#Uh$jubaubeubh)r}r(h#Uh$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rhS)r}r(h#XThe operation timed out.rh$jh%jh*hXh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?XThe operation timed out.rr}r(h#jh$jubaubaubeubhK)r}r(h#Uh$h!h%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/exceptions.py:docstring of celery.exceptions.WorkerLostErrorrh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQXWorkerLostErrorrhUtrauh5Nh6hh]ubhe)r}r(h#Uh$h!h%jh*hhh,}r(hjhkXpyh1]h0]h.]h/]h3]hlX exceptionrhnjuh5Nh6hh]r(hp)r}r(h#jh$jh%hsh*hth,}r(h1]rhahwh&Xcelery.exceptionsrr}rbh0]h.]h/]h3]rhah|jh}Uh~uh5Nh6hh]r(h)r}r(h#X exception h$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X exception rr}r(h#Uh$jubaubh)r}r(h#Xcelery.exceptions.h$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xcelery.exceptions.rr}r(h#Uh$jubaubh)r}r(h#jh$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?XWorkerLostErrorrr}r(h#Uh$jubaubeubh)r}r(h#Uh$jh%hsh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rhS)r}r(h#X4The worker processing a task has exited prematurely.rh$jh%jh*hXh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]rh?X4The worker processing a task has exited prematurely.rr}r(h#jh$jubaubaubeubeubah#UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr ]r Usymbol_footnote_refsr ]r U citationsr ]rh6hU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(h#Uh,}r(h.]UlevelKh1]h0]UsourcehFh/]h3]UlineKUtypeUINFOruh]rhS)r}r(h#Uh,}r(h.]h/]h0]h1]h3]uh$jh]rh?X>Hyperlink target "module-celery.exceptions" is not referenced.rr}r(h#Uh$jubah*hXubah*Usystem_messagerubaUreporterr NUid_startr!KU autofootnotesr"]r#U citation_refsr$}r%Uindirect_targetsr&]r'Usettingsr((cdocutils.frontend Values r)or*}r+(Ufootnote_backlinksr,KUrecord_dependenciesr-NU rfc_base_urlr.Uhttp://tools.ietf.org/html/r/U tracebackr0Upep_referencesr1NUstrip_commentsr2NU toc_backlinksr3Uentryr4U language_coder5Uenr6U datestampr7NU report_levelr8KU _destinationr9NU halt_levelr:KU strip_classesr;NhNUembed_stylesheetr?Uoutput_encoding_error_handlerr@UstrictrAU sectnum_xformrBKUdump_transformsrCNU docinfo_xformrDKUwarning_streamrENUpep_file_url_templaterFUpep-%04drGUexit_status_levelrHKUconfigrINUstrict_visitorrJNUcloak_email_addressesrKUtrim_footnote_reference_spacerLUenvrMNUdump_pseudo_xmlrNNUexpose_internalsrONUsectsubtitle_xformrPU source_linkrQNUrfc_referencesrRNUoutput_encodingrSUutf-8rTU source_urlrUNUinput_encodingrVU utf-8-sigrWU_disable_configrXNU id_prefixrYUU tab_widthrZKUerror_encodingr[UUTF-8r\U_sourcer]UY/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.exceptions.rstr^Ugettext_compactr_U generatorr`NUdump_internalsraNU smart_quotesrbU pep_base_urlrcUhttp://www.python.org/dev/peps/rdUsyntax_highlightreUlongrfUinput_encoding_error_handlerrgjAUauto_id_prefixrhUidriUdoctitle_xformrjUstrip_elements_with_classesrkNU _config_filesrl]rmUfile_insertion_enabledrnU raw_enabledroKU dump_settingsrpNubUsymbol_footnote_startrqKUidsrr}rs(hjhh!h jh jh jh hqh j!hcdocutils.nodes topic rt)ru}rv(h#Uh$h!h%h(h*Utopicrwh,}rx(h.]h/]ry(UcontentsrzUlocalr{eh0]h1]r|hah3]r}hauh5Kh6hh]r~cdocutils.nodes pending r)r}r(h#X.. contents:: :local:h$juU transformrcdocutils.transforms.parts Contents rUdetailsr}rUlocalNsh*Upendingrh,}r(h.]h/]h0]h1]h3]uh]ubaubhjlhJhDhjthj6hhhhuUsubstitution_namesr}rh*h6h,}r(h.]h1]h0]Usourceh(h/]h3]uU footnotesr]rUrefidsr}rub.PKHDDI>celery-2.0-archived/.doctrees/reference/celery.execute.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X executing tasks - celery.executeqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXV/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.execute.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!Uexecuting-tasks-celery-executeq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX Executing Tasks - celery.executeq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X Executing Tasks - celery.executeq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUV/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.execute.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDNNCcelery-2.0-archived/.doctrees/reference/celery.loaders.base.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X)celery.loaders.base.BaseLoader.configuredqX)loader base classes - celery.loaders.baseqNX1celery.loaders.base.BaseLoader.worker_initializedqX#celery.loaders.base.BaseLoader.confq X0celery.loaders.base.BaseLoader.override_backendsq X-celery.loaders.base.BaseLoader.on_worker_initq X*celery.loaders.base.BaseLoader.init_workerq X1celery.loaders.base.BaseLoader.on_process_cleanupq X5celery.loaders.base.BaseLoader.import_default_modulesqXcelery.loaders.base.BaseLoaderqX+celery.loaders.base.BaseLoader.on_task_initqX1celery.loaders.base.BaseLoader.import_task_moduleqUcontentsqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhU'loader-base-classes-celery-loaders-baseqhhh h h h h h h h h h hhhhhhhhhUcontentsquUchildrenq]qcdocutils.nodes section q )q!}q"(U rawsourceq#UUparentq$hUsourceq%cdocutils.nodes reprunicode q&X[/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.loaders.base.rstq'q(}q)bUtagnameq*Usectionq+U attributesq,}q-(Udupnamesq.]Uclassesq/]Ubackrefsq0]Uidsq1]q2haUnamesq3]q4hauUlineq5KUdocumentq6hh]q7(cdocutils.nodes title q8)q9}q:(h#X)Loader Base Classes - celery.loaders.baseq;h$h!h%h(h*Utitleqcdocutils.nodes Text q?X)Loader Base Classes - celery.loaders.baseq@qA}qB(h#h;h$h9ubaubcdocutils.nodes target qC)qD}qE(h#Uh$h!h%U qFh*UtargetqGh,}qH(h.]h1]qIXmodule-celery.loaders.baseqJah0]Uismodh/]h3]uh5Kh6hh]ubcsphinx.addnodes index qK)qL}qM(h#Uh$h!h%hFh*UindexqNh,}qO(h1]h0]h.]h/]h3]Uentries]qP(UsingleqQXcelery.loaders.base (module)Xmodule-celery.loaders.baseUtqRauh5Kh6hh]ubhK)qS}qT(h#Uh$h!h%Nh*hNh,}qU(h1]h0]h.]h/]h3]Uentries]qV(hQX)BaseLoader (class in celery.loaders.base)hUtqWauh5Nh6hh]ubcsphinx.addnodes desc qX)qY}qZ(h#Uh$h!h%Nh*Udescq[h,}q\(Unoindexq]Udomainq^Xpyh1]h0]h.]h/]h3]Uobjtypeq_Xclassq`Udesctypeqah`uh5Nh6hh]qb(csphinx.addnodes desc_signature qc)qd}qe(h#X BaseLoaderqfh$hYh%U qgh*Udesc_signatureqhh,}qi(h1]qjhaUmoduleqkh&Xcelery.loaders.baseqlqm}qnbh0]h.]h/]h3]qohaUfullnameqphfUclassqqUUfirstqruh5Nh6hh]qs(csphinx.addnodes desc_annotation qt)qu}qv(h#Xclass h$hdh%hgh*Udesc_annotationqwh,}qx(h.]h/]h0]h1]h3]uh5Nh6hh]qyh?Xclass qzq{}q|(h#Uh$huubaubcsphinx.addnodes desc_addname q})q~}q(h#Xcelery.loaders.base.h$hdh%hgh*U desc_addnameqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?Xcelery.loaders.base.qq}q(h#Uh$h~ubaubcsphinx.addnodes desc_name q)q}q(h#hfh$hdh%hgh*U desc_nameqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qh?X BaseLoaderqq}q(h#Uh$hubaubeubcsphinx.addnodes desc_content q)q}q(h#Uh$hYh%hgh*U desc_contentqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]q(cdocutils.nodes paragraph q)q}q(h#XThe base class for loaders.qh$hh%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/base.py:docstring of celery.loaders.base.BaseLoaderqh*U paragraphqh,}q(h.]h/]h0]h1]h3]uh5Kh6hh]qh?XThe base class for loaders.qq}q(h#hh$hubaubh)q}q(h#X$Loaders handles to following things:qh$hh%hh*hh,}q(h.]h/]h0]h1]h3]uh5Kh6hh]qh?X$Loaders handles to following things:qq}q(h#hh$hubaubcdocutils.nodes block_quote q)q}q(h#Uh$hh%Nh*U block_quoteqh,}q(h.]h/]h0]h1]h3]uh5Nh6hh]qcdocutils.nodes bullet_list q)q}q(h#Uh,}q(UbulletqX*h1]h0]h.]h/]h3]uh$hh]q(cdocutils.nodes list_item q)q}q(h#X-Reading celery client/worker configurations. h,}q(h.]h/]h0]h1]h3]uh$hh]qh)q}q(h#X,Reading celery client/worker configurations.qh$hh%hh*hh,}q(h.]h/]h0]h1]h3]uh5Kh]qh?X,Reading celery client/worker configurations.qq}q(h#hh$hubaubah*U list_itemqubh)q}q(h#X=What happens when a task starts? See :meth:`on_task_init`. h,}q(h.]h/]h0]h1]h3]uh$hh]qcdocutils.nodes definition_list q)q}q(h#Uh,}q(h.]h/]h0]h1]h3]uh$hh]qcdocutils.nodes definition_list_item q)q}q(h#X;What happens when a task starts? See :meth:`on_task_init`. h$hh%hh*Udefinition_list_itemqh,}q(h.]h/]h0]h1]h3]uh5Kh]q(cdocutils.nodes term q)q}q(h#X What happens when a task starts?qh$hh%hh*Utermqh,}q(h.]h/]h0]h1]h3]uh5Kh]qh?X What happens when a task starts?q؅q}q(h#hh$hubaubcdocutils.nodes definition q)q}q(h#Uh,}q(h.]h/]h0]h1]h3]uh$hh]qh)q}q(h#XSee :meth:`on_task_init`.h$hh%hh*hh,}q(h.]h/]h0]h1]h3]uh5Kh]q(h?XSee q䅁q}q(h#XSee h$hubcsphinx.addnodes pending_xref q)q}q(h#X:meth:`on_task_init`qh$hh%Nh*U pending_xrefqh,}q(UreftypeXmethUrefwarnqU reftargetqX on_task_initU refdomainXpyqh1]h0]U refexplicith.]h/]h3]UrefdocqXreference/celery.loaders.baseqUpy:classqhfU py:moduleqXcelery.loaders.basequh5Nh]qcdocutils.nodes literal q)q}q(h#hh,}q(h.]h/]q(UxrefqhXpy-methqeh0]h1]h3]uh$hh]qh?Xon_task_init()qq}r(h#Uh$hubah*Uliteralrubaubh?X.r}r(h#X.h$hubeubah*U definitionrubeubah*Udefinition_listrubah*hubh)r}r(h#XCWhat happens when the worker starts? See :meth:`on_worker_init`. h,}r(h.]h/]h0]h1]h3]uh$hh]r h)r }r (h#Uh,}r (h.]h/]h0]h1]h3]uh$jh]r h)r}r(h#XAWhat happens when the worker starts? See :meth:`on_worker_init`. h$j h%hh*hh,}r(h.]h/]h0]h1]h3]uh5K h]r(h)r}r(h#X$What happens when the worker starts?rh$jh%hh*hh,}r(h.]h/]h0]h1]h3]uh5K h]rh?X$What happens when the worker starts?rr}r(h#jh$jubaubh)r}r(h#Uh,}r(h.]h/]h0]h1]h3]uh$jh]rh)r}r(h#XSee :meth:`on_worker_init`.r h$jh%hh*hh,}r!(h.]h/]h0]h1]h3]uh5K h]r"(h?XSee r#r$}r%(h#XSee h$jubh)r&}r'(h#X:meth:`on_worker_init`r(h$jh%Nh*hh,}r)(UreftypeXmethhhXon_worker_initU refdomainXpyr*h1]h0]U refexplicith.]h/]h3]hhhhfhhuh5Nh]r+h)r,}r-(h#j(h,}r.(h.]h/]r/(hj*Xpy-methr0eh0]h1]h3]uh$j&h]r1h?Xon_worker_init()r2r3}r4(h#Uh$j,ubah*jubaubh?X.r5}r6(h#X.h$jubeubah*jubeubah*jubah*hubh)r7}r8(h#X+What modules are imported to find tasks? h,}r9(h.]h/]h0]h1]h3]uh$hh]r:h)r;}r<(h#X(What modules are imported to find tasks?r=h$j7h%hh*hh,}r>(h.]h/]h0]h1]h3]uh5K h]r?h?X(What modules are imported to find tasks?r@rA}rB(h#j=h$j;ubaubah*hubeh*U bullet_listrCubaubhK)rD}rE(h#Uh$hh%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/base.py:docstring of celery.loaders.base.BaseLoader.confrFh*hNh,}rG(h1]h0]h.]h/]h3]Uentries]rH(hQX/conf (celery.loaders.base.BaseLoader attribute)h UtrIauh5Nh6hh]ubhX)rJ}rK(h#Uh$hh%jFh*h[h,}rL(h]h^Xpyh1]h0]h.]h/]h3]h_X attributerMhajMuh5Nh6hh]rN(hc)rO}rP(h#XBaseLoader.confh$jJh%hgh*hhh,}rQ(h1]rRh ahkh&Xcelery.loaders.baserSrT}rUbh0]h.]h/]h3]rVh ahpXBaseLoader.confhqhfhruh5Nh6hh]rWh)rX}rY(h#Xconfh$jOh%hgh*hh,}rZ(h.]h/]h0]h1]h3]uh5Nh6hh]r[h?Xconfr\r]}r^(h#Uh$jXubaubaubh)r_}r`(h#Uh$jJh%hgh*hh,}ra(h.]h/]h0]h1]h3]uh5Nh6hh]rbh)rc}rd(h#XLoader configuration.reh$j_h%jFh*hh,}rf(h.]h/]h0]h1]h3]uh5Kh6hh]rgh?XLoader configuration.rhri}rj(h#jeh$jcubaubaubeubhK)rk}rl(h#Uh$hh%Nh*hNh,}rm(h1]h0]h.]h/]h3]Uentries]rn(hQX5configured (celery.loaders.base.BaseLoader attribute)hUtroauh5Nh6hh]ubhX)rp}rq(h#Uh$hh%Nh*h[h,}rr(h]h^Xpyh1]h0]h.]h/]h3]h_X attributershajsuh5Nh6hh]rt(hc)ru}rv(h#XBaseLoader.configuredh$jph%U rwh*hhh,}rx(h1]ryhahkh&Xcelery.loaders.baserzr{}r|bh0]h.]h/]h3]r}hahpXBaseLoader.configuredhqhfhruh5Nh6hh]r~(h)r}r(h#X configuredh$juh%jwh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X configuredrr}r(h#Uh$jubaubht)r}r(h#X = Falseh$juh%jwh*hwh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X = Falserr}r(h#Uh$jubaubeubh)r}r(h#Uh$jph%jwh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubhK)r}r(h#Uh$hh%Nh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX@import_default_modules() (celery.loaders.base.BaseLoader method)hUtrauh5Nh6hh]ubhX)r}r(h#Uh$hh%Nh*h[h,}r(h]h^Xpyh1]h0]h.]h/]h3]h_Xmethodrhajuh5Nh6hh]r(hc)r}r(h#X#BaseLoader.import_default_modules()h$jh%hgh*hhh,}r(h1]rhahkh&Xcelery.loaders.baserr}rbh0]h.]h/]h3]rhahpX!BaseLoader.import_default_moduleshqhfhruh5Nh6hh]r(h)r}r(h#Ximport_default_modulesh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Ximport_default_modulesrr}r(h#Uh$jubaubcsphinx.addnodes desc_parameterlist r)r}r(h#Uh$jh%hgh*Udesc_parameterlistrh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubhK)r}r(h#Uh$hh%Nh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX<import_task_module() (celery.loaders.base.BaseLoader method)hUtrauh5Nh6hh]ubhX)r}r(h#Uh$hh%Nh*h[h,}r(h]h^Xpyh1]h0]h.]h/]h3]h_Xmethodrhajuh5Nh6hh]r(hc)r}r(h#X%BaseLoader.import_task_module(module)h$jh%hgh*hhh,}r(h1]rhahkh&Xcelery.loaders.baserr}rbh0]h.]h/]h3]rhahpXBaseLoader.import_task_modulehqhfhruh5Nh6hh]r(h)r}r(h#Ximport_task_moduleh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Ximport_task_modulerr}r(h#Uh$jubaubj)r}r(h#Uh$jh%hgh*jh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rcsphinx.addnodes desc_parameter r)r}r(h#Xmoduleh,}r(h.]h/]h0]h1]h3]uh$jh]rh?Xmodulerr}r(h#Uh$jubah*Udesc_parameterrubaubeubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubhK)r}r(h#Uh$hh%Nh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX5init_worker() (celery.loaders.base.BaseLoader method)h Utrauh5Nh6hh]ubhX)r}r(h#Uh$hh%Nh*h[h,}r(h]h^Xpyh1]h0]h.]h/]h3]h_Xmethodrhajuh5Nh6hh]r(hc)r}r(h#XBaseLoader.init_worker()h$jh%hgh*hhh,}r(h1]rh ahkh&Xcelery.loaders.baserr}rbh0]h.]h/]h3]rh ahpXBaseLoader.init_workerhqhfhruh5Nh6hh]r(h)r}r(h#X init_workerh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X init_workerrr}r(h#Uh$jubaubj)r}r(h#Uh$jh%hgh*jh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubhK)r}r(h#Uh$hh%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/base.py:docstring of celery.loaders.base.BaseLoader.on_process_cleanuprh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX<on_process_cleanup() (celery.loaders.base.BaseLoader method)h Utrauh5Nh6hh]ubhX)r}r(h#Uh$hh%jh*h[h,}r(h]h^Xpyh1]h0]h.]h/]h3]h_Xmethodrhajuh5Nh6hh]r(hc)r}r(h#XBaseLoader.on_process_cleanup()h$jh%hgh*hhh,}r (h1]r h ahkh&Xcelery.loaders.baser r }r bh0]h.]h/]h3]rh ahpXBaseLoader.on_process_cleanuphqhfhruh5Nh6hh]r(h)r}r(h#Xon_process_cleanuph$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xon_process_cleanuprr}r(h#Uh$jubaubj)r}r(h#Uh$jh%hgh*jh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubh)r}r(h#Uh$jh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh)r}r(h#X/This method is called after a task is executed.r h$jh%jh*hh,}r!(h.]h/]h0]h1]h3]uh5Kh6hh]r"h?X/This method is called after a task is executed.r#r$}r%(h#j h$jubaubaubeubhK)r&}r'(h#Uh$hh%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/base.py:docstring of celery.loaders.base.BaseLoader.on_task_initr(h*hNh,}r)(h1]h0]h.]h/]h3]Uentries]r*(hQX6on_task_init() (celery.loaders.base.BaseLoader method)hUtr+auh5Nh6hh]ubhX)r,}r-(h#Uh$hh%j(h*h[h,}r.(h]h^Xpyh1]h0]h.]h/]h3]h_Xmethodr/haj/uh5Nh6hh]r0(hc)r1}r2(h#X&BaseLoader.on_task_init(task_id, task)h$j,h%hgh*hhh,}r3(h1]r4hahkh&Xcelery.loaders.baser5r6}r7bh0]h.]h/]h3]r8hahpXBaseLoader.on_task_inithqhfhruh5Nh6hh]r9(h)r:}r;(h#X on_task_inith$j1h%hgh*hh,}r<(h.]h/]h0]h1]h3]uh5Nh6hh]r=h?X on_task_initr>r?}r@(h#Uh$j:ubaubj)rA}rB(h#Uh$j1h%hgh*jh,}rC(h.]h/]h0]h1]h3]uh5Nh6hh]rD(j)rE}rF(h#Xtask_idh,}rG(h.]h/]h0]h1]h3]uh$jAh]rHh?Xtask_idrIrJ}rK(h#Uh$jEubah*jubj)rL}rM(h#Xtaskh,}rN(h.]h/]h0]h1]h3]uh$jAh]rOh?XtaskrPrQ}rR(h#Uh$jLubah*jubeubeubh)rS}rT(h#Uh$j,h%hgh*hh,}rU(h.]h/]h0]h1]h3]uh5Nh6hh]rVh)rW}rX(h#X0This method is called before a task is executed.rYh$jSh%j(h*hh,}rZ(h.]h/]h0]h1]h3]uh5Kh6hh]r[h?X0This method is called before a task is executed.r\r]}r^(h#jYh$jWubaubaubeubhK)r_}r`(h#Uh$hh%X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/base.py:docstring of celery.loaders.base.BaseLoader.on_worker_initrah*hNh,}rb(h1]h0]h.]h/]h3]Uentries]rc(hQX8on_worker_init() (celery.loaders.base.BaseLoader method)h Utrdauh5Nh6hh]ubhX)re}rf(h#Uh$hh%jah*h[h,}rg(h]h^Xpyh1]h0]h.]h/]h3]h_Xmethodrhhajhuh5Nh6hh]ri(hc)rj}rk(h#XBaseLoader.on_worker_init()h$jeh%hgh*hhh,}rl(h1]rmh ahkh&Xcelery.loaders.basernro}rpbh0]h.]h/]h3]rqh ahpXBaseLoader.on_worker_inithqhfhruh5Nh6hh]rr(h)rs}rt(h#Xon_worker_inith$jjh%hgh*hh,}ru(h.]h/]h0]h1]h3]uh5Nh6hh]rvh?Xon_worker_initrwrx}ry(h#Uh$jsubaubj)rz}r{(h#Uh$jjh%hgh*jh,}r|(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubh)r}}r~(h#Uh$jeh%hgh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh)r}r(h#X;This method is called when the worker (``celeryd``) starts.h$j}h%jah*hh,}r(h.]h/]h0]h1]h3]uh5Kh6hh]r(h?X'This method is called when the worker (rr}r(h#X'This method is called when the worker (h$jubh)r}r(h#X ``celeryd``h,}r(h.]h/]h0]h1]h3]uh$jh]rh?Xcelerydrr}r(h#Uh$jubah*jubh?X ) starts.rr}r(h#X ) starts.h$jubeubaubeubhK)r}r(h#Uh$hh%Nh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX<override_backends (celery.loaders.base.BaseLoader attribute)h Utrauh5Nh6hh]ubhX)r}r(h#Uh$hh%Nh*h[h,}r(h]h^Xpyh1]h0]h.]h/]h3]h_X attributerhajuh5Nh6hh]r(hc)r}r(h#XBaseLoader.override_backendsh$jh%jwh*hhh,}r(h1]rh ahkh&Xcelery.loaders.baserr}rbh0]h.]h/]h3]rh ahpXBaseLoader.override_backendshqhfhruh5Nh6hh]r(h)r}r(h#Xoverride_backendsh$jh%jwh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xoverride_backendsrr}r(h#Uh$jubaubht)r}r(h#X = {}h$jh%jwh*hwh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X = {}rr}r(h#Uh$jubaubeubh)r}r(h#Uh$jh%jwh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubhK)r}r(h#Uh$hh%Nh*hNh,}r(h1]h0]h.]h/]h3]Uentries]r(hQX=worker_initialized (celery.loaders.base.BaseLoader attribute)hUtrauh5Nh6hh]ubhX)r}r(h#Uh$hh%Nh*h[h,}r(h]h^Xpyh1]h0]h.]h/]h3]h_X attributerhajuh5Nh6hh]r(hc)r}r(h#XBaseLoader.worker_initializedrh$jh%jwh*hhh,}r(h1]rhahkh&Xcelery.loaders.baserr}rbh0]h.]h/]h3]rhahpXBaseLoader.worker_initializedhqhfhruh5Nh6hh]r(h)r}r(h#Xworker_initializedh$jh%jwh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?Xworker_initializedrr}r(h#Uh$jubaubht)r}r(h#X = Falseh$jh%jwh*hwh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]rh?X = Falserr}r(h#Uh$jubaubeubh)r}r(h#Uh$jh%jwh*hh,}r(h.]h/]h0]h1]h3]uh5Nh6hh]ubeubeubeubeubah#UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh6hU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(h#Uh,}r(h.]UlevelKh1]h0]UsourcehFh/]h3]UlineKUtypeUINFOruh]rh)r}r(h#Uh,}r(h.]h/]h0]h1]h3]uh$jh]rh?X@Hyperlink target "module-celery.loaders.base" is not referenced.rr}r(h#Uh$jubah*hubah*Usystem_messagerubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNhUlongr?Uinput_encoding_error_handlerr@jUauto_id_prefixrAUidrBUdoctitle_xformrCUstrip_elements_with_classesrDNU _config_filesrE]Ufile_insertion_enabledrFU raw_enabledrGKU dump_settingsrHNubUsymbol_footnote_startrIKUidsrJ}rK(hjuhh!hjh jOh jh jjh jh jhjhJhDhhdhj1hjhcdocutils.nodes topic rL)rM}rN(h#Uh$h!h%h(h*UtopicrOh,}rP(h.]h/]rQ(UcontentsrRUlocalrSeh0]h1]rThah3]rUhauh5Kh6hh]rVcdocutils.nodes pending rW)rX}rY(h#X.. contents:: :local:h$jMU transformrZcdocutils.transforms.parts Contents r[Udetailsr\}r]UlocalNsh*Upendingr^h,}r_(h.]h/]h0]h1]h3]uh]ubaubuUsubstitution_namesr`}rah*h6h,}rb(h.]h1]h0]Usourceh(h/]h3]uU footnotesrc]rdUrefidsre}rfub.PKHDDCcelery-2.0-archived/.doctrees/reference/celery.bin.celeryev.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X3celeryev: curses event viewer - celery.bin.celeryevqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX[/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.celeryev.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U0celeryev-curses-event-viewer-celery-bin-celeryevq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX3celeryev: Curses Event Viewer - celery.bin.celeryevq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X3celeryev: Curses Event Viewer - celery.bin.celeryevq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.task import control File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/task/__init__.py", line 7, in from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU[/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.celeryev.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD+;celery-2.0-archived/.doctrees/reference/celery.task.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X,task information and utilities - celery.taskqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXS/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U*task-information-and-utilities-celery-taskq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX,Task Information and Utilities - celery.taskq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X,Task Information and Utilities - celery.taskq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.execute import apply_async File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/execute/__init__.py", line 1, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUS/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.task.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDzMrLL;celery-2.0-archived/.doctrees/reference/celery.conf.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery.conf.BROADCAST_EXCHANGEqXcelery.conf.CELERYD_LOG_FORMATqXcelery.conf.ACKS_LATEqX celery.conf.CELERYBEAT_LOG_LEVELq Xcelerydq NXcelery.conf.QUEUESq X(celery.conf.CELERYBEAT_MAX_LOOP_INTERVALq Xcelery.conf.DEFAULT_QUEUEq Xcelery.conf.CELERYD_LOG_LEVELqX celerybeatqNXcelery.conf.LOG_LEVELSqXcelery.conf.IGNORE_RESULTqXcelery.conf.MAIL_PORTqXsending e-mailsqNXcelery.conf.DEFAULT_EXCHANGEqUcontentsqNXcelery.conf.TASK_SERIALIZERqXcelery.conf.MAX_CACHED_RESULTSqXcelery.conf.EVENT_SERIALIZERqX(celery.conf.CELERYBEAT_SCHEDULE_FILENAMEqXcelery.conf.RESULT_EXCHANGEqXcelery.conf.EVENT_QUEUEqXcelery.conf.CELERYMON_LOG_FILEqXcelery.conf.TASK_RESULT_EXPIRESqX celery.conf.CELERY_CACHE_BACKENDqX#celery.conf.BROADCAST_EXCHANGE_TYPEqXcelery.conf.CELERYMON_LOG_LEVELq X'celery.conf.CELERYD_PREFETCH_MULTIPLIERq!Xcelery.conf.EVENT_EXCHANGEq"X!celery.conf.DEFAULT_DELIVERY_MODEq#Xcelery.conf.MAIL_HOST_USERq$Xcelery.conf.CELERYD_MEDIATORq%Xcelery.conf.CELERYBEAT_LOG_FILEq&Xcelery.conf.TRACK_STARTEDq'X'celery.conf.EAGER_PROPAGATES_EXCEPTIONSq(Xcelery.conf.SEND_EVENTSq)Xcelery.conf.DEFAULT_ROUTING_KEYq*Xcelery.conf.SERVER_EMAILq+Xcelery.conf.DEFAULT_RATE_LIMITq,Xbrokerq-NXconfiguration - celery.confq.NXcelery.conf.MAIL_HOSTq/Xcelery.conf.CELERYD_POOLq0X%celery.conf.BROKER_CONNECTION_TIMEOUTq1X!celery.conf.CELERYD_ETA_SCHEDULERq2Xcelery.conf.ALWAYS_EAGERq3X#celery.conf.BROKER_CONNECTION_RETRYq4X(celery.conf.STORE_ERRORS_EVEN_IF_IGNOREDq5Xcelery.conf.MAIL_HOST_PASSWORDq6Xcelery.conf.CELERYD_CONCURRENCYq7X#celery.conf.CELERYD_TASK_LOG_FORMATq8X executionq9NXcelery.conf.BROADCAST_QUEUEq:Xcelery.conf.DISABLE_RATE_LIMITSq;X)celery.conf.BROKER_CONNECTION_MAX_RETRIESqX)celery.conf.CELERY_SEND_TASK_ERROR_EMAILSq?Xcelery.conf.EVENT_ROUTING_KEYq@Xcelery.conf.RESULT_BACKENDqAX!celery.conf.DEFAULT_EXCHANGE_TYPEqBX celerymonqCNXcelery.conf.CELERYD_LOG_FILEqDXqueuesqENXcelery.conf.CELERYD_LISTENERqFuUsubstitution_defsqG}qHUparse_messagesqI]qJUcurrent_sourceqKNU decorationqLNUautofootnote_startqMKUnameidsqN}qO(hhhhhhh h h UcelerydqPh h h h h h hhhU celerybeatqQhhhhhhhUsending-e-mailsqRhhhUcontentsqShhhhhhhhhhhhhhhhhhhhh h h!h!h"h"h#h#h$h$h%h%h&h&h'h'h(h(h)h)h*h*h+h+h,h,h-UbrokerqTh.Uconfiguration-celery-confqUh/h/h0h0h1h1h2h2h3h3h4h4h5h5h6h6h7h7h8h8h9U executionqVh:h:h;h;hh>h?h?h@h@hAhAhBhBhCU celerymonqWhDhDhEUqueuesqXhFhFuUchildrenqY]qZcdocutils.nodes section q[)q\}q](U rawsourceq^UUparentq_hUsourceq`cdocutils.nodes reprunicode qaXS/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.conf.rstqbqc}qdbUtagnameqeUsectionqfU attributesqg}qh(Udupnamesqi]Uclassesqj]Ubackrefsqk]Uidsql]qmhUaUnamesqn]qoh.auUlineqpKUdocumentqqhhY]qr(cdocutils.nodes title qs)qt}qu(h^XConfiguration - celery.confqvh_h\h`hcheUtitleqwhg}qx(hi]hj]hk]hl]hn]uhpKhqhhY]qycdocutils.nodes Text qzXConfiguration - celery.confq{q|}q}(h^hvh_htubaubcdocutils.nodes topic q~)q}q(h^Uh_h\h`hcheUtopicqhg}q(hi]hj]q(UcontentsqUlocalqehk]hl]qhSahn]qhauhpKhqhhY]qcdocutils.nodes bullet_list q)q}q(h^Uh_hh`NheU bullet_listqhg}q(hi]hj]hk]hl]hn]uhpNhqhhY]q(cdocutils.nodes list_item q)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qcdocutils.nodes paragraph q)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qcdocutils.nodes reference q)q}q(h^Uhg}q(hl]qUid1qahk]hi]hj]hn]UrefidhXuh_hhY]qhzXQueuesqq}q(h^XQueuesqh_hubaheU referencequbaheU paragraphqubaheU list_itemqubh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hl]qUid2qahk]hi]hj]hn]UrefidhRuh_hhY]qhzXSending E-Mailsqq}q(h^XSending E-Mailsqh_hubahehubahehubahehubh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hl]qUid3qahk]hi]hj]hn]UrefidhVuh_hhY]qhzX ExecutionqDžq}q(h^X Executionqh_hubahehubahehubahehubh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hl]qUid4qahk]hi]hj]hn]UrefidhTuh_hhY]qhzXBrokerqمq}q(h^XBrokerqh_hubahehubahehubahehubh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hl]qUid5qahk]hi]hj]hn]UrefidhQuh_hhY]qhzX Celerybeatq녁q}q(h^X Celerybeatqh_hubahehubahehubahehubh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hi]hj]hk]hl]hn]uh_hhY]qh)q}q(h^Uhg}q(hl]qUid6qahk]hi]hj]hn]UrefidhWuh_hhY]qhzX Celerymonqq}q(h^X Celerymonrh_hubahehubahehubahehubh)r}r(h^Uhg}r(hi]hj]hk]hl]hn]uh_hhY]rh)r}r(h^Uhg}r(hi]hj]hk]hl]hn]uh_jhY]rh)r }r (h^Uhg}r (hl]r Uid7r ahk]hi]hj]hn]UrefidhPuh_jhY]rhzXCelerydrr}r(h^XCelerydrh_j ubahehubahehubahehubeubaubh[)r}r(h^Uh_h\h`hchehfhg}r(hi]hj]hk]hl]rhXahn]rhEauhpK hqhhY]r(hs)r}r(h^hh_jh`hchehwhg}r(hl]hk]hi]hj]hn]UrefidrhuhpK hqhhY]rhzXQueuesrr}r (h^hh_jubaubcsphinx.addnodes index r!)r"}r#(h^Uh_jh`hcheUindexr$hg}r%(hl]hk]hi]hj]hn]Uentries]r&(Usingler'XQUEUES (in module celery.conf)h Utr(auhpNhqhhY]ubcsphinx.addnodes desc r))r*}r+(h^Uh_jh`hcheUdescr,hg}r-(Unoindexr.Udomainr/Xpyhl]hk]hi]hj]hn]Uobjtyper0Xdatar1Udesctyper2j1uhpNhqhhY]r3(csphinx.addnodes desc_signature r4)r5}r6(h^XQUEUESr7h_j*h`hcheUdesc_signaturer8hg}r9(hl]r:h aUmoduler;X celery.confr<hk]hi]hj]hn]r=h aUfullnamer>j7Uclassr?UUfirstr@uhpKhqhhY]rA(csphinx.addnodes desc_addname rB)rC}rD(h^X celery.conf.h_j5h`hcheU desc_addnamerEhg}rF(hi]hj]hk]hl]hn]uhpKhqhhY]rGhzX celery.conf.rHrI}rJ(h^Uh_jCubaubcsphinx.addnodes desc_name rK)rL}rM(h^j7h_j5h`hcheU desc_namerNhg}rO(hi]hj]hk]hl]hn]uhpKhqhhY]rPhzXQUEUESrQrR}rS(h^Uh_jLubaubeubcsphinx.addnodes desc_content rT)rU}rV(h^Uh_j*h`hcheU desc_contentrWhg}rX(hi]hj]hk]hl]hn]uhpKhqhhY]rYh)rZ}r[(h^XQueue name/options mapping.r\h_jUh`hchehhg}r](hi]hj]hk]hl]hn]uhpKhqhhY]r^hzXQueue name/options mapping.r_r`}ra(h^j\h_jZubaubaubeubj!)rb}rc(h^Uh_jh`hchej$hg}rd(hl]hk]hi]hj]hn]Uentries]re(j'X%DEFAULT_QUEUE (in module celery.conf)h UtrfauhpNhqhhY]ubj))rg}rh(h^Uh_jh`hchej,hg}ri(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarjj2jjuhpNhqhhY]rk(j4)rl}rm(h^X DEFAULT_QUEUErnh_jgh`hchej8hg}ro(hl]rph aj;j<hk]hi]hj]hn]rqh aj>jnj?Uj@uhpKhqhhY]rr(jB)rs}rt(h^X celery.conf.h_jlh`hchejEhg}ru(hi]hj]hk]hl]hn]uhpKhqhhY]rvhzX celery.conf.rwrx}ry(h^Uh_jsubaubjK)rz}r{(h^jnh_jlh`hchejNhg}r|(hi]hj]hk]hl]hn]uhpKhqhhY]r}hzX DEFAULT_QUEUEr~r}r(h^Uh_jzubaubeubjT)r}r(h^Uh_jgh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^XName of the default queue.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXName of the default queue.rr}r(h^jh_jubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X(DEFAULT_EXCHANGE (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XDEFAULT_EXCHANGErh_jh`hchej8hg}r(hl]rhaj;j<hk]hi]hj]hn]rhaj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXDEFAULT_EXCHANGErr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^XDefault exchange.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXDefault exchange.rr}r(h^jh_jubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X-DEFAULT_EXCHANGE_TYPE (in module celery.conf)hBUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XDEFAULT_EXCHANGE_TYPErh_jh`hchej8hg}r(hl]rhBaj;j<hk]hi]hj]hn]rhBaj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXDEFAULT_EXCHANGE_TYPErr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^XDefault exchange type.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXDefault exchange type.rr}r(h^jh_jubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X-DEFAULT_DELIVERY_MODE (in module celery.conf)h#UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XDEFAULT_DELIVERY_MODErh_jh`hchej8hg}r(hl]rh#aj;j<hk]hi]hj]hn]rh#aj>jj?Uj@uhpK hqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpK hqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpK hqhhY]rhzXDEFAULT_DELIVERY_MODErr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpK hqhhY]rh)r}r(h^X^Default delivery mode (``"persistent"`` or ``"non-persistent"``). Default is ``"persistent"``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]r (hzXDefault delivery mode (r r }r (h^XDefault delivery mode (h_jubcdocutils.nodes literal r )r}r(h^X``"persistent"``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX "persistent"rr}r(h^Uh_jubaheUliteralrubhzX or rr}r(h^X or h_jubj )r}r(h^X``"non-persistent"``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX"non-persistent"rr}r(h^Uh_jubahejubhzX). Default is r r!}r"(h^X). Default is h_jubj )r#}r$(h^X``"persistent"``hg}r%(hi]hj]hk]hl]hn]uh_jhY]r&hzX "persistent"r'r(}r)(h^Uh_j#ubahejubhzX.r*}r+(h^X.h_jubeubaubeubj!)r,}r-(h^Uh_jh`hchej$hg}r.(hl]hk]hi]hj]hn]Uentries]r/(j'X+DEFAULT_ROUTING_KEY (in module celery.conf)h*Utr0auhpNhqhhY]ubj))r1}r2(h^Uh_jh`hchej,hg}r3(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar4j2j4uhpNhqhhY]r5(j4)r6}r7(h^XDEFAULT_ROUTING_KEYr8h_j1h`hchej8hg}r9(hl]r:h*aj;j<hk]hi]hj]hn]r;h*aj>j8j?Uj@uhpK$hqhhY]r<(jB)r=}r>(h^X celery.conf.h_j6h`hchejEhg}r?(hi]hj]hk]hl]hn]uhpK$hqhhY]r@hzX celery.conf.rArB}rC(h^Uh_j=ubaubjK)rD}rE(h^j8h_j6h`hchejNhg}rF(hi]hj]hk]hl]hn]uhpK$hqhhY]rGhzXDEFAULT_ROUTING_KEYrHrI}rJ(h^Uh_jDubaubeubjT)rK}rL(h^Uh_j1h`hchejWhg}rM(hi]hj]hk]hl]hn]uhpK$hqhhY]rNh)rO}rP(h^X,Default routing key used when sending tasks.rQh_jKh`hchehhg}rR(hi]hj]hk]hl]hn]uhpK#hqhhY]rShzX,Default routing key used when sending tasks.rTrU}rV(h^jQh_jOubaubaubeubj!)rW}rX(h^Uh_jh`hchej$hg}rY(hl]hk]hi]hj]hn]Uentries]rZ(j'X1BROKER_CONNECTION_TIMEOUT (in module celery.conf)h1Utr[auhpNhqhhY]ubj))r\}r](h^Uh_jh`hchej,hg}r^(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar_j2j_uhpNhqhhY]r`(j4)ra}rb(h^XBROKER_CONNECTION_TIMEOUTrch_j\h`hchej8hg}rd(hl]reh1aj;j<hk]hi]hj]hn]rfh1aj>jcj?Uj@uhpK)hqhhY]rg(jB)rh}ri(h^X celery.conf.h_jah`hchejEhg}rj(hi]hj]hk]hl]hn]uhpK)hqhhY]rkhzX celery.conf.rlrm}rn(h^Uh_jhubaubjK)ro}rp(h^jch_jah`hchejNhg}rq(hi]hj]hk]hl]hn]uhpK)hqhhY]rrhzXBROKER_CONNECTION_TIMEOUTrsrt}ru(h^Uh_joubaubeubjT)rv}rw(h^Uh_j\h`hchejWhg}rx(hi]hj]hk]hl]hn]uhpK)hqhhY]ryh)rz}r{(h^XVThe timeout in seconds before we give up establishing a connection to the AMQP server.r|h_jvh`hchehhg}r}(hi]hj]hk]hl]hn]uhpK'hqhhY]r~hzXVThe timeout in seconds before we give up establishing a connection to the AMQP server.rr}r(h^j|h_jzubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X'BROADCAST_QUEUE (in module celery.conf)h:UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XBROADCAST_QUEUErh_jh`hchej8hg}r(hl]rh:aj;j<hk]hi]hj]hn]rh:aj>jj?Uj@uhpK1hqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpK1hqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpK1hqhhY]rhzXBROADCAST_QUEUErr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpK1hqhhY]r(h)r}r(h^XName prefix for the queue used when listening for broadcast messages. The workers hostname will be appended to the prefix to create the final queue name.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpK,hqhhY]rhzXName prefix for the queue used when listening for broadcast messages. The workers hostname will be appended to the prefix to create the final queue name.rr}r(h^jh_jubaubh)r}r(h^XDefault is ``"celeryctl"``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpK0hqhhY]r(hzX Default is rr}r(h^X Default is h_jubj )r}r(h^X``"celeryctl"``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX "celeryctl"rr}r(h^Uh_jubahejubhzX.r}r(h^X.h_jubeubeubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X*BROADCAST_EXCHANGE (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XBROADCAST_EXCHANGErh_jh`hchej8hg}r(hl]rhaj;j<hk]hi]hj]hn]rhaj>jj?Uj@uhpK7hqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpK7hqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpK7hqhhY]rhzXBROADCAST_EXCHANGErr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpK7hqhhY]r(h)r}r(h^X1Name of the exchange used for broadcast messages.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpK4hqhhY]rhzX1Name of the exchange used for broadcast messages.rr}r(h^jh_jubaubh)r}r(h^XDefault is ``"celeryctl"``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpK6hqhhY]r(hzX Default is rr}r(h^X Default is h_jubj )r}r(h^X``"celeryctl"``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX "celeryctl"rr}r(h^Uh_jubahejubhzX.r}r(h^X.h_jubeubeubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X/BROADCAST_EXCHANGE_TYPE (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XBROADCAST_EXCHANGE_TYPErh_jh`hchej8hg}r(hl]rhaj;j<hk]hi]hj]hn]rhaj>jj?Uj@uhpK;hqhhY]r(jB)r }r (h^X celery.conf.h_jh`hchejEhg}r (hi]hj]hk]hl]hn]uhpK;hqhhY]r hzX celery.conf.r r}r(h^Uh_j ubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpK;hqhhY]rhzXBROADCAST_EXCHANGE_TYPErr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpK;hqhhY]rh)r}r(h^XCExchange type used for broadcast messages. Default is ``"fanout"``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpK:hqhhY]r(hzX6Exchange type used for broadcast messages. Default is rr }r!(h^X6Exchange type used for broadcast messages. Default is h_jubj )r"}r#(h^X ``"fanout"``hg}r$(hi]hj]hk]hl]hn]uh_jhY]r%hzX"fanout"r&r'}r((h^Uh_j"ubahejubhzX.r)}r*(h^X.h_jubeubaubeubj!)r+}r,(h^Uh_jh`hchej$hg}r-(hl]hk]hi]hj]hn]Uentries]r.(j'X#EVENT_QUEUE (in module celery.conf)hUtr/auhpNhqhhY]ubj))r0}r1(h^Uh_jh`hchej,hg}r2(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar3j2j3uhpNhqhhY]r4(j4)r5}r6(h^X EVENT_QUEUEr7h_j0h`hchej8hg}r8(hl]r9haj;j<hk]hi]hj]hn]r:haj>j7j?Uj@uhpK@hqhhY]r;(jB)r<}r=(h^X celery.conf.h_j5h`hchejEhg}r>(hi]hj]hk]hl]hn]uhpK@hqhhY]r?hzX celery.conf.r@rA}rB(h^Uh_j<ubaubjK)rC}rD(h^j7h_j5h`hchejNhg}rE(hi]hj]hk]hl]hn]uhpK@hqhhY]rFhzX EVENT_QUEUErGrH}rI(h^Uh_jCubaubeubjT)rJ}rK(h^Uh_j0h`hchejWhg}rL(hi]hj]hk]hl]hn]uhpK@hqhhY]rMh)rN}rO(h^XNName of queue used to listen for event messages. Default is ``"celeryevent"``.h_jJh`hchehhg}rP(hi]hj]hk]hl]hn]uhpK>hqhhY]rQ(hzX<Name of queue used to listen for event messages. Default is rRrS}rT(h^X<Name of queue used to listen for event messages. Default is h_jNubj )rU}rV(h^X``"celeryevent"``hg}rW(hi]hj]hk]hl]hn]uh_jNhY]rXhzX "celeryevent"rYrZ}r[(h^Uh_jUubahejubhzX.r\}r](h^X.h_jNubeubaubeubj!)r^}r_(h^Uh_jh`hchej$hg}r`(hl]hk]hi]hj]hn]Uentries]ra(j'X&EVENT_EXCHANGE (in module celery.conf)h"UtrbauhpNhqhhY]ubj))rc}rd(h^Uh_jh`hchej,hg}re(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarfj2jfuhpNhqhhY]rg(j4)rh}ri(h^XEVENT_EXCHANGErjh_jch`hchej8hg}rk(hl]rlh"aj;j<hk]hi]hj]hn]rmh"aj>jjj?Uj@uhpKDhqhhY]rn(jB)ro}rp(h^X celery.conf.h_jhh`hchejEhg}rq(hi]hj]hk]hl]hn]uhpKDhqhhY]rrhzX celery.conf.rsrt}ru(h^Uh_joubaubjK)rv}rw(h^jjh_jhh`hchejNhg}rx(hi]hj]hk]hl]hn]uhpKDhqhhY]ryhzXEVENT_EXCHANGErzr{}r|(h^Uh_jvubaubeubjT)r}}r~(h^Uh_jch`hchejWhg}r(hi]hj]hk]hl]hn]uhpKDhqhhY]rh)r}r(h^XCExchange used to send event messages. Default is ``"celeryevent"``.h_j}h`hchehhg}r(hi]hj]hk]hl]hn]uhpKChqhhY]r(hzX1Exchange used to send event messages. Default is rr}r(h^X1Exchange used to send event messages. Default is h_jubj )r}r(h^X``"celeryevent"``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX "celeryevent"rr}r(h^Uh_jubahejubhzX.r}r(h^X.h_jubeubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X+EVENT_EXCHANGE_TYPE (in module celery.conf)h>UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XEVENT_EXCHANGE_TYPErh_jh`hchej8hg}r(hl]rh>aj;j<hk]hi]hj]hn]rh>aj>jj?Uj@uhpKHhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKHhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKHhqhhY]rhzXEVENT_EXCHANGE_TYPErr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKHhqhhY]rh)r}r(h^XBExchange type used for the event exchange. Default is ``"topic"``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKGhqhhY]r(hzX6Exchange type used for the event exchange. Default is rr}r(h^X6Exchange type used for the event exchange. Default is h_jubj )r}r(h^X ``"topic"``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX"topic"rr}r(h^Uh_jubahejubhzX.r}r(h^X.h_jubeubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X)EVENT_ROUTING_KEY (in module celery.conf)h@UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XEVENT_ROUTING_KEYrh_jh`hchej8hg}r(hl]rh@aj;j<hk]hi]hj]hn]rh@aj>jj?Uj@uhpKLhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKLhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKLhqhhY]rhzXEVENT_ROUTING_KEYrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKLhqhhY]rh)r}r(h^X:Routing key used for events. Default is ``"celeryevent"``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKKhqhhY]r(hzX(Routing key used for events. Default is rr}r(h^X(Routing key used for events. Default is h_jubj )r}r(h^X``"celeryevent"``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX "celeryevent"rr}r(h^Uh_jubahejubhzX.r}r(h^X.h_jubeubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X(EVENT_SERIALIZER (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XEVENT_SERIALIZERrh_jh`hchej8hg}r(hl]rhaj;j<hk]hi]hj]hn]rhaj>jj?Uj@uhpKQhqhhY]r(jB)r}r (h^X celery.conf.h_jh`hchejEhg}r (hi]hj]hk]hl]hn]uhpKQhqhhY]r hzX celery.conf.r r }r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKQhqhhY]rhzXEVENT_SERIALIZERrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKQhqhhY]rh)r}r(h^XMType of serialization method used to serialize events. Default is ``"json"``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKOhqhhY]r(hzXBType of serialization method used to serialize events. Default is rr}r (h^XBType of serialization method used to serialize events. Default is h_jubj )r!}r"(h^X ``"json"``hg}r#(hi]hj]hk]hl]hn]uh_jhY]r$hzX"json"r%r&}r'(h^Uh_j!ubahejubhzX.r(}r)(h^X.h_jubeubaubeubj!)r*}r+(h^Uh_jh`hchej$hg}r,(hl]hk]hi]hj]hn]Uentries]r-(j'X'RESULT_EXCHANGE (in module celery.conf)hUtr.auhpNhqhhY]ubj))r/}r0(h^Uh_jh`hchej,hg}r1(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar2j2j2uhpNhqhhY]r3(j4)r4}r5(h^XRESULT_EXCHANGEr6h_j/h`hchej8hg}r7(hl]r8haj;j<hk]hi]hj]hn]r9haj>j6j?Uj@uhpKVhqhhY]r:(jB)r;}r<(h^X celery.conf.h_j4h`hchejEhg}r=(hi]hj]hk]hl]hn]uhpKVhqhhY]r>hzX celery.conf.r?r@}rA(h^Uh_j;ubaubjK)rB}rC(h^j6h_j4h`hchejNhg}rD(hi]hj]hk]hl]hn]uhpKVhqhhY]rEhzXRESULT_EXCHANGErFrG}rH(h^Uh_jBubaubeubjT)rI}rJ(h^Uh_j/h`hchejWhg}rK(hi]hj]hk]hl]hn]uhpKVhqhhY]rLh)rM}rN(h^X`Exchange used by the AMQP result backend to publish task results. Default is ``"celeryresult"``.h_jIh`hchehhg}rO(hi]hj]hk]hl]hn]uhpKThqhhY]rP(hzXMExchange used by the AMQP result backend to publish task results. Default is rQrR}rS(h^XMExchange used by the AMQP result backend to publish task results. Default is h_jMubj )rT}rU(h^X``"celeryresult"``hg}rV(hi]hj]hk]hl]hn]uh_jMhY]rWhzX"celeryresult"rXrY}rZ(h^Uh_jTubahejubhzX.r[}r\(h^X.h_jMubeubaubeubeubh[)r]}r^(h^Uh_h\h`hchehfhg}r_(hi]hj]hk]hl]r`hRahn]rahauhpKXhqhhY]rb(hs)rc}rd(h^hh_j]h`hchehwhg}re(hl]hk]hi]hj]hn]jhuhpKXhqhhY]rfhzXSending E-Mailsrgrh}ri(h^hh_jcubaubj!)rj}rk(h^Uh_j]h`hchej$hg}rl(hl]hk]hi]hj]hn]Uentries]rm(j'X5CELERY_SEND_TASK_ERROR_EMAILS (in module celery.conf)h?UtrnauhpNhqhhY]ubj))ro}rp(h^Uh_j]h`hchej,hg}rq(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarrj2jruhpNhqhhY]rs(j4)rt}ru(h^XCELERY_SEND_TASK_ERROR_EMAILSrvh_joh`hchej8hg}rw(hl]rxh?aj;j<hk]hi]hj]hn]ryh?aj>jvj?Uj@uhpK]hqhhY]rz(jB)r{}r|(h^X celery.conf.h_jth`hchejEhg}r}(hi]hj]hk]hl]hn]uhpK]hqhhY]r~hzX celery.conf.rr}r(h^Uh_j{ubaubjK)r}r(h^jvh_jth`hchejNhg}r(hi]hj]hk]hl]hn]uhpK]hqhhY]rhzXCELERY_SEND_TASK_ERROR_EMAILSrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_joh`hchejWhg}r(hi]hj]hk]hl]hn]uhpK]hqhhY]rh)r}r(h^XMIf set to ``True``, errors in tasks will be sent to :data:`ADMINS` by e-mail.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpK\hqhhY]r(hzX If set to rr}r(h^X If set to h_jubj )r}r(h^X``True``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzXTruerr}r(h^Uh_jubahejubhzX", errors in tasks will be sent to rr}r(h^X", errors in tasks will be sent to h_jubcsphinx.addnodes pending_xref r)r}r(h^X:data:`ADMINS`rh_jh`hcheU pending_xrefrhg}r(UreftypeXdataUrefwarnrU reftargetrXADMINSU refdomainXpyrhl]hk]U refexplicithi]hj]hn]UrefdocrXreference/celery.confrUpy:classrNU py:modulerj<uhpK\hY]rj )r}r(h^jhg}r(hi]hj]r(UxrefrjXpy-datarehk]hl]hn]uh_jhY]rhzXADMINSrr}r(h^Uh_jubahejubaubhzX by e-mail.rr}r(h^X by e-mail.h_jubeubaubeubj!)r}r(h^Uh_j]h`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'XADMINS (in module celery.conf)h=UtrauhpNhqhhY]ubj))r}r(h^Uh_j]h`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XADMINSrh_jh`hchej8hg}r(hl]rh=aj;j<hk]hi]hj]hn]rh=aj>jj?Uj@uhpKbhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKbhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKbhqhhY]rhzXADMINSrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKbhqhhY]rh)r}r(h^XZList of ``(name, email_address)`` tuples for the admins that should receive error e-mails.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpK`hqhhY]r(hzXList of rr}r(h^XList of h_jubj )r}r(h^X``(name, email_address)``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX(name, email_address)rr}r(h^Uh_jubahejubhzX9 tuples for the admins that should receive error e-mails.rr}r(h^X9 tuples for the admins that should receive error e-mails.h_jubeubaubeubj!)r}r(h^Uh_j]h`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X$SERVER_EMAIL (in module celery.conf)h+UtrauhpNhqhhY]ubj))r}r(h^Uh_j]h`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^X SERVER_EMAILrh_jh`hchej8hg}r(hl]rh+aj;j<hk]hi]hj]hn]rh+aj>jj?Uj@uhpKghqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKghqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKghqhhY]rhzX SERVER_EMAILr r }r (h^Uh_jubaubeubjT)r }r (h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKghqhhY]rh)r}r(h^XUThe e-mail address this worker sends e-mails from. Default is ``"celery@localhost"``.h_j h`hchehhg}r(hi]hj]hk]hl]hn]uhpKehqhhY]r(hzX>The e-mail address this worker sends e-mails from. Default is rr}r(h^X>The e-mail address this worker sends e-mails from. Default is h_jubj )r}r(h^X``"celery@localhost"``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX"celery@localhost"rr}r(h^Uh_jubahejubhzX.r}r(h^X.h_jubeubaubeubj!)r }r!(h^Uh_j]h`hchej$hg}r"(hl]hk]hi]hj]hn]Uentries]r#(j'X!MAIL_HOST (in module celery.conf)h/Utr$auhpNhqhhY]ubj))r%}r&(h^Uh_j]h`hchej,hg}r'(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar(j2j(uhpNhqhhY]r)(j4)r*}r+(h^X MAIL_HOSTr,h_j%h`hchej8hg}r-(hl]r.h/aj;j<hk]hi]hj]hn]r/h/aj>j,j?Uj@uhpKkhqhhY]r0(jB)r1}r2(h^X celery.conf.h_j*h`hchejEhg}r3(hi]hj]hk]hl]hn]uhpKkhqhhY]r4hzX celery.conf.r5r6}r7(h^Uh_j1ubaubjK)r8}r9(h^j,h_j*h`hchejNhg}r:(hi]hj]hk]hl]hn]uhpKkhqhhY]r;hzX MAIL_HOSTr<r=}r>(h^Uh_j8ubaubeubjT)r?}r@(h^Uh_j%h`hchejWhg}rA(hi]hj]hk]hl]hn]uhpKkhqhhY]rBh)rC}rD(h^X3The mail server to use. Default is ``"localhost"``.h_j?h`hchehhg}rE(hi]hj]hk]hl]hn]uhpKjhqhhY]rF(hzX#The mail server to use. Default is rGrH}rI(h^X#The mail server to use. Default is h_jCubj )rJ}rK(h^X``"localhost"``hg}rL(hi]hj]hk]hl]hn]uh_jChY]rMhzX "localhost"rNrO}rP(h^Uh_jJubahejubhzX.rQ}rR(h^X.h_jCubeubaubeubj!)rS}rT(h^Uh_j]h`hchej$hg}rU(hl]hk]hi]hj]hn]Uentries]rV(j'X&MAIL_HOST_USER (in module celery.conf)h$UtrWauhpNhqhhY]ubj))rX}rY(h^Uh_j]h`hchej,hg}rZ(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar[j2j[uhpNhqhhY]r\(j4)r]}r^(h^XMAIL_HOST_USERr_h_jXh`hchej8hg}r`(hl]rah$aj;j<hk]hi]hj]hn]rbh$aj>j_j?Uj@uhpKohqhhY]rc(jB)rd}re(h^X celery.conf.h_j]h`hchejEhg}rf(hi]hj]hk]hl]hn]uhpKohqhhY]rghzX celery.conf.rhri}rj(h^Uh_jdubaubjK)rk}rl(h^j_h_j]h`hchejNhg}rm(hi]hj]hk]hl]hn]uhpKohqhhY]rnhzXMAIL_HOST_USERrorp}rq(h^Uh_jkubaubeubjT)rr}rs(h^Uh_jXh`hchejWhg}rt(hi]hj]hk]hl]hn]uhpKohqhhY]ruh)rv}rw(h^X9Username (if required) to log on to the mail server with.rxh_jrh`hchehhg}ry(hi]hj]hk]hl]hn]uhpKnhqhhY]rzhzX9Username (if required) to log on to the mail server with.r{r|}r}(h^jxh_jvubaubaubeubj!)r~}r(h^Uh_j]h`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X*MAIL_HOST_PASSWORD (in module celery.conf)h6UtrauhpNhqhhY]ubj))r}r(h^Uh_j]h`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XMAIL_HOST_PASSWORDrh_jh`hchej8hg}r(hl]rh6aj;j<hk]hi]hj]hn]rh6aj>jj?Uj@uhpKshqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKshqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKshqhhY]rhzXMAIL_HOST_PASSWORDrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKshqhhY]rh)r}r(h^X9Password (if required) to log on to the mail server with.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKrhqhhY]rhzX9Password (if required) to log on to the mail server with.rr}r(h^jh_jubaubaubeubj!)r}r(h^Uh_j]h`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X!MAIL_PORT (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_j]h`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^X MAIL_PORTrh_jh`hchej8hg}r(hl]rhaj;j<hk]hi]hj]hn]rhaj>jj?Uj@uhpKwhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKwhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKwhqhhY]rhzX MAIL_PORTrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKwhqhhY]rh)r}r(h^X<The port the mail server is listening on. Default is ``25``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKvhqhhY]r(hzX5The port the mail server is listening on. Default is rr}r(h^X5The port the mail server is listening on. Default is h_jubj )r}r(h^X``25``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzX25rr}r(h^Uh_jubahejubhzX.r}r(h^X.h_jubeubaubeubeubh[)r}r(h^Uh_h\h`hchehfhg}r(hi]hj]hk]hl]rhVahn]rh9auhpKyhqhhY]r(hs)r}r(h^hh_jh`hchehwhg}r(hl]hk]hi]hj]hn]jhuhpKyhqhhY]rhzX Executionrr}r(h^hh_jubaubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X$ALWAYS_EAGER (in module celery.conf)h3UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^X ALWAYS_EAGERrh_jh`hchej8hg}r(hl]rh3aj;j<hk]hi]hj]hn]rh3aj>jj?Uj@uhpK~hqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpK~hqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpK~hqhhY]rhzX ALWAYS_EAGERrr}r(h^Uh_jubaubeubjT)r}r (h^Uh_jh`hchejWhg}r (hi]hj]hk]hl]hn]uhpK~hqhhY]r h)r }r (h^X6Always execute tasks locally, don't send to the queue.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpK}hqhhY]rhzX6Always execute tasks locally, don't send to the queue.rr}r(h^jh_j ubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X3EAGER_PROPAGATES_EXCEPTIONS (in module celery.conf)h(UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XEAGER_PROPAGATES_EXCEPTIONSr h_jh`hchej8hg}r!(hl]r"h(aj;j<hk]hi]hj]hn]r#h(aj>j j?Uj@uhpKhqhhY]r$(jB)r%}r&(h^X celery.conf.h_jh`hchejEhg}r'(hi]hj]hk]hl]hn]uhpKhqhhY]r(hzX celery.conf.r)r*}r+(h^Uh_j%ubaubjK)r,}r-(h^j h_jh`hchejNhg}r.(hi]hj]hk]hl]hn]uhpKhqhhY]r/hzXEAGER_PROPAGATES_EXCEPTIONSr0r1}r2(h^Uh_j,ubaubeubjT)r3}r4(h^Uh_jh`hchejWhg}r5(hi]hj]hk]hl]hn]uhpKhqhhY]r6h)r7}r8(h^XIf set to ``True``, :func:`celery.execute.apply` will re-raise task exceptions. It's the same as always running apply with ``throw=True``.h_j3h`hchehhg}r9(hi]hj]hk]hl]hn]uhpKhqhhY]r:(hzX If set to r;r<}r=(h^X If set to h_j7ubj )r>}r?(h^X``True``hg}r@(hi]hj]hk]hl]hn]uh_j7hY]rAhzXTruerBrC}rD(h^Uh_j>ubahejubhzX, rErF}rG(h^X, h_j7ubj)rH}rI(h^X:func:`celery.execute.apply`rJh_j7h`hchejhg}rK(UreftypeXfuncjjXcelery.execute.applyU refdomainXpyrLhl]hk]U refexplicithi]hj]hn]jjjNjj<uhpKhY]rMj )rN}rO(h^jJhg}rP(hi]hj]rQ(jjLXpy-funcrRehk]hl]hn]uh_jHhY]rShzXcelery.execute.apply()rTrU}rV(h^Uh_jNubahejubaubhzXK will re-raise task exceptions. It's the same as always running apply with rWrX}rY(h^XK will re-raise task exceptions. It's the same as always running apply with h_j7ubj )rZ}r[(h^X``throw=True``hg}r\(hi]hj]hk]hl]hn]uh_j7hY]r]hzX throw=Truer^r_}r`(h^Uh_jZubahejubhzX.ra}rb(h^X.h_j7ubeubaubeubj!)rc}rd(h^Uh_jh`hchej$hg}re(hl]hk]hi]hj]hn]Uentries]rf(j'X+TASK_RESULT_EXPIRES (in module celery.conf)hUtrgauhpNhqhhY]ubj))rh}ri(h^Uh_jh`hchej,hg}rj(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarkj2jkuhpNhqhhY]rl(j4)rm}rn(h^XTASK_RESULT_EXPIRESroh_jhh`hchej8hg}rp(hl]rqhaj;j<hk]hi]hj]hn]rrhaj>joj?Uj@uhpKhqhhY]rs(jB)rt}ru(h^X celery.conf.h_jmh`hchejEhg}rv(hi]hj]hk]hl]hn]uhpKhqhhY]rwhzX celery.conf.rxry}rz(h^Uh_jtubaubjK)r{}r|(h^joh_jmh`hchejNhg}r}(hi]hj]hk]hl]hn]uhpKhqhhY]r~hzXTASK_RESULT_EXPIRESrr}r(h^Uh_j{ubaubeubjT)r}r(h^Uh_jhh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^X&Task tombstone expire time in seconds.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX&Task tombstone expire time in seconds.rr}r(h^jh_jubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X%IGNORE_RESULT (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^X IGNORE_RESULTrh_jh`hchej8hg}r(hl]rhaj;j<hk]hi]hj]hn]rhaj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX IGNORE_RESULTrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^XCIf enabled, the default behavior will be to not store task results.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXCIf enabled, the default behavior will be to not store task results.rr}r(h^jh_jubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X%TRACK_STARTED (in module celery.conf)h'UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^X TRACK_STARTEDrh_jh`hchej8hg}r(hl]rh'aj;j<hk]hi]hj]hn]rh'aj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX TRACK_STARTEDrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^XjIf enabled, the default behavior will be to track when tasks starts by storing the :const:`STARTED` state.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]r(hzXSIf enabled, the default behavior will be to track when tasks starts by storing the rr}r(h^XSIf enabled, the default behavior will be to track when tasks starts by storing the h_jubj)r}r(h^X:const:`STARTED`rh_jh`hchejhg}r(UreftypeXconstjjXSTARTEDU refdomainXpyrhl]hk]U refexplicithi]hj]hn]jjjNjj<uhpKhY]rj )r}r(h^jhg}r(hi]hj]r(jjXpy-constrehk]hl]hn]uh_jhY]rhzXSTARTEDrr}r(h^Uh_jubahejubaubhzX state.rr}r(h^X state.h_jubeubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X!ACKS_LATE (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^X ACKS_LATErh_jh`hchej8hg}r(hl]rhaj;j<hk]hi]hj]hn]rhaj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]r hzX celery.conf.r r }r (h^Uh_jubaubjK)r }r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX ACKS_LATErr}r(h^Uh_j ubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^XaIf enabled, the default behavior will be to acknowledge task messages after the task is executed.rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXaIf enabled, the default behavior will be to acknowledge task messages after the task is executed.rr}r(h^jh_jubaubaubeubj!)r }r!(h^Uh_jh`hchej$hg}r"(hl]hk]hi]hj]hn]Uentries]r#(j'X4STORE_ERRORS_EVEN_IF_IGNORED (in module celery.conf)h5Utr$auhpNhqhhY]ubj))r%}r&(h^Uh_jh`hchej,hg}r'(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar(j2j(uhpNhqhhY]r)(j4)r*}r+(h^XSTORE_ERRORS_EVEN_IF_IGNOREDr,h_j%h`hchej8hg}r-(hl]r.h5aj;j<hk]hi]hj]hn]r/h5aj>j,j?Uj@uhpKhqhhY]r0(jB)r1}r2(h^X celery.conf.h_j*h`hchejEhg}r3(hi]hj]hk]hl]hn]uhpKhqhhY]r4hzX celery.conf.r5r6}r7(h^Uh_j1ubaubjK)r8}r9(h^j,h_j*h`hchejNhg}r:(hi]hj]hk]hl]hn]uhpKhqhhY]r;hzXSTORE_ERRORS_EVEN_IF_IGNOREDr<r=}r>(h^Uh_j8ubaubeubjT)r?}r@(h^Uh_j%h`hchejWhg}rA(hi]hj]hk]hl]hn]uhpKhqhhY]rBh)rC}rD(h^XUIf enabled, task errors will be stored even though ``Task.ignore_result`` is enabled.h_j?h`hchehhg}rE(hi]hj]hk]hl]hn]uhpKhqhhY]rF(hzX3If enabled, task errors will be stored even though rGrH}rI(h^X3If enabled, task errors will be stored even though h_jCubj )rJ}rK(h^X``Task.ignore_result``hg}rL(hi]hj]hk]hl]hn]uh_jChY]rMhzXTask.ignore_resultrNrO}rP(h^Uh_jJubahejubhzX is enabled.rQrR}rS(h^X is enabled.h_jCubeubaubeubj!)rT}rU(h^Uh_jh`hchej$hg}rV(hl]hk]hi]hj]hn]Uentries]rW(j'X*MAX_CACHED_RESULTS (in module celery.conf)hUtrXauhpNhqhhY]ubj))rY}rZ(h^Uh_jh`hchej,hg}r[(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar\j2j\uhpNhqhhY]r](j4)r^}r_(h^XMAX_CACHED_RESULTSr`h_jYh`hchej8hg}ra(hl]rbhaj;j<hk]hi]hj]hn]rchaj>j`j?Uj@uhpKhqhhY]rd(jB)re}rf(h^X celery.conf.h_j^h`hchejEhg}rg(hi]hj]hk]hl]hn]uhpKhqhhY]rhhzX celery.conf.rirj}rk(h^Uh_jeubaubjK)rl}rm(h^j`h_j^h`hchejNhg}rn(hi]hj]hk]hl]hn]uhpKhqhhY]rohzXMAX_CACHED_RESULTSrprq}rr(h^Uh_jlubaubeubjT)rs}rt(h^Uh_jYh`hchejWhg}ru(hi]hj]hk]hl]hn]uhpKhqhhY]rvh)rw}rx(h^XRTotal number of results to store before results are evicted from the result cache.ryh_jsh`hchehhg}rz(hi]hj]hk]hl]hn]uhpKhqhhY]r{hzXRTotal number of results to store before results are evicted from the result cache.r|r}}r~(h^jyh_jwubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X'TASK_SERIALIZER (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XTASK_SERIALIZERrh_jh`hchej8hg}r(hl]rhaj;j<hk]hi]hj]hn]rhaj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXTASK_SERIALIZERrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]r(h)r}r(h^XA string identifying the default serialization method to use. Can be ``pickle`` (default), ``json``, ``yaml``, or any custom serialization methods that have been registered with :mod:`carrot.serialization.registry`.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]r(hzXEA string identifying the default serialization method to use. Can be rr}r(h^XEA string identifying the default serialization method to use. Can be h_jubj )r}r(h^X ``pickle``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzXpicklerr}r(h^Uh_jubahejubhzX (default), rr}r(h^X (default), h_jubj )r}r(h^X``json``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzXjsonrr}r(h^Uh_jubahejubhzX, rr}r(h^X, h_jubj )r}r(h^X``yaml``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzXyamlrr}r(h^Uh_jubahejubhzXE, or any custom serialization methods that have been registered with rr}r(h^XE, or any custom serialization methods that have been registered with h_jubj)r}r(h^X$:mod:`carrot.serialization.registry`rh_jh`hchejhg}r(UreftypeXmodjjXcarrot.serialization.registryU refdomainXpyrhl]hk]U refexplicithi]hj]hn]jjjNjj<uhpKhY]rj )r}r(h^jhg}r(hi]hj]r(jjXpy-modrehk]hl]hn]uh_jhY]rhzXcarrot.serialization.registryrr}r(h^Uh_jubahejubaubhzX.r}r(h^X.h_jubeubh)r}r(h^XDefault is ``pickle``.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]r(hzX Default is rr}r(h^X Default is h_jubj )r}r(h^X ``pickle``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzXpicklerr}r(h^Uh_jubahejubhzX.r}r(h^X.h_jubeubeubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X&RESULT_BACKEND (in module celery.conf)hAUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XRESULT_BACKENDrh_jh`hchej8hg}r(hl]rhAaj;j<hk]hi]hj]hn]rhAaj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXRESULT_BACKENDrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r h)r }r (h^X4The backend used to store task results (tombstones).r h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX4The backend used to store task results (tombstones).rr}r(h^j h_j ubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X,CELERY_CACHE_BACKEND (in module celery.conf)hUtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XCELERY_CACHE_BACKENDrh_jh`hchej8hg}r (hl]r!haj;j<hk]hi]hj]hn]r"haj>jj?Uj@uhpKhqhhY]r#(jB)r$}r%(h^X celery.conf.h_jh`hchejEhg}r&(hi]hj]hk]hl]hn]uhpKhqhhY]r'hzX celery.conf.r(r)}r*(h^Uh_j$ubaubjK)r+}r,(h^jh_jh`hchejNhg}r-(hi]hj]hk]hl]hn]uhpKhqhhY]r.hzXCELERY_CACHE_BACKENDr/r0}r1(h^Uh_j+ubaubeubjT)r2}r3(h^Uh_jh`hchejWhg}r4(hi]hj]hk]hl]hn]uhpKhqhhY]r5h)r6}r7(h^XCelery cache backend.r8h_j2h`hchehhg}r9(hi]hj]hk]hl]hn]uhpKhqhhY]r:hzXCelery cache backend.r;r<}r=(h^j8h_j6ubaubaubeubj!)r>}r?(h^Uh_jh`hchej$hg}r@(hl]hk]hi]hj]hn]Uentries]rA(j'X#SEND_EVENTS (in module celery.conf)h)UtrBauhpNhqhhY]ubj))rC}rD(h^Uh_jh`hchej,hg}rE(j.j/Xpyhl]hk]hi]hj]hn]j0XdatarFj2jFuhpNhqhhY]rG(j4)rH}rI(h^X SEND_EVENTSrJh_jCh`hchej8hg}rK(hl]rLh)aj;j<hk]hi]hj]hn]rMh)aj>jJj?Uj@uhpKhqhhY]rN(jB)rO}rP(h^X celery.conf.h_jHh`hchejEhg}rQ(hi]hj]hk]hl]hn]uhpKhqhhY]rRhzX celery.conf.rSrT}rU(h^Uh_jOubaubjK)rV}rW(h^jJh_jHh`hchejNhg}rX(hi]hj]hk]hl]hn]uhpKhqhhY]rYhzX SEND_EVENTSrZr[}r\(h^Uh_jVubaubeubjT)r]}r^(h^Uh_jCh`hchejWhg}r_(hi]hj]hk]hl]hn]uhpKhqhhY]r`h)ra}rb(h^XkIf set, celery will send events that can be captured by monitors like ``celerymon``. Default is: ``False``.h_j]h`hchehhg}rc(hi]hj]hk]hl]hn]uhpKhqhhY]rd(hzXFIf set, celery will send events that can be captured by monitors like rerf}rg(h^XFIf set, celery will send events that can be captured by monitors like h_jaubj )rh}ri(h^X ``celerymon``hg}rj(hi]hj]hk]hl]hn]uh_jahY]rkhzX celerymonrlrm}rn(h^Uh_jhubahejubhzX. Default is: rorp}rq(h^X. Default is: h_jaubj )rr}rs(h^X ``False``hg}rt(hi]hj]hk]hl]hn]uh_jahY]ruhzXFalservrw}rx(h^Uh_jrubahejubhzX.ry}rz(h^X.h_jaubeubaubeubj!)r{}r|(h^Uh_jh`hchej$hg}r}(hl]hk]hi]hj]hn]Uentries]r~(j'X*DEFAULT_RATE_LIMIT (in module celery.conf)h,UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XDEFAULT_RATE_LIMITrh_jh`hchej8hg}r(hl]rh,aj;j<hk]hi]hj]hn]rh,aj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXDEFAULT_RATE_LIMITrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^XkThe default rate limit applied to all tasks which doesn't have a custom rate limit defined. (Default: None)rh_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXkThe default rate limit applied to all tasks which doesn't have a custom rate limit defined. (Default: None)rr}r(h^jh_jubaubaubeubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X+DISABLE_RATE_LIMITS (in module celery.conf)h;UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XDISABLE_RATE_LIMITSrh_jh`hchej8hg}r(hl]rh;aj;j<hk]hi]hj]hn]rh;aj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r(h^jh_jh`hchejNhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzXDISABLE_RATE_LIMITSrr}r(h^Uh_jubaubeubjT)r}r(h^Uh_jh`hchejWhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rh)r}r(h^X`If ``True`` all rate limits will be disabled and all tasks will be executed as soon as possible.h_jh`hchehhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]r(hzXIf rr}r(h^XIf h_jubj )r}r(h^X``True``hg}r(hi]hj]hk]hl]hn]uh_jhY]rhzXTruerr}r(h^Uh_jubahejubhzXU all rate limits will be disabled and all tasks will be executed as soon as possible.rr}r(h^XU all rate limits will be disabled and all tasks will be executed as soon as possible.h_jubeubaubeubeubh[)r}r(h^Uh_h\h`hchehfhg}r(hi]hj]hk]hl]rhTahn]rh-auhpKhqhhY]r(hs)r}r(h^hh_jh`hchehwhg}r(hl]hk]hi]hj]hn]jhuhpKhqhhY]rhzXBrokerrr}r(h^hh_jubaubj!)r}r(h^Uh_jh`hchej$hg}r(hl]hk]hi]hj]hn]Uentries]r(j'X/BROKER_CONNECTION_RETRY (in module celery.conf)h4UtrauhpNhqhhY]ubj))r}r(h^Uh_jh`hchej,hg}r(j.j/Xpyhl]hk]hi]hj]hn]j0Xdatarj2juhpNhqhhY]r(j4)r}r(h^XBROKER_CONNECTION_RETRYrh_jh`hchej8hg}r(hl]rh4aj;j<hk]hi]hj]hn]rh4aj>jj?Uj@uhpKhqhhY]r(jB)r}r(h^X celery.conf.h_jh`hchejEhg}r(hi]hj]hk]hl]hn]uhpKhqhhY]rhzX celery.conf.rr}r(h^Uh_jubaubjK)r}r (h^jh_jh`hchejNhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzXBROKER_CONNECTION_RETRYr r }r (h^Uh_jubaubeubjT)r }r (h^Uh_jh`hchejWhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r h)r }r (h^XQAutomatically try to re-establish the connection to the AMQP broker if it's lost.r h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzXQAutomatically try to re-establish the connection to the AMQP broker if it's lost.r r }r (h^j h_j ubaubaubeubj!)r }r (h^Uh_jh`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X5BROKER_CONNECTION_MAX_RETRIES (in module celery.conf)hj j?Uj@uhpKhqhhY]r" (jB)r# }r$ (h^X celery.conf.h_j h`hchejEhg}r% (hi]hj]hk]hl]hn]uhpKhqhhY]r& hzX celery.conf.r' r( }r) (h^Uh_j# ubaubjK)r* }r+ (h^j h_j h`hchejNhg}r, (hi]hj]hk]hl]hn]uhpKhqhhY]r- hzXBROKER_CONNECTION_MAX_RETRIESr. r/ }r0 (h^Uh_j* ubaubeubjT)r1 }r2 (h^Uh_j h`hchejWhg}r3 (hi]hj]hk]hl]hn]uhpKhqhhY]r4 (h)r5 }r6 (h^XWMaximum number of retries before we give up re-establishing a connection to the broker.r7 h_j1 h`hchehhg}r8 (hi]hj]hk]hl]hn]uhpKhqhhY]r9 hzXWMaximum number of retries before we give up re-establishing a connection to the broker.r: r; }r< (h^j7 h_j5 ubaubh)r= }r> (h^X;If this is set to ``0`` or ``None``, we will retry forever.h_j1 h`hchehhg}r? (hi]hj]hk]hl]hn]uhpKhqhhY]r@ (hzXIf this is set to rA rB }rC (h^XIf this is set to h_j= ubj )rD }rE (h^X``0``hg}rF (hi]hj]hk]hl]hn]uh_j= hY]rG hzX0rH }rI (h^Uh_jD ubahejubhzX or rJ rK }rL (h^X or h_j= ubj )rM }rN (h^X``None``hg}rO (hi]hj]hk]hl]hn]uh_j= hY]rP hzXNonerQ rR }rS (h^Uh_jM ubahejubhzX, we will retry forever.rT rU }rV (h^X, we will retry forever.h_j= ubeubh)rW }rX (h^XDefault is ``100`` retries.h_j1 h`hchehhg}rY (hi]hj]hk]hl]hn]uhpKhqhhY]rZ (hzX Default is r[ r\ }r] (h^X Default is h_jW ubj )r^ }r_ (h^X``100``hg}r` (hi]hj]hk]hl]hn]uh_jW hY]ra hzX100rb rc }rd (h^Uh_j^ ubahejubhzX retries.re rf }rg (h^X retries.h_jW ubeubeubeubeubh[)rh }ri (h^Uh_h\h`hchehfhg}rj (hi]hj]hk]hl]rk hQahn]rl hauhpKhqhhY]rm (hs)rn }ro (h^hh_jh h`hchehwhg}rp (hl]hk]hi]hj]hn]jhuhpKhqhhY]rq hzX Celerybeatrr rs }rt (h^hh_jn ubaubj!)ru }rv (h^Uh_jh h`hchej$hg}rw (hl]hk]hi]hj]hn]Uentries]rx (j'X,CELERYBEAT_LOG_LEVEL (in module celery.conf)h Utry auhpNhqhhY]ubj))rz }r{ (h^Uh_jh h`hchej,hg}r| (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar} j2j} uhpNhqhhY]r~ (j4)r }r (h^XCELERYBEAT_LOG_LEVELr h_jz h`hchej8hg}r (hl]r h aj;j<hk]hi]hj]hn]r h aj>j j?Uj@uhpKhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzXCELERYBEAT_LOG_LEVELr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_jz h`hchejWhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r h)r }r (h^X7Default log level for celerybeat. Default is: ``INFO``.h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r (hzX.Default log level for celerybeat. Default is: r r }r (h^X.Default log level for celerybeat. Default is: h_j ubj )r }r (h^X``INFO``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzXINFOr r }r (h^Uh_j ubahejubhzX.r }r (h^X.h_j ubeubaubeubj!)r }r (h^Uh_jh h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X+CELERYBEAT_LOG_FILE (in module celery.conf)h&Utr auhpNhqhhY]ubj))r }r (h^Uh_jh h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYBEAT_LOG_FILEr h_j h`hchej8hg}r (hl]r h&aj;j<hk]hi]hj]hn]r h&aj>j j?Uj@uhpKhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzXCELERYBEAT_LOG_FILEr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r h)r }r (h^X>Default log file for celerybeat. Default is: ``None`` (stderr)h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r (hzX-Default log file for celerybeat. Default is: r r }r (h^X-Default log file for celerybeat. Default is: h_j ubj )r }r (h^X``None``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzXNoner r }r (h^Uh_j ubahejubhzX (stderr)r r }r (h^X (stderr)h_j ubeubaubeubj!)r }r (h^Uh_jh h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X4CELERYBEAT_SCHEDULE_FILENAME (in module celery.conf)hUtr auhpNhqhhY]ubj))r }r (h^Uh_jh h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYBEAT_SCHEDULE_FILENAMEr h_j h`hchej8hg}r (hl]r haj;j<hk]hi]hj]hn]r haj>j j?Uj@uhpKhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzXCELERYBEAT_SCHEDULE_FILENAMEr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r h)r }r (h^XSName of the persistent schedule database file. Default is: ``celerybeat-schedule``.h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r (hzX;Name of the persistent schedule database file. Default is: r r }r (h^X;Name of the persistent schedule database file. Default is: h_j ubj )r }r (h^X``celerybeat-schedule``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzXcelerybeat-scheduler r }r (h^Uh_j ubahejubhzX.r }r (h^X.h_j ubeubaubeubj!)r }r (h^Uh_jh h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X4CELERYBEAT_MAX_LOOP_INTERVAL (in module celery.conf)h Utr auhpNhqhhY]ubj))r }r (h^Uh_jh h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYBEAT_MAX_LOOP_INTERVALr h_j h`hchej8hg}r (hl]r h aj;j<hk]hi]hj]hn]r h aj>j j?Uj@uhpKhqhhY]r (jB)r }r! (h^X celery.conf.h_j h`hchejEhg}r" (hi]hj]hk]hl]hn]uhpKhqhhY]r# hzX celery.conf.r$ r% }r& (h^Uh_j ubaubjK)r' }r( (h^j h_j h`hchejNhg}r) (hi]hj]hk]hl]hn]uhpKhqhhY]r* hzXCELERYBEAT_MAX_LOOP_INTERVALr+ r, }r- (h^Uh_j' ubaubeubjT)r. }r/ (h^Uh_j h`hchejWhg}r0 (hi]hj]hk]hl]hn]uhpKhqhhY]r1 h)r2 }r3 (h^XThe maximum number of seconds celerybeat is allowed to sleep between checking the schedule. The default is 5 minutes, which means celerybeat can only sleep a maximum of 5 minutes after checking the schedule run-times for a periodic task to apply. If you change the run_times of periodic tasks at run-time, you may consider lowering this value for changes to take effect faster (A value of 5 minutes, means the changes will take effect in 5 minutes at maximum).r4 h_j. h`hchehhg}r5 (hi]hj]hk]hl]hn]uhpKhqhhY]r6 hzXThe maximum number of seconds celerybeat is allowed to sleep between checking the schedule. The default is 5 minutes, which means celerybeat can only sleep a maximum of 5 minutes after checking the schedule run-times for a periodic task to apply. If you change the run_times of periodic tasks at run-time, you may consider lowering this value for changes to take effect faster (A value of 5 minutes, means the changes will take effect in 5 minutes at maximum).r7 r8 }r9 (h^j4 h_j2 ubaubaubeubeubh[)r: }r; (h^Uh_h\h`hchehfhg}r< (hi]hj]hk]hl]r= hWahn]r> hCauhpKhqhhY]r? (hs)r@ }rA (h^jh_j: h`hchehwhg}rB (hl]hk]hi]hj]hn]jhuhpKhqhhY]rC hzX CelerymonrD rE }rF (h^jh_j@ ubaubj!)rG }rH (h^Uh_j: h`hchej$hg}rI (hl]hk]hi]hj]hn]Uentries]rJ (j'X+CELERYMON_LOG_LEVEL (in module celery.conf)h UtrK auhpNhqhhY]ubj))rL }rM (h^Uh_j: h`hchej,hg}rN (j.j/Xpyhl]hk]hi]hj]hn]j0XdatarO j2jO uhpNhqhhY]rP (j4)rQ }rR (h^XCELERYMON_LOG_LEVELrS h_jL h`hchej8hg}rT (hl]rU h aj;j<hk]hi]hj]hn]rV h aj>jS j?Uj@uhpKhqhhY]rW (jB)rX }rY (h^X celery.conf.h_jQ h`hchejEhg}rZ (hi]hj]hk]hl]hn]uhpKhqhhY]r[ hzX celery.conf.r\ r] }r^ (h^Uh_jX ubaubjK)r_ }r` (h^jS h_jQ h`hchejNhg}ra (hi]hj]hk]hl]hn]uhpKhqhhY]rb hzXCELERYMON_LOG_LEVELrc rd }re (h^Uh_j_ ubaubeubjT)rf }rg (h^Uh_jL h`hchejWhg}rh (hi]hj]hk]hl]hn]uhpKhqhhY]ri h)rj }rk (h^X6Default log level for celerymon. Default is: ``INFO``.h_jf h`hchehhg}rl (hi]hj]hk]hl]hn]uhpKhqhhY]rm (hzX-Default log level for celerymon. Default is: rn ro }rp (h^X-Default log level for celerymon. Default is: h_jj ubj )rq }rr (h^X``INFO``hg}rs (hi]hj]hk]hl]hn]uh_jj hY]rt hzXINFOru rv }rw (h^Uh_jq ubahejubhzX.rx }ry (h^X.h_jj ubeubaubeubj!)rz }r{ (h^Uh_j: h`hchej$hg}r| (hl]hk]hi]hj]hn]Uentries]r} (j'X*CELERYMON_LOG_FILE (in module celery.conf)hUtr~ auhpNhqhhY]ubj))r }r (h^Uh_j: h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYMON_LOG_FILEr h_j h`hchej8hg}r (hl]r haj;j<hk]hi]hj]hn]r haj>j j?Uj@uhpKhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r hzXCELERYMON_LOG_FILEr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r h)r }r (h^X=Default log file for celerymon. Default is: ``None`` (stderr)h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpKhqhhY]r (hzX,Default log file for celerymon. Default is: r r }r (h^X,Default log file for celerymon. Default is: h_j ubj )r }r (h^X``None``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzXNoner r }r (h^Uh_j ubahejubhzX (stderr)r r }r (h^X (stderr)h_j ubeubaubeubeubh[)r }r (h^Uh_h\h`hchehfhg}r (hi]hj]hk]hl]r hPahn]r h auhpKhqhhY]r (hs)r }r (h^jh_j h`hchehwhg}r (hl]hk]hi]hj]hn]jj uhpKhqhhY]r hzXCelerydr r }r (h^jh_j ubaubj!)r }r (h^Uh_j h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X"LOG_LEVELS (in module celery.conf)hUtr auhpNhqhhY]ubj))r }r (h^Uh_j h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^X LOG_LEVELSr h_j h`hchej8hg}r (hl]r haj;j<hk]hi]hj]hn]r haj>j j?Uj@uhpMhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzX LOG_LEVELSr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r h)r }r (h^X>Mapping of log level names to :mod:`logging` module constants.h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r (hzXMapping of log level names to r r }r (h^XMapping of log level names to h_j ubj)r }r (h^X:mod:`logging`r h_j h`hchejhg}r (UreftypeXmodjjXloggingU refdomainXpyr hl]hk]U refexplicithi]hj]hn]jjjNjj<uhpMhY]r j )r }r (h^j hg}r (hi]hj]r (jj Xpy-modr ehk]hl]hn]uh_j hY]r hzXloggingr r }r (h^Uh_j ubahejubaubhzX module constants.r r }r (h^X module constants.h_j ubeubaubeubj!)r }r (h^Uh_j h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X*CELERYD_LOG_FORMAT (in module celery.conf)hUtr auhpNhqhhY]ubj))r }r (h^Uh_j h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYD_LOG_FORMATr h_j h`hchej8hg}r (hl]r haj;j<hk]hi]hj]hn]r haj>j j?Uj@uhpMhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzXCELERYD_LOG_FORMATr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r h)r }r (h^X#The format to use for log messages.r h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzX#The format to use for log messages.r r }r! (h^j h_j ubaubaubeubj!)r" }r# (h^Uh_j h`hchej$hg}r$ (hl]hk]hi]hj]hn]Uentries]r% (j'X/CELERYD_TASK_LOG_FORMAT (in module celery.conf)h8Utr& auhpNhqhhY]ubj))r' }r( (h^Uh_j h`hchej,hg}r) (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar* j2j* uhpNhqhhY]r+ (j4)r, }r- (h^XCELERYD_TASK_LOG_FORMATr. h_j' h`hchej8hg}r/ (hl]r0 h8aj;j<hk]hi]hj]hn]r1 h8aj>j. j?Uj@uhpM hqhhY]r2 (jB)r3 }r4 (h^X celery.conf.h_j, h`hchejEhg}r5 (hi]hj]hk]hl]hn]uhpM hqhhY]r6 hzX celery.conf.r7 r8 }r9 (h^Uh_j3 ubaubjK)r: }r; (h^j. h_j, h`hchejNhg}r< (hi]hj]hk]hl]hn]uhpM hqhhY]r= hzXCELERYD_TASK_LOG_FORMATr> r? }r@ (h^Uh_j: ubaubeubjT)rA }rB (h^Uh_j' h`hchejWhg}rC (hi]hj]hk]hl]hn]uhpM hqhhY]rD h)rE }rF (h^X(The format to use for task log messages.rG h_jA h`hchehhg}rH (hi]hj]hk]hl]hn]uhpMhqhhY]rI hzX(The format to use for task log messages.rJ rK }rL (h^jG h_jE ubaubaubeubj!)rM }rN (h^Uh_j h`hchej$hg}rO (hl]hk]hi]hj]hn]Uentries]rP (j'X(CELERYD_LOG_FILE (in module celery.conf)hDUtrQ auhpNhqhhY]ubj))rR }rS (h^Uh_j h`hchej,hg}rT (j.j/Xpyhl]hk]hi]hj]hn]j0XdatarU j2jU uhpNhqhhY]rV (j4)rW }rX (h^XCELERYD_LOG_FILErY h_jR h`hchej8hg}rZ (hl]r[ hDaj;j<hk]hi]hj]hn]r\ hDaj>jY j?Uj@uhpMhqhhY]r] (jB)r^ }r_ (h^X celery.conf.h_jW h`hchejEhg}r` (hi]hj]hk]hl]hn]uhpMhqhhY]ra hzX celery.conf.rb rc }rd (h^Uh_j^ ubaubjK)re }rf (h^jY h_jW h`hchejNhg}rg (hi]hj]hk]hl]hn]uhpMhqhhY]rh hzXCELERYD_LOG_FILEri rj }rk (h^Uh_je ubaubeubjT)rl }rm (h^Uh_jR h`hchejWhg}rn (hi]hj]hk]hl]hn]uhpMhqhhY]ro h)rp }rq (h^X>Filename of the daemon log file. Default is: ``None`` (stderr)h_jl h`hchehhg}rr (hi]hj]hk]hl]hn]uhpM hqhhY]rs (hzX-Filename of the daemon log file. Default is: rt ru }rv (h^X-Filename of the daemon log file. Default is: h_jp ubj )rw }rx (h^X``None``hg}ry (hi]hj]hk]hl]hn]uh_jp hY]rz hzXNoner{ r| }r} (h^Uh_jw ubahejubhzX (stderr)r~ r }r (h^X (stderr)h_jp ubeubaubeubj!)r }r (h^Uh_j h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X)CELERYD_LOG_LEVEL (in module celery.conf)hUtr auhpNhqhhY]ubj))r }r (h^Uh_j h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYD_LOG_LEVELr h_j h`hchej8hg}r (hl]r haj;j<hk]hi]hj]hn]r haj>j j?Uj@uhpMhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzXCELERYD_LOG_LEVELr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r h)r }r (h^X)Default log level for daemons. (``WARN``)h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r (hzX Default log level for daemons. (r r }r (h^X Default log level for daemons. (h_j ubj )r }r (h^X``WARN``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzXWARNr r }r (h^Uh_j ubahejubhzX)r }r (h^X)h_j ubeubaubeubj!)r }r (h^Uh_j h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X+CELERYD_CONCURRENCY (in module celery.conf)h7Utr auhpNhqhhY]ubj))r }r (h^Uh_j h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYD_CONCURRENCYr h_j h`hchej8hg}r (hl]r h7aj;j<hk]hi]hj]hn]r h7aj>j j?Uj@uhpMhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzXCELERYD_CONCURRENCYr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r h)r }r (h^XThe number of concurrent worker processes. If set to ``0`` (the default), the total number of available CPUs/cores will be used.h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r (hzX5The number of concurrent worker processes. If set to r r }r (h^X5The number of concurrent worker processes. If set to h_j ubj )r }r (h^X``0``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzX0r }r (h^Uh_j ubahejubhzXF (the default), the total number of available CPUs/cores will be used.r r }r (h^XF (the default), the total number of available CPUs/cores will be used.h_j ubeubaubeubj!)r }r (h^Uh_j h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X3CELERYD_PREFETCH_MULTIPLIER (in module celery.conf)h!Utr auhpNhqhhY]ubj))r }r (h^Uh_j h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYD_PREFETCH_MULTIPLIERr h_j h`hchej8hg}r (hl]r h!aj;j<hk]hi]hj]hn]r h!aj>j j?Uj@uhpMhqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r hzXCELERYD_PREFETCH_MULTIPLIERr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r h)r }r (h^XThe number of concurrent workers is multipled by this number to yield the wanted AMQP QoS message prefetch count. Default is: ``4``h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpMhqhhY]r (hzX~The number of concurrent workers is multipled by this number to yield the wanted AMQP QoS message prefetch count. Default is: r r }r (h^X~The number of concurrent workers is multipled by this number to yield the wanted AMQP QoS message prefetch count. Default is: h_j ubj )r }r (h^X``4``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzX4r }r (h^Uh_j ubahejubeubaubeubj!)r }r (h^Uh_j h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X$CELERYD_POOL (in module celery.conf)h0Utr auhpNhqhhY]ubj))r }r (h^Uh_j h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r! }r" (h^X CELERYD_POOLr# h_j h`hchej8hg}r$ (hl]r% h0aj;j<hk]hi]hj]hn]r& h0aj>j# j?Uj@uhpM#hqhhY]r' (jB)r( }r) (h^X celery.conf.h_j! h`hchejEhg}r* (hi]hj]hk]hl]hn]uhpM#hqhhY]r+ hzX celery.conf.r, r- }r. (h^Uh_j( ubaubjK)r/ }r0 (h^j# h_j! h`hchejNhg}r1 (hi]hj]hk]hl]hn]uhpM#hqhhY]r2 hzX CELERYD_POOLr3 r4 }r5 (h^Uh_j/ ubaubeubjT)r6 }r7 (h^Uh_j h`hchejWhg}r8 (hi]hj]hk]hl]hn]uhpM#hqhhY]r9 h)r: }r; (h^XgName of the task pool class used by the worker. Default is ``"celery.concurrency.processes.TaskPool"``.h_j6 h`hchehhg}r< (hi]hj]hk]hl]hn]uhpM!hqhhY]r= (hzX;Name of the task pool class used by the worker. Default is r> r? }r@ (h^X;Name of the task pool class used by the worker. Default is h_j: ubj )rA }rB (h^X+``"celery.concurrency.processes.TaskPool"``hg}rC (hi]hj]hk]hl]hn]uh_j: hY]rD hzX'"celery.concurrency.processes.TaskPool"rE rF }rG (h^Uh_jA ubahejubhzX.rH }rI (h^X.h_j: ubeubaubeubj!)rJ }rK (h^Uh_j h`hchej$hg}rL (hl]hk]hi]hj]hn]Uentries]rM (j'X(CELERYD_LISTENER (in module celery.conf)hFUtrN auhpNhqhhY]ubj))rO }rP (h^Uh_j h`hchej,hg}rQ (j.j/Xpyhl]hk]hi]hj]hn]j0XdatarR j2jR uhpNhqhhY]rS (j4)rT }rU (h^XCELERYD_LISTENERrV h_jO h`hchej8hg}rW (hl]rX hFaj;j<hk]hi]hj]hn]rY hFaj>jV j?Uj@uhpM(hqhhY]rZ (jB)r[ }r\ (h^X celery.conf.h_jT h`hchejEhg}r] (hi]hj]hk]hl]hn]uhpM(hqhhY]r^ hzX celery.conf.r_ r` }ra (h^Uh_j[ ubaubjK)rb }rc (h^jV h_jT h`hchejNhg}rd (hi]hj]hk]hl]hn]uhpM(hqhhY]re hzXCELERYD_LISTENERrf rg }rh (h^Uh_jb ubaubeubjT)ri }rj (h^Uh_jO h`hchejWhg}rk (hi]hj]hk]hl]hn]uhpM(hqhhY]rl h)rm }rn (h^XfName of the listener class used by the worker. Default is ``"celery.worker.listener.CarrotListener"``.h_ji h`hchehhg}ro (hi]hj]hk]hl]hn]uhpM&hqhhY]rp (hzX:Name of the listener class used by the worker. Default is rq rr }rs (h^X:Name of the listener class used by the worker. Default is h_jm ubj )rt }ru (h^X+``"celery.worker.listener.CarrotListener"``hg}rv (hi]hj]hk]hl]hn]uh_jm hY]rw hzX'"celery.worker.listener.CarrotListener"rx ry }rz (h^Uh_jt ubahejubhzX.r{ }r| (h^X.h_jm ubeubaubeubj!)r} }r~ (h^Uh_j h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X(CELERYD_MEDIATOR (in module celery.conf)h%Utr auhpNhqhhY]ubj))r }r (h^Uh_j h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYD_MEDIATORr h_j h`hchej8hg}r (hl]r h%aj;j<hk]hi]hj]hn]r h%aj>j j?Uj@uhpM-hqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpM-hqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpM-hqhhY]r hzXCELERYD_MEDIATORr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpM-hqhhY]r h)r }r (h^XcName of the mediator class used by the worker. Default is ``"celery.worker.controllers.Mediator"``.h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpM+hqhhY]r (hzX:Name of the mediator class used by the worker. Default is r r }r (h^X:Name of the mediator class used by the worker. Default is h_j ubj )r }r (h^X(``"celery.worker.controllers.Mediator"``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzX$"celery.worker.controllers.Mediator"r r }r (h^Uh_j ubahejubhzX.r }r (h^X.h_j ubeubaubeubj!)r }r (h^Uh_j h`hchej$hg}r (hl]hk]hi]hj]hn]Uentries]r (j'X-CELERYD_ETA_SCHEDULER (in module celery.conf)h2Utr auhpNhqhhY]ubj))r }r (h^Uh_j h`hchej,hg}r (j.j/Xpyhl]hk]hi]hj]hn]j0Xdatar j2j uhpNhqhhY]r (j4)r }r (h^XCELERYD_ETA_SCHEDULERr h_j h`hchej8hg}r (hl]r h2aj;j<hk]hi]hj]hn]r h2aj>j j?Uj@uhpM1hqhhY]r (jB)r }r (h^X celery.conf.h_j h`hchejEhg}r (hi]hj]hk]hl]hn]uhpM1hqhhY]r hzX celery.conf.r r }r (h^Uh_j ubaubjK)r }r (h^j h_j h`hchejNhg}r (hi]hj]hk]hl]hn]uhpM1hqhhY]r hzXCELERYD_ETA_SCHEDULERr r }r (h^Uh_j ubaubeubjT)r }r (h^Uh_j h`hchejWhg}r (hi]hj]hk]hl]hn]uhpM1hqhhY]r h)r }r (h^XrName of the ETA scheduler class used by the worker. Default is ``"celery.worker.controllers.ScheduleController"``.h_j h`hchehhg}r (hi]hj]hk]hl]hn]uhpM0hqhhY]r (hzX?Name of the ETA scheduler class used by the worker. Default is r r }r (h^X?Name of the ETA scheduler class used by the worker. Default is h_j ubj )r }r (h^X2``"celery.worker.controllers.ScheduleController"``hg}r (hi]hj]hk]hl]hn]uh_j hY]r hzX."celery.worker.controllers.ScheduleController"r r }r (h^Uh_j ubahejubhzX.r }r (h^X.h_j ubeubaubeubeubeubah^UU transformerr NU footnote_refsr }r Urefnamesr }r Usymbol_footnotesr ]r Uautofootnote_refsr ]r Usymbol_footnote_refsr ]r U citationsr ]r hqhU current_liner NUtransform_messagesr ]r Ureporterr NUid_startr KU autofootnotesr ]r U citation_refsr }r Uindirect_targetsr ]r Usettingsr (cdocutils.frontend Values r or }r (Ufootnote_backlinksr KUrecord_dependenciesr NU rfc_base_urlr Uhttp://tools.ietf.org/html/r U tracebackr Upep_referencesr NUstrip_commentsr NU toc_backlinksr Uentryr U language_coder Uenr U datestampr NU report_levelr KU _destinationr NU halt_levelr KU strip_classesr NhwNUerror_encoding_error_handlerr Ubackslashreplacer Udebugr NUembed_stylesheetr Uoutput_encoding_error_handlerr Ustrictr U sectnum_xformr KUdump_transformsr NU docinfo_xformr KUwarning_streamr NUpep_file_url_templater Upep-%04dr Uexit_status_levelr KUconfigr NUstrict_visitorr NUcloak_email_addressesr Utrim_footnote_reference_spacer Uenvr NUdump_pseudo_xmlr! NUexpose_internalsr" NUsectsubtitle_xformr# U source_linkr$ NUrfc_referencesr% NUoutput_encodingr& Uutf-8r' U source_urlr( NUinput_encodingr) U utf-8-sigr* U_disable_configr+ NU id_prefixr, UU tab_widthr- KUerror_encodingr. UUTF-8r/ U_sourcer0 US/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.conf.rstr1 Ugettext_compactr2 U generatorr3 NUdump_internalsr4 NU smart_quotesr5 U pep_base_urlr6 Uhttp://www.python.org/dev/peps/r7 Usyntax_highlightr8 Ulongr9 Uinput_encoding_error_handlerr: j Uauto_id_prefixr; Uidr< Udoctitle_xformr= Ustrip_elements_with_classesr> NU _config_filesr? ]Ufile_insertion_enabledr@ U raw_enabledrA KU dump_settingsrB NubUsymbol_footnote_startrC KUidsrD }rE (hjhj hjh j hPj h j5h j h jlhUh\hj hQjh hj hjhjhhhjhjhShhhhjhj^h0j! h!j hj4hhj j hhhj5hhhhhj hjmhjhjh jQ hRj]h"jhh#jh$j]h%j h&j h'jh(jh)jHh*j6h+jh,jhTjhj h/j*h1jah2j h3jh4jh5j*h6jh7j h8j, hVjh:jh;jhjh?jth@jhAjhBjhWj: hDjW hXjhFjT uUsubstitution_namesrF }rG hehqhg}rH (hi]hl]hk]Usourcehchj]hn]uU footnotesrI ]rJ UrefidsrK }rL ub.PKHDD4 UUCcelery-2.0-archived/.doctrees/reference/celery.events.state.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X?in-memory representation of cluster state - celery.events.stateqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX[/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.events.state.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U=in-memory-representation-of-cluster-state-celery-events-stateq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX?In-memory Representation of Cluster State - celery.events.stateq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X?In-memory Representation of Cluster State - celery.events.stateq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.messaging import EventPublisher, EventConsumer File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/messaging.py", line 13, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU[/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.events.state.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDD/88Ecelery-2.0-archived/.doctrees/reference/celery.bin.celerybeat.doctreecdocutils.nodes document q)q}q(U nametypesq}q(UcontentsqNX3celery periodic task server - celery.bin.celerybeatqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qX]/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.celerybeat.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U1celery-periodic-task-server-celery-bin-celerybeatq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX3Celery Periodic Task Server - celery.bin.celerybeatq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X3Celery Periodic Task Server - celery.bin.celerybeatq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hUcontentsqFhh"uh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqU]/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.celerybeat.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]qUfile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDMBcelery-2.0-archived/.doctrees/reference/celery.bin.camqadm.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X9caqmadm: amqp api command-line shell - celery.bin.camqadmqNUcontentsqNuUsubstitution_defsq}q Uparse_messagesq ]q cdocutils.nodes system_message q )q }q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUhhUsourceqcdocutils.nodes reprunicode qXZ/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.camqadm.rstqq}qbUtagnameqUsectionqU attributesq}q(Udupnamesq]Uclassesq]Ubackrefsq]Uidsq ]q!U6caqmadm-amqp-api-command-line-shell-celery-bin-camqadmq"aUnamesq#]q$hauUlineq%KUdocumentq&hUchildrenq']q(cdocutils.nodes title q))q*}q+(hX9caqmadm: AMQP API Command-line Shell - celery.bin.camqadmq,hhhhhUtitleq-h}q.(h]h]h]h ]h#]uh%Kh&hh']q/cdocutils.nodes Text q0X9caqmadm: AMQP API Command-line Shell - celery.bin.camqadmq1q2}q3(hh,hh*ubaubaubhhhUsystem_messageq4h}q5(h]UlevelKh ]h]Usourcehh]h#]UlineK UtypeUWARNINGq6uh%Nh&hh']q7cdocutils.nodes paragraph q8)q9}q:(hUh}q;(h]h]h]h ]h#]uhh h']q from celery.utils import info File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/info.py", line 3, in from celery.messaging import establish_connection File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/messaging.py", line 13, in from celery import conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/conf.py", line 22, in settings = load_settings() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 32, in load_settings _settings = current_loader().conf File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 24, in current_loader _loader = setup_loader() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 17, in setup_loader return get_loader_cls(os.environ.setdefault("CELERY_LOADER", "default"))() File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/loaders/__init__.py", line 13, in get_loader_cls return get_cls_by_name(loader, LOADER_ALIASES) File "/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/utils/__init__.py", line 334, in get_cls_by_name module = importlib.import_module(module_name) File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) ImportError: No module named djcelery.loaders q=q>}q?(hUhh9ubahU paragraphq@ubaubaUcurrent_sourceqANU decorationqBNUautofootnote_startqCKUnameidsqD}qE(hh"hUcontentsqFuh']qGhahUU transformerqHNU footnote_refsqI}qJUrefnamesqK}qLUsymbol_footnotesqM]qNUautofootnote_refsqO]qPUsymbol_footnote_refsqQ]qRU citationsqS]qTh&hU current_lineqUNUtransform_messagesqV]qWUreporterqXNUid_startqYKU autofootnotesqZ]q[U citation_refsq\}q]Uindirect_targetsq^]q_Usettingsq`(cdocutils.frontend Values qaoqb}qc(Ufootnote_backlinksqdKUrecord_dependenciesqeNU rfc_base_urlqfUhttp://tools.ietf.org/html/qgU tracebackqhUpep_referencesqiNUstrip_commentsqjNU toc_backlinksqkUentryqlU language_codeqmUenqnU datestampqoNU report_levelqpKU _destinationqqNU halt_levelqrKU strip_classesqsNh-NUerror_encoding_error_handlerqtUbackslashreplacequUdebugqvNUembed_stylesheetqwUoutput_encoding_error_handlerqxUstrictqyU sectnum_xformqzKUdump_transformsq{NU docinfo_xformq|KUwarning_streamq}NUpep_file_url_templateq~Upep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUZ/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.bin.camqadm.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhyUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}q(h"hhFcdocutils.nodes topic q)q}q(hUhhhhhUtopicqh}q(h]h]q(UcontentsqUlocalqeh]h ]qhFah#]qhauh%Kh&hh']qcdocutils.nodes pending q)q}q(hX.. contents:: :local:hhU transformqcdocutils.transforms.parts Contents qUdetailsq}qUlocalNshUpendingqh}q(h]h]h]h ]h#]uh']ubaubuUsubstitution_namesq}qhh&h}q(h]h ]h]Usourcehh]h#]uU footnotesq]qUrefidsq}qub.PKHDDO>>=celery-2.0-archived/.doctrees/reference/celery.states.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcelery.states.PROPAGATE_STATESqXcelery.states.FAILUREqXcelery.states.READY_STATESqXsetsq NXcelery.states.PENDINGq Xcelery.states.ALL_STATESq Xtask states - celery.statesq NXstatesq NXcelery.states.EXCEPTION_STATESqXcelery.states.SUCCESSqXcelery.states.RETRYqXcelery.states.REVOKEDqXcelery.states.STARTEDqUcontentsqNXcelery.states.UNREADY_STATESquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hhhhhhh Usetsqh h h h h Utask-states-celery-statesqh Ustatesq hhhhhhhhhhhUcontentsq!hhuUchildrenq"]q#cdocutils.nodes section q$)q%}q&(U rawsourceq'UUparentq(hUsourceq)cdocutils.nodes reprunicode q*XU/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.states.rstq+q,}q-bUtagnameq.Usectionq/U attributesq0}q1(Udupnamesq2]Uclassesq3]Ubackrefsq4]Uidsq5]q6haUnamesq7]q8h auUlineq9KUdocumentq:hh"]q;(cdocutils.nodes title q<)q=}q>(h'XTask States - celery.statesq?h(h%h)h,h.Utitleq@h0}qA(h2]h3]h4]h5]h7]uh9Kh:hh"]qBcdocutils.nodes Text qCXTask States - celery.statesqDqE}qF(h'h?h(h=ubaubcdocutils.nodes topic qG)qH}qI(h'Uh(h%h)h,h.UtopicqJh0}qK(h2]h3]qL(UcontentsqMUlocalqNeh4]h5]qOh!ah7]qPhauh9Kh:hh"]qQcdocutils.nodes bullet_list qR)qS}qT(h'Uh(hHh)Nh.U bullet_listqUh0}qV(h2]h3]h4]h5]h7]uh9Nh:hh"]qW(cdocutils.nodes list_item qX)qY}qZ(h'Uh0}q[(h2]h3]h4]h5]h7]uh(hSh"]q\cdocutils.nodes paragraph q])q^}q_(h'Uh0}q`(h2]h3]h4]h5]h7]uh(hYh"]qacdocutils.nodes reference qb)qc}qd(h'Uh0}qe(h5]qfUid1qgah4]h2]h3]h7]Urefidh uh(h^h"]qhhCXStatesqiqj}qk(h'XStatesqlh(hcubah.U referenceqmubah.U paragraphqnubah.U list_itemqoubhX)qp}qq(h'Uh0}qr(h2]h3]h4]h5]h7]uh(hSh"]qsh])qt}qu(h'Uh0}qv(h2]h3]h4]h5]h7]uh(hph"]qwhb)qx}qy(h'Uh0}qz(h5]q{Uid2q|ah4]h2]h3]h7]Urefidhuh(hth"]q}hCXSetsq~q}q(h'XSetsqh(hxubah.hmubah.hnubah.houbeubaubcdocutils.nodes target q)q}q(h'Uh(h%h)U qh.Utargetqh0}q(h2]h5]qXmodule-celery.statesqah4]Uismodh3]h7]uh9Kh:hh"]ubcsphinx.addnodes index q)q}q(h'Uh(h%h)hh.Uindexqh0}q(h5]h4]h2]h3]h7]Uentries]q(UsingleqXcelery.states (module)Xmodule-celery.statesUtqauh9Kh:hh"]ubh$)q}q(h'Uh(h%h)X/home/docs/checkouts/readthedocs.org/user_builds/celery/envs/2.0-archived/local/lib/python2.7/site-packages/celery-2.0.3-py2.7.egg/celery/states.py:docstring of celery.statesqh.h/h0}q(h2]h3]h4]h5]qh ah7]qh auh9Kh:hh"]q(h<)q}q(h'hlh(hh)hh.h@h0}q(h5]h4]h2]h3]h7]Urefidqhguh9Kh:hh"]qhCXStatesqq}q(h'hlh(hubaubh)q}q(h'Uh(hh)hh.hh0}q(h5]h4]h2]h3]h7]Uentries]q(hX!PENDING (in module celery.states)h Utqauh9Nh:hh"]ubcsphinx.addnodes desc q)q}q(h'Uh(hh)hh.Udescqh0}q(UnoindexqUdomainqXpyh5]h4]h2]h3]h7]UobjtypeqXdataqUdesctypeqhuh9Nh:hh"]q(csphinx.addnodes desc_signature q)q}q(h'XPENDINGqh(hh)hh.Udesc_signatureqh0}q(h5]qh aUmoduleqX celery.statesqh4]h2]h3]h7]qh aUfullnameqhUclassqUUfirstquh9Kh:hh"]q(csphinx.addnodes desc_addname q)q}q(h'Xcelery.states.h(hh)hh.U desc_addnameqh0}q(h2]h3]h4]h5]h7]uh9Kh:hh"]qhCXcelery.states.qŅq}q(h'Uh(hubaubcsphinx.addnodes desc_name q)q}q(h'hh(hh)hh.U desc_nameqh0}q(h2]h3]h4]h5]h7]uh9Kh:hh"]qhCXPENDINGq΅q}q(h'Uh(hubaubeubcsphinx.addnodes desc_content q)q}q(h'Uh(hh)hh.U desc_contentqh0}q(h2]h3]h4]h5]h7]uh9Kh:hh"]qh])q}q(h'X)Task is waiting for execution or unknown.qh(hh)hh.hnh0}q(h2]h3]h4]h5]h7]uh9Kh:hh"]qhCX)Task is waiting for execution or unknown.q܅q}q(h'hh(hubaubaubeubh)q}q(h'Uh(hh)hh.hh0}q(h5]h4]h2]h3]h7]Uentries]q(hX!STARTED (in module celery.states)hUtqauh9Nh:hh"]ubh)q}q(h'Uh(hh)hh.hh0}q(hhXpyh5]h4]h2]h3]h7]hXdataqhhuh9Nh:hh"]q(h)q}q(h'XSTARTEDqh(hh)hh.hh0}q(h5]qhahhh4]h2]h3]h7]qhahhhUhuh9K h:hh"]q(h)q}q(h'Xcelery.states.h(hh)hh.hh0}q(h2]h3]h4]h5]h7]uh9K h:hh"]qhCXcelery.states.qq}q(h'Uh(hubaubh)q}q(h'hh(hh)hh.hh0}q(h2]h3]h4]h5]h7]uh9K h:hh"]qhCXSTARTEDqq}q(h'Uh(hubaubeubh)q}q(h'Uh(hh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K h:hh"]rh])r}r(h'XTask has been started.rh(hh)hh.hnh0}r(h2]h3]h4]h5]h7]uh9K h:hh"]rhCXTask has been started.rr}r (h'jh(jubaubaubeubh)r }r (h'Uh(hh)hh.hh0}r (h5]h4]h2]h3]h7]Uentries]r (hX!SUCCESS (in module celery.states)hUtrauh9Nh:hh"]ubh)r}r(h'Uh(hh)hh.hh0}r(hhXpyh5]h4]h2]h3]h7]hXdatarhjuh9Nh:hh"]r(h)r}r(h'XSUCCESSrh(jh)hh.hh0}r(h5]rhahhh4]h2]h3]h7]rhahjhUhuh9Kh:hh"]r(h)r}r(h'Xcelery.states.h(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXcelery.states.rr }r!(h'Uh(jubaubh)r"}r#(h'jh(jh)hh.hh0}r$(h2]h3]h4]h5]h7]uh9Kh:hh"]r%hCXSUCCESSr&r'}r((h'Uh(j"ubaubeubh)r)}r*(h'Uh(jh)hh.hh0}r+(h2]h3]h4]h5]h7]uh9Kh:hh"]r,h])r-}r.(h'X$Task has been successfully executed.r/h(j)h)hh.hnh0}r0(h2]h3]h4]h5]h7]uh9Kh:hh"]r1hCX$Task has been successfully executed.r2r3}r4(h'j/h(j-ubaubaubeubh)r5}r6(h'Uh(hh)hh.hh0}r7(h5]h4]h2]h3]h7]Uentries]r8(hX!FAILURE (in module celery.states)hUtr9auh9Nh:hh"]ubh)r:}r;(h'Uh(hh)hh.hh0}r<(hhXpyh5]h4]h2]h3]h7]hXdatar=hj=uh9Nh:hh"]r>(h)r?}r@(h'XFAILURErAh(j:h)hh.hh0}rB(h5]rChahhh4]h2]h3]h7]rDhahjAhUhuh9Kh:hh"]rE(h)rF}rG(h'Xcelery.states.h(j?h)hh.hh0}rH(h2]h3]h4]h5]h7]uh9Kh:hh"]rIhCXcelery.states.rJrK}rL(h'Uh(jFubaubh)rM}rN(h'jAh(j?h)hh.hh0}rO(h2]h3]h4]h5]h7]uh9Kh:hh"]rPhCXFAILURErQrR}rS(h'Uh(jMubaubeubh)rT}rU(h'Uh(j:h)hh.hh0}rV(h2]h3]h4]h5]h7]uh9Kh:hh"]rWh])rX}rY(h'X#Task execution resulted in failure.rZh(jTh)hh.hnh0}r[(h2]h3]h4]h5]h7]uh9Kh:hh"]r\hCX#Task execution resulted in failure.r]r^}r_(h'jZh(jXubaubaubeubh)r`}ra(h'Uh(hh)hh.hh0}rb(h5]h4]h2]h3]h7]Uentries]rc(hXRETRY (in module celery.states)hUtrdauh9Nh:hh"]ubh)re}rf(h'Uh(hh)hh.hh0}rg(hhXpyh5]h4]h2]h3]h7]hXdatarhhjhuh9Nh:hh"]ri(h)rj}rk(h'XRETRYrlh(jeh)hh.hh0}rm(h5]rnhahhh4]h2]h3]h7]rohahjlhUhuh9Kh:hh"]rp(h)rq}rr(h'Xcelery.states.h(jjh)hh.hh0}rs(h2]h3]h4]h5]h7]uh9Kh:hh"]rthCXcelery.states.rurv}rw(h'Uh(jqubaubh)rx}ry(h'jlh(jjh)hh.hh0}rz(h2]h3]h4]h5]h7]uh9Kh:hh"]r{hCXRETRYr|r}}r~(h'Uh(jxubaubeubh)r}r(h'Uh(jeh)hh.hh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rh])r}r(h'XTask is being retried.rh(jh)hh.hnh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXTask is being retried.rr}r(h'jh(jubaubaubeubh)r}r(h'Uh(hh)hh.hh0}r(h5]h4]h2]h3]h7]Uentries]r(hX!REVOKED (in module celery.states)hUtrauh9Nh:hh"]ubh)r}r(h'Uh(hh)hh.hh0}r(hhXpyh5]h4]h2]h3]h7]hXdatarhjuh9Nh:hh"]r(h)r}r(h'XREVOKEDrh(jh)hh.hh0}r(h5]rhahhh4]h2]h3]h7]rhahjhUhuh9Kh:hh"]r(h)r}r(h'Xcelery.states.h(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXcelery.states.rr}r(h'Uh(jubaubh)r}r(h'jh(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXREVOKEDrr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rh])r}r(h'XTask has been revoked.rh(jh)hh.hnh0}r(h2]h3]h4]h5]h7]uh9Kh:hh"]rhCXTask has been revoked.rr}r(h'jh(jubaubaubeubeubh$)r}r(h'Uh(h%h)hh.h/h0}r(h2]h3]h4]h5]rhah7]rh auh9Kh:hh"]r(h<)r}r(h'hh(jh)hh.h@h0}r(h5]h4]h2]h3]h7]hh|uh9Kh:hh"]rhCXSetsrr}r(h'hh(jubaubh)r}r(h'Uh(jh)hh.hh0}r(h5]h4]h2]h3]h7]Uentries]r(hX&READY_STATES (in module celery.states)hUtrauh9Nh:hh"]ubh)r}r(h'Uh(jh)hh.hh0}r(hhXpyh5]h4]h2]h3]h7]hXdatarhjuh9Nh:hh"]r(h)r}r(h'X READY_STATESrh(jh)hh.hh0}r(h5]rhahhh4]h2]h3]h7]rhahjhUhuh9K"h:hh"]r(h)r}r(h'Xcelery.states.h(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K"h:hh"]rhCXcelery.states.rr}r(h'Uh(jubaubh)r}r(h'jh(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K"h:hh"]rhCX READY_STATESrr}r(h'Uh(jubaubeubh)r}r(h'Uh(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K"h:hh"]rh])r}r(h'XCSet of states meaning the task result is ready (has been executed).rh(jh)hh.hnh0}r(h2]h3]h4]h5]h7]uh9K!h:hh"]rhCXCSet of states meaning the task result is ready (has been executed).rr}r(h'jh(jubaubaubeubh)r}r(h'Uh(jh)hh.hh0}r(h5]h4]h2]h3]h7]Uentries]r(hX(UNREADY_STATES (in module celery.states)hUtrauh9Nh:hh"]ubh)r}r(h'Uh(jh)hh.hh0}r(hhXpyh5]h4]h2]h3]h7]hXdatarhjuh9Nh:hh"]r(h)r}r(h'XUNREADY_STATESrh(jh)hh.hh0}r(h5]rhahhh4]h2]h3]h7]rhahjhUhuh9K&h:hh"]r(h)r}r(h'Xcelery.states.h(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K&h:hh"]rhCXcelery.states.rr}r(h'Uh(jubaubh)r}r(h'jh(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K&h:hh"]r hCXUNREADY_STATESr r }r (h'Uh(jubaubeubh)r }r(h'Uh(jh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K&h:hh"]rh])r}r(h'XKSet of states meaning the task result is not ready (has not been executed).rh(j h)hh.hnh0}r(h2]h3]h4]h5]h7]uh9K%h:hh"]rhCXKSet of states meaning the task result is not ready (has not been executed).rr}r(h'jh(jubaubaubeubh)r}r(h'Uh(jh)hh.hh0}r(h5]h4]h2]h3]h7]Uentries]r(hX*EXCEPTION_STATES (in module celery.states)hUtrauh9Nh:hh"]ubh)r}r(h'Uh(jh)hh.hh0}r (hhXpyh5]h4]h2]h3]h7]hXdatar!hj!uh9Nh:hh"]r"(h)r#}r$(h'XEXCEPTION_STATESr%h(jh)hh.hh0}r&(h5]r'hahhh4]h2]h3]h7]r(hahj%hUhuh9K*h:hh"]r)(h)r*}r+(h'Xcelery.states.h(j#h)hh.hh0}r,(h2]h3]h4]h5]h7]uh9K*h:hh"]r-hCXcelery.states.r.r/}r0(h'Uh(j*ubaubh)r1}r2(h'j%h(j#h)hh.hh0}r3(h2]h3]h4]h5]h7]uh9K*h:hh"]r4hCXEXCEPTION_STATESr5r6}r7(h'Uh(j1ubaubeubh)r8}r9(h'Uh(jh)hh.hh0}r:(h2]h3]h4]h5]h7]uh9K*h:hh"]r;h])r<}r=(h'X5Set of states meaning the task returned an exception.r>h(j8h)hh.hnh0}r?(h2]h3]h4]h5]h7]uh9K)h:hh"]r@hCX5Set of states meaning the task returned an exception.rArB}rC(h'j>h(j<ubaubaubeubh)rD}rE(h'Uh(jh)hh.hh0}rF(h5]h4]h2]h3]h7]Uentries]rG(hX*PROPAGATE_STATES (in module celery.states)hUtrHauh9Nh:hh"]ubh)rI}rJ(h'Uh(jh)hh.hh0}rK(hhXpyh5]h4]h2]h3]h7]hXdatarLhjLuh9Nh:hh"]rM(h)rN}rO(h'XPROPAGATE_STATESrPh(jIh)hh.hh0}rQ(h5]rRhahhh4]h2]h3]h7]rShahjPhUhuh9K.h:hh"]rT(h)rU}rV(h'Xcelery.states.h(jNh)hh.hh0}rW(h2]h3]h4]h5]h7]uh9K.h:hh"]rXhCXcelery.states.rYrZ}r[(h'Uh(jUubaubh)r\}r](h'jPh(jNh)hh.hh0}r^(h2]h3]h4]h5]h7]uh9K.h:hh"]r_hCXPROPAGATE_STATESr`ra}rb(h'Uh(j\ubaubeubh)rc}rd(h'Uh(jIh)hh.hh0}re(h2]h3]h4]h5]h7]uh9K.h:hh"]rfh])rg}rh(h'XESet of exception states that should propagate exceptions to the user.rih(jch)hh.hnh0}rj(h2]h3]h4]h5]h7]uh9K-h:hh"]rkhCXESet of exception states that should propagate exceptions to the user.rlrm}rn(h'jih(jgubaubaubeubh)ro}rp(h'Uh(jh)hh.hh0}rq(h5]h4]h2]h3]h7]Uentries]rr(hX$ALL_STATES (in module celery.states)h Utrsauh9Nh:hh"]ubh)rt}ru(h'Uh(jh)hh.hh0}rv(hhXpyh5]h4]h2]h3]h7]hXdatarwhjwuh9Nh:hh"]rx(h)ry}rz(h'X ALL_STATESr{h(jth)hh.hh0}r|(h5]r}h ahhh4]h2]h3]h7]r~h ahj{hUhuh9K2h:hh"]r(h)r}r(h'Xcelery.states.h(jyh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K2h:hh"]rhCXcelery.states.rr}r(h'Uh(jubaubh)r}r(h'j{h(jyh)hh.hh0}r(h2]h3]h4]h5]h7]uh9K2h:hh"]rhCX ALL_STATESrr}r(h'Uh(jubaubeubh)r}r(h'Uh(jth)hh.hh0}r(h2]h3]h4]h5]h7]uh9K2h:hh"]rh])r}r(h'XSet of all possible states.rh(jh)hh.hnh0}r(h2]h3]h4]h5]h7]uh9K1h:hh"]rhCXSet of all possible states.rr}r(h'jh(jubaubaubeubeubeubah'UU transformerrNU footnote_refsr}rUrefnamesr}rUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh:hU current_linerNUtransform_messagesr]rcdocutils.nodes system_message r)r}r(h'Uh0}r(h2]UlevelKh5]h4]Usourcehh3]h7]UlineKUtypeUINFOruh"]rh])r}r(h'Uh0}r(h2]h3]h4]h5]h7]uh(jh"]rhCX:Hyperlink target "module-celery.states" is not referenced.rr}r(h'Uh(jubah.hnubah.Usystem_messagerubaUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh@NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUU/var/build/user_builds/celery/checkouts/2.0-archived/docs/reference/celery.states.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]rUfile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startr KUidsr }r (hjNhj?hjh|hxhjh hh jyhghch hhj#hjhh%hjjhjhhhjh!hHhhuUsubstitution_namesr }r h.h:h0}r(h2]h5]h4]Usourceh,h3]h7]uU footnotesr]rUrefidsr}rub.PKHDD+<:celery-2.0-archived/.doctrees/cookbook/daemonizing.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xlaunchd (os x)qNXexample django configurationqNX supervisordqXrunning celeryd as a daemonq NXcontrib/debian/init.d/q Xexample configurationq NXinit script: celerydq NXavailable optionsq NXtroubleshootingqNX$start-stop-daemon (debian/ubuntu/++)qNXinit script: celerybeatqNX contrib/mac/qXcontrib/supervisord/qUcontentsqNuUsubstitution_defsq}qUparse_messagesq]q(cdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUU referencedq Khh)q!}q"(hUhh)q#}q$(hUhh)q%}q&(hUhhUsourceq'cdocutils.nodes reprunicode q(XR/var/build/user_builds/celery/checkouts/2.0-archived/docs/cookbook/daemonizing.rstq)q*}q+bUtagnameq,Usectionq-U attributesq.}q/(Udupnamesq0]Uclassesq1]Ubackrefsq2]Uidsq3]q4Urunning-celeryd-as-a-daemonq5aUnamesq6]q7h auUlineq8KUdocumentq9hUchildrenq:]q;(cdocutils.nodes title q<)q=}q>(hXRunning celeryd as a daemonq?hh%h'h*h,Utitleq@h.}qA(h0]h1]h2]h3]h6]uh8Kh9hh:]qBcdocutils.nodes Text qCXRunning celeryd as a daemonqDqE}qF(hh?hh=ubaubcdocutils.nodes paragraph qG)qH}qI(hXVCelery does not daemonize itself, please use one of the following daemonization tools.qJhh%h'h*h,U paragraphqKh.}qL(h0]h1]h2]h3]h6]uh8Kh9hh:]qMhCXVCelery does not daemonize itself, please use one of the following daemonization tools.qNqO}qP(hhJhhHubaubcdocutils.nodes topic qQ)qR}qS(hUhh%h'h*h,UtopicqTh.}qU(h0]h1]qV(UcontentsqWUlocalqXeh2]h3]qYUcontentsqZah6]q[hauh8K h9hh:]q\cdocutils.nodes bullet_list q])q^}q_(hUhhRh'Nh,U bullet_listq`h.}qa(h0]h1]h2]h3]h6]uh8Nh9hh:]qb(cdocutils.nodes list_item qc)qd}qe(hUh.}qf(h0]h1]h2]h3]h6]uhh^h:]qg(hG)qh}qi(hUh.}qj(h0]h1]h2]h3]h6]uhhdh:]qkcdocutils.nodes reference ql)qm}qn(hUh.}qo(h3]qpUid5qqah2]h0]h1]h6]UrefidUstart-stop-daemon-debian-ubuntuqruhhhh:]qshCX$start-stop-daemon (Debian/Ubuntu/++)qtqu}qv(hX$start-stop-daemon (Debian/Ubuntu/++)qwhhmubah,U referenceqxubah,hKubh])qy}qz(hUh.}q{(h0]h1]h2]h3]h6]uhhdh:]q|(hc)q}}q~(hUh.}q(h0]h1]h2]h3]h6]uhhyh:]q(hG)q}q(hUh.}q(h0]h1]h2]h3]h6]uhh}h:]qhl)q}q(hUh.}q(h3]qUid6qah2]h0]h1]h6]UrefidUinit-script-celerydquhhh:]qhCXInit script: celerydqq}q(hXInit script: celerydqhhubah,hxubah,hKubh])q}q(hUh.}q(h0]h1]h2]h3]h6]uhh}h:]q(hc)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhG)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhl)q}q(hUh.}q(h3]qUid7qah2]h0]h1]h6]UrefidUexample-configurationquhhh:]qhCXExample configurationqq}q(hXExample configurationqhhubah,hxubah,hKubah,U list_itemqubhc)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhG)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhl)q}q(hUh.}q(h3]qUid8qah2]h0]h1]h6]UrefidUexample-django-configurationquhhh:]qhCXExample Django configurationqq}q(hXExample Django configurationqhhubah,hxubah,hKubah,hubhc)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhG)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhl)q}q(hUh.}q(h3]qUid9qah2]h0]h1]h6]UrefidUavailable-optionsquhhh:]qhCXAvailable optionsqʅq}q(hXAvailable optionsqhhubah,hxubah,hKubah,hubeh,h`ubeh,hubhc)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhyh:]q(hG)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhl)q}q(hUh.}q(h3]qUid10qah2]h0]h1]h6]UrefidUinit-script-celerybeatquhhh:]qhCXInit script: celerybeatq݅q}q(hXInit script: celerybeatqhhubah,hxubah,hKubh])q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]q(hc)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhG)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhl)q}q(hUh.}q(h3]qUid11qah2]h0]h1]h6]UrefidUid1quhhh:]qhCXExample configurationqq}q(hXExample configurationqhhubah,hxubah,hKubah,hubhc)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhG)q}q(hUh.}q(h0]h1]h2]h3]h6]uhhh:]qhl)r}r(hUh.}r(h3]rUid12rah2]h0]h1]h6]UrefidUid2ruhhh:]rhCXExample Django configurationrr}r (hXExample Django configurationr hjubah,hxubah,hKubah,hubhc)r }r (hUh.}r (h0]h1]h2]h3]h6]uhhh:]rhG)r}r(hUh.}r(h0]h1]h2]h3]h6]uhj h:]rhl)r}r(hUh.}r(h3]rUid13rah2]h0]h1]h6]UrefidUid3ruhjh:]rhCXAvailable optionsrr}r(hXAvailable optionsrhjubah,hxubah,hKubah,hubeh,h`ubeh,hubhc)r}r(hUh.}r (h0]h1]h2]h3]h6]uhhyh:]r!hG)r"}r#(hUh.}r$(h0]h1]h2]h3]h6]uhjh:]r%hl)r&}r'(hUh.}r((h3]r)Uid14r*ah2]h0]h1]h6]UrefidUtroubleshootingr+uhj"h:]r,hCXTroubleshootingr-r.}r/(hXTroubleshootingr0hj&ubah,hxubah,hKubah,hubeh,h`ubeh,hubhc)r1}r2(hUh.}r3(h0]h1]h2]h3]h6]uhh^h:]r4hG)r5}r6(hUh.}r7(h0]h1]h2]h3]h6]uhj1h:]r8hl)r9}r:(hUh.}r;(h3]r<Uid15r=ah2]h0]h1]h6]UrefidU supervisordr>uhj5h:]r?hCX supervisordr@rA}rB(hUhj9ubah,hxubah,hKubah,hubhc)rC}rD(hUh.}rE(h0]h1]h2]h3]h6]uhh^h:]rFhG)rG}rH(hUh.}rI(h0]h1]h2]h3]h6]uhjCh:]rJhl)rK}rL(hUh.}rM(h3]rNUid16rOah2]h0]h1]h6]UrefidU launchd-os-xrPuhjGh:]rQhCXlaunchd (OS X)rRrS}rT(hXlaunchd (OS X)rUhjKubah,hxubah,hKubah,hubeubaubh#h)rV}rW(hUh Khh%h'h*h,h-h.}rX(h0]rYX supervisordrZah1]h2]h3]r[j>ah6]uh8Kh9hh:]r\(h<)r]}r^(hX`supervisord`_r_hjVh'h*h,h@h.}r`(h0]h1]h2]h3]h6]uh8Kh9hh:]rahl)rb}rc(hj_UresolvedrdKhj]h,hxh.}re(UnameX supervisordrfUrefurirgXhttp://supervisord.org/rhh3]h2]h0]h1]h6]uh:]rihCX supervisordrjrk}rl(hUhjbubaubaubh])rm}rn(hUhjVh'h*h,h`h.}ro(UbulletrpX*h3]h2]h0]h1]h6]uh8Kh9hh:]rqhc)rr}rs(hX`contrib/supervisord/`_ hjmh'h*h,hh.}rt(h0]h1]h2]h3]h6]uh8Nh9hh:]ruhG)rv}rw(hX`contrib/supervisord/`_rxhjrh'h*h,hKh.}ry(h0]h1]h2]h3]h6]uh8Kh:]rzhl)r{}r|(hjxjdKhjvh,hxh.}r}(UnameXcontrib/supervisord/r~jgX=http://github.com/ask/celery/tree/master/contrib/supervisord/rh3]h2]h0]h1]h6]uh:]rhCXcontrib/supervisord/rr}r(hUhj{ubaubaubaubaubcdocutils.nodes target r)r}r(hX].. _`contrib/supervisord/`: http://github.com/ask/celery/tree/master/contrib/supervisord/h KhjVh'h*h,Utargetrh.}r(jgjh3]rUcontrib-supervisordrah2]h0]h1]h6]rhauh8Kh9hh:]ubj)r}r(hX*.. _`supervisord`: http://supervisord.org/h KhjVh'h*h,jh.}r(jgjhh3]rUid4rah2]h0]h1]h6]rjZauh8Kh9hh:]ubeubh)r}r(hUhh%h'h*h,h-h.}r(h0]h1]h2]h3]rjPah6]rhauh8Kh9hh:]r(h<)r}r(hjUhjh'h*h,h@h.}r(h3]h2]h0]h1]h6]UrefidrjOuh8Kh9hh:]rhCXlaunchd (OS X)rr}r(hjUhjubaubh])r}r(hUhjh'h*h,h`h.}r(jpX*h3]h2]h0]h1]h6]uh8Kh9hh:]rhc)r}r(hX`contrib/mac/`_ hjh'h*h,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rhG)r}r(hX`contrib/mac/`_rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh:]rhl)r}r(hjjdKhjh,hxh.}r(UnameX contrib/mac/rjgX5http://github.com/ask/celery/tree/master/contrib/mac/rh3]h2]h0]h1]h6]uh:]rhCX contrib/mac/rr}r(hUhjubaubaubaubaubj)r}r(hXM.. _`contrib/mac/`: http://github.com/ask/celery/tree/master/contrib/mac/h Khjh'h*h,jh.}r(jgjh3]rU contrib-macrah2]h0]h1]h6]rhauh8Kh9hh:]ubeubeubh'h*h,h-h.}r(h0]h1]h2]h3]rhrah6]rhauh8K h9hh:]r(h<)r}r(hhwhh#h'h*h,h@h.}r(h3]h2]h0]h1]h6]jhquh8K h9hh:]rhCX$start-stop-daemon (Debian/Ubuntu/++)rr}r(hhwhjubaubhG)r}r(hXSee the `contrib/debian/init.d/`_ directory in the celery distribution, this directory contains init scripts for celeryd and celerybeat.hh#h'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh9hh:]r(hCXSee the rr}r(hXSee the hjubhl)r}r(hX`contrib/debian/init.d/`_jdKhjh,hxh.}r(UnameXcontrib/debian/init.d/rjgX8http://github.com/ask/celery/tree/master/contrib/debian/rh3]h2]h0]h1]h6]uh:]rhCXcontrib/debian/init.d/rr}r(hUhjubaubhCXg directory in the celery distribution, this directory contains init scripts for celeryd and celerybeat.rr}r(hXg directory in the celery distribution, this directory contains init scripts for celeryd and celerybeat.hjubeubhG)r}r(hX9These scripts are configured in ``/etc/default/celeryd``.rhh#h'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh9hh:]r(hCX These scripts are configured in rr}r(hX These scripts are configured in hjubcdocutils.nodes literal r)r}r(hX``/etc/default/celeryd``h.}r(h0]h1]h2]h3]h6]uhjh:]rhCX/etc/default/celerydrr}r(hUhjubah,UliteralrubhCX.r}r(hX.hjubeubj)r}r(hXZ.. _`contrib/debian/init.d/`: http://github.com/ask/celery/tree/master/contrib/debian/h Khh#h'h*h,jh.}r(jgjh3]rUcontrib-debian-init-drah2]h0]h1]h6]rh auh8Kh9hh:]ubh)r}r(hUhh#h'h*h,h-h.}r(h0]h1]h2]h3]rhah6]rh auh8Kh9hh:]r(h<)r}r(hhhjh'h*h,h@h.}r(h3]h2]h0]h1]h6]jhuh8Kh9hh:]rhCXInit script: celerydrr}r(hhhjubaubcdocutils.nodes field_list r)r}r(hUhjh'h*h,U field_listrh.}r(h0]h1]h2]h3]h6]uh8Kh9hh:]r(cdocutils.nodes field r)r}r(hUhjh'h*h,Ufieldr h.}r (h0]h1]h2]h3]h6]uh8Kh9hh:]r (cdocutils.nodes field_name r )r }r(hXUsagerh.}r(h0]h1]h2]h3]h6]uhjh:]rhCXUsagerr}r(hjhj ubah,U field_namerubcdocutils.nodes field_body r)r}r(hXL``/etc/init.d/celeryd {start|stop|force-reload|restart|try-restart|status}``rh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hjhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh:]rj)r }r!(hjh.}r"(h0]h1]h2]h3]h6]uhjh:]r#hCXH/etc/init.d/celeryd {start|stop|force-reload|restart|try-restart|status}r$r%}r&(hUhj ubah,jubaubah,U field_bodyr'ubeubj)r(}r)(hUhjh'h*h,j h.}r*(h0]h1]h2]h3]h6]uh8Kh9hh:]r+(j )r,}r-(hXConfiguration filer.h.}r/(h0]h1]h2]h3]h6]uhj(h:]r0hCXConfiguration filer1r2}r3(hj.hj,ubah,jubj)r4}r5(hX/etc/default/celeryd h.}r6(h0]h1]h2]h3]h6]uhj(h:]r7hG)r8}r9(hX/etc/default/celerydr:hj4h'h*h,hKh.}r;(h0]h1]h2]h3]h6]uh8Kh:]r<hCX/etc/default/celerydr=r>}r?(hj:hj8ubaubah,j'ubeubeubhG)r@}rA(hXuTo configure celeryd you probably need to at least tell it where to chdir when it starts (to find your celeryconfig).rBhjh'h*h,hKh.}rC(h0]h1]h2]h3]h6]uh8Kh9hh:]rDhCXuTo configure celeryd you probably need to at least tell it where to chdir when it starts (to find your celeryconfig).rErF}rG(hjBhj@ubaubh)rH}rI(hUh Khjh'h*h,h-h.}rJ(h0]rKXexample configurationrLah1]h2]h3]rMhah6]uh8K!h9hh:]rN(h<)rO}rP(hhhjHh'h*h,h@h.}rQ(h3]h2]h0]h1]h6]jhuh8K!h9hh:]rRhCXExample configurationrSrT}rU(hhhjOubaubhG)rV}rW(hX6This is an example configuration for a Python project.rXhjHh'h*h,hKh.}rY(h0]h1]h2]h3]h6]uh8K#h9hh:]rZhCX6This is an example configuration for a Python project.r[r\}r](hjXhjVubaubhG)r^}r_(hX``/etc/default/celeryd``::r`hjHh'h*h,hKh.}ra(h0]h1]h2]h3]h6]uh8K%h9hh:]rb(j)rc}rd(hX``/etc/default/celeryd``h.}re(h0]h1]h2]h3]h6]uhj^h:]rfhCX/etc/default/celerydrgrh}ri(hUhjcubah,jubhCX:rj}rk(hX:hj^ubeubcdocutils.nodes literal_block rl)rm}rn(hX# Where to chdir at start. CELERYD_CHDIR="/opt/Myproject/" # Extra arguments to celeryd CELERYD_OPTS="--time-limit 300" # Name of the celery config module.# CELERY_CONFIG_MODULE="celeryconfig"hjHh'h*h,U literal_blockroh.}rp(U xml:spacerqUpreserverrh3]h2]h0]h1]h6]uh8K'h9hh:]rshCX# Where to chdir at start. CELERYD_CHDIR="/opt/Myproject/" # Extra arguments to celeryd CELERYD_OPTS="--time-limit 300" # Name of the celery config module.# CELERY_CONFIG_MODULE="celeryconfig"rtru}rv(hUhjmubaubeubh)rw}rx(hUh Khjh'h*h,h-h.}ry(h0]rzXexample django configurationr{ah1]h2]h3]r|hah6]uh8K1h9hh:]r}(h<)r~}r(hhhjwh'h*h,h@h.}r(h3]h2]h0]h1]h6]jhuh8K1h9hh:]rhCXExample Django configurationrr}r(hhhj~ubaubhG)r}r(hXDThis is an example configuration for those using ``django-celery``::rhjwh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8K3h9hh:]r(hCX1This is an example configuration for those using rr}r(hX1This is an example configuration for those using hjubj)r}r(hX``django-celery``h.}r(h0]h1]h2]h3]h6]uhjh:]rhCX django-celeryrr}r(hUhjubah,jubhCX:r}r(hX:hjubeubjl)r}r(hX# Where the Django project is. CELERYD_CHDIR="/opt/Project/" # Path to celeryd CELERYD="/opt/Project/manage.py celeryd" # Name of the projects settings module. export DJANGO_SETTINGS_MODULE="settings"hjwh'h*h,joh.}r(jqjrh3]h2]h0]h1]h6]uh8K5h9hh:]rhCX# Where the Django project is. CELERYD_CHDIR="/opt/Project/" # Path to celeryd CELERYD="/opt/Project/manage.py celeryd" # Name of the projects settings module. export DJANGO_SETTINGS_MODULE="settings"rr}r(hUhjubaubeubh)r}r(hUh Khjh'h*h,h-h.}r(h0]rXavailable optionsrah1]h2]h3]rhah6]uh8K?h9hh:]r(h<)r}r(hhhjh'h*h,h@h.}r(h3]h2]h0]h1]h6]jhuh8K?h9hh:]rhCXAvailable optionsrr}r(hhhjubaubh])r}r(hUhjh'h*h,h`h.}r(jpX*h3]h2]h0]h1]h6]uh8KAh9hh:]r(hc)r}r(hXSCELERYD_OPTS Additional arguments to celeryd, see ``celeryd --help`` for a list. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rcdocutils.nodes definition_list r)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rcdocutils.nodes definition_list_item r)r}r(hXQCELERYD_OPTS Additional arguments to celeryd, see ``celeryd --help`` for a list. hjh'h*h,Udefinition_list_itemrh.}r(h0]h1]h2]h3]h6]uh8KBh:]r(cdocutils.nodes term r)r}r(hX CELERYD_OPTSrhjh'h*h,Utermrh.}r(h0]h1]h2]h3]h6]uh8KBh:]rhCX CELERYD_OPTSrr}r(hjhjubaubcdocutils.nodes definition r)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hXCAdditional arguments to celeryd, see ``celeryd --help`` for a list.hjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8KBh:]r(hCX%Additional arguments to celeryd, see rr}r(hX%Additional arguments to celeryd, see hjubj)r}r(hX``celeryd --help``h.}r(h0]h1]h2]h3]h6]uhjh:]rhCXceleryd --helprr}r(hUhjubah,jubhCX for a list.rr}r(hX for a list.hjubeubah,U definitionrubeubah,Udefinition_listrubaubhc)r}r(hXUCELERYD_CHDIR Path to chdir at start. Default is to stay in the current directory. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rj)r}r(hXSCELERYD_CHDIR Path to chdir at start. Default is to stay in the current directory. hjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8KEh:]r(j)r}r(hX CELERYD_CHDIRrhjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8KEh:]rhCX CELERYD_CHDIRrr}r(hjhjubaubj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hXDPath to chdir at start. Default is to stay in the current directory.rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8KEh:]rhCXDPath to chdir at start. Default is to stay in the current directory.rr}r(hjhjubaubah,jubeubah,jubaubhc)r}r(hXNCELERYD_PID_FILE Full path to the pidfile. Default is /var/run/celeryd.pid. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rj)r}r (hXLCELERYD_PID_FILE Full path to the pidfile. Default is /var/run/celeryd.pid. hjh'h*h,jh.}r (h0]h1]h2]h3]h6]uh8KHh:]r (j)r }r (hXCELERYD_PID_FILErhjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8KHh:]rhCXCELERYD_PID_FILErr}r(hjhj ubaubj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hX:Full path to the pidfile. Default is /var/run/celeryd.pid.rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8KHh:]rhCX:Full path to the pidfile. Default is /var/run/celeryd.pid.rr}r(hjhjubaubah,jubeubah,jubaubhc)r }r!(hXUCELERYD_LOG_FILE Full path to the celeryd logfile. Default is /var/log/celeryd.log hjh'Nh,hh.}r"(h0]h1]h2]h3]h6]uh8Nh9hh:]r#j)r$}r%(hUh.}r&(h0]h1]h2]h3]h6]uhj h:]r'j)r(}r)(hXSCELERYD_LOG_FILE Full path to the celeryd logfile. Default is /var/log/celeryd.log hj$h'h*h,jh.}r*(h0]h1]h2]h3]h6]uh8KKh:]r+(j)r,}r-(hXCELERYD_LOG_FILEr.hj(h'h*h,jh.}r/(h0]h1]h2]h3]h6]uh8KKh:]r0hCXCELERYD_LOG_FILEr1r2}r3(hj.hj,ubaubj)r4}r5(hUh.}r6(h0]h1]h2]h3]h6]uhj(h:]r7hG)r8}r9(hXAFull path to the celeryd logfile. Default is /var/log/celeryd.logr:hj4h'h*h,hKh.}r;(h0]h1]h2]h3]h6]uh8KKh:]r<hCXAFull path to the celeryd logfile. Default is /var/log/celeryd.logr=r>}r?(hj:hj8ubaubah,jubeubah,jubaubhc)r@}rA(hXCCELERYD_LOG_LEVEL Log level to use for celeryd. Default is INFO. hjh'Nh,hh.}rB(h0]h1]h2]h3]h6]uh8Nh9hh:]rCj)rD}rE(hUh.}rF(h0]h1]h2]h3]h6]uhj@h:]rGj)rH}rI(hXACELERYD_LOG_LEVEL Log level to use for celeryd. Default is INFO. hjDh'h*h,jh.}rJ(h0]h1]h2]h3]h6]uh8KNh:]rK(j)rL}rM(hXCELERYD_LOG_LEVELrNhjHh'h*h,jh.}rO(h0]h1]h2]h3]h6]uh8KNh:]rPhCXCELERYD_LOG_LEVELrQrR}rS(hjNhjLubaubj)rT}rU(hUh.}rV(h0]h1]h2]h3]h6]uhjHh:]rWhG)rX}rY(hX.Log level to use for celeryd. Default is INFO.rZhjTh'h*h,hKh.}r[(h0]h1]h2]h3]h6]uh8KNh:]r\hCX.Log level to use for celeryd. Default is INFO.r]r^}r_(hjZhjXubaubah,jubeubah,jubaubhc)r`}ra(hXCELERYD Path to the celeryd program. Default is ``celeryd``. You can point this to an virtualenv, or even use manage.py for django. hjh'Nh,hh.}rb(h0]h1]h2]h3]h6]uh8Nh9hh:]rcj)rd}re(hUh.}rf(h0]h1]h2]h3]h6]uhj`h:]rgj)rh}ri(hXCELERYD Path to the celeryd program. Default is ``celeryd``. You can point this to an virtualenv, or even use manage.py for django. hjdh'h*h,jh.}rj(h0]h1]h2]h3]h6]uh8KRh:]rk(j)rl}rm(hXCELERYDrnhjhh'h*h,jh.}ro(h0]h1]h2]h3]h6]uh8KRh:]rphCXCELERYDrqrr}rs(hjnhjlubaubj)rt}ru(hUh.}rv(h0]h1]h2]h3]h6]uhjhh:]rwhG)rx}ry(hX{Path to the celeryd program. Default is ``celeryd``. You can point this to an virtualenv, or even use manage.py for django.hjth'h*h,hKh.}rz(h0]h1]h2]h3]h6]uh8KQh:]r{(hCX(Path to the celeryd program. Default is r|r}}r~(hX(Path to the celeryd program. Default is hjxubj)r}r(hX ``celeryd``h.}r(h0]h1]h2]h3]h6]uhjxh:]rhCXcelerydrr}r(hUhjubah,jubhCXH. You can point this to an virtualenv, or even use manage.py for django.rr}r(hXH. You can point this to an virtualenv, or even use manage.py for django.hjxubeubah,jubeubah,jubaubhc)r}r(hX@CELERYD_USER User to run celeryd as. Default is current user. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rj)r}r(hX>CELERYD_USER User to run celeryd as. Default is current user. hjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8KUh:]r(j)r}r(hX CELERYD_USERrhjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8KUh:]rhCX CELERYD_USERrr}r(hjhjubaubj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hX0User to run celeryd as. Default is current user.rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8KUh:]rhCX0User to run celeryd as. Default is current user.rr}r(hjhjubaubah,jubeubah,jubaubhc)r}r(hXBCELERYD_GROUP Group to run celeryd as. Default is current user. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rj)r}r(hX@CELERYD_GROUP Group to run celeryd as. Default is current user. hjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8KXh:]r(j)r}r(hX CELERYD_GROUPrhjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8KXh:]rhCX CELERYD_GROUPrr}r(hjhjubaubj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hX1Group to run celeryd as. Default is current user.rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8KXh:]rhCX1Group to run celeryd as. Default is current user.rr}r(hjhjubaubah,jubeubah,jubaubeubeubeubh!h)r}r(hUhh#h'h*h,h-h.}r(h0]h1]h2]h3]rj+ah6]rhauh8Kh9hh:]r(h<)r}r(hj0hjh'h*h,h@h.}r(h3]h2]h0]h1]h6]jj*uh8Kh9hh:]rhCXTroubleshootingrr}r(hj0hjubaubhG)r}r(hXZIf you can't get the init scripts to work, you should try running them in *verbose mode*::hjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh9hh:]r(hCXJIf you can't get the init scripts to work, you should try running them in rr}r(hXJIf you can't get the init scripts to work, you should try running them in hjubcdocutils.nodes emphasis r)r}r(hX*verbose mode*h.}r(h0]h1]h2]h3]h6]uhjh:]rhCX verbose moderr}r(hUhjubah,UemphasisrubhCX:r}r(hX:hjubeubjl)r}r(hX!$ sh -x /etc/init.d/celeryd starthjh'h*h,joh.}r(jqjrh3]h2]h0]h1]h6]uh8Kh9hh:]rhCX!$ sh -x /etc/init.d/celeryd startrr}r(hUhjubaubhG)r}r(hX8This can reveal hints as to why the service won't start.rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh9hh:]rhCX8This can reveal hints as to why the service won't start.rr}r(hjhjubaubhG)r}r(hXAlso you will see the commands generated, so you can try to run the celeryd command manually to read the resulting error output.rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh9hh:]rhCXAlso you will see the commands generated, so you can try to run the celeryd command manually to read the resulting error output.rr}r(hjhjubaubhG)r}r(hX+For example my ``sh -x`` output does this::rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh9hh:]r(hCXFor example my rr}r(hXFor example my hjubj)r}r(hX ``sh -x``h.}r (h0]h1]h2]h3]h6]uhjh:]r hCXsh -xr r }r (hUhjubah,jubhCX output does this:rr}r(hX output does this:hjubeubjl)r}r(hX++ start-stop-daemon --start --chdir /opt/Opal/release/opal --quiet \ --oknodo --background --make-pidfile --pidfile /var/run/celeryd.pid \ --exec /opt/Opal/release/opal/manage.py celeryd -- --time-limit=300 \ -f /var/log/celeryd.log -l INFOhjh'h*h,joh.}r(jqjrh3]h2]h0]h1]h6]uh8Kh9hh:]rhCX++ start-stop-daemon --start --chdir /opt/Opal/release/opal --quiet \ --oknodo --background --make-pidfile --pidfile /var/run/celeryd.pid \ --exec /opt/Opal/release/opal/manage.py celeryd -- --time-limit=300 \ -f /var/log/celeryd.log -l INFOrr}r(hUhjubaubhG)r}r(hXcRun the celeryd command after ``--exec`` (without the ``--``) to show the actual resulting output::hjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh9hh:]r(hCXRun the celeryd command after rr}r(hXRun the celeryd command after hjubj)r}r (hX ``--exec``h.}r!(h0]h1]h2]h3]h6]uhjh:]r"hCX--execr#r$}r%(hUhjubah,jubhCX (without the r&r'}r((hX (without the hjubj)r)}r*(hX``--``h.}r+(h0]h1]h2]h3]h6]uhjh:]r,hCX--r-r.}r/(hUhj)ubah,jubhCX&) to show the actual resulting output:r0r1}r2(hX&) to show the actual resulting output:hjubeubjl)r3}r4(hXa$ /opt/Opal/release/opal/manage.py celeryd --time-limit=300 \ -f /var/log/celeryd.log -l INFOhjh'h*h,joh.}r5(jqjrh3]h2]h0]h1]h6]uh8Kh9hh:]r6hCXa$ /opt/Opal/release/opal/manage.py celeryd --time-limit=300 \ -f /var/log/celeryd.log -l INFOr7r8}r9(hUhj3ubaubeubeubh'h*h,h-h.}r:(h0]h1]h2]h3]r;hah6]r<hauh8K[h9hh:]r=(h<)r>}r?(hhhh!h'h*h,h@h.}r@(h3]h2]h0]h1]h6]jhuh8K[h9hh:]rAhCXInit script: celerybeatrBrC}rD(hhhj>ubaubj)rE}rF(hUhh!h'h*h,jh.}rG(h0]h1]h2]h3]h6]uh8K\h9hh:]rH(j)rI}rJ(hUhjEh'h*h,j h.}rK(h0]h1]h2]h3]h6]uh8K\h9hh:]rL(j )rM}rN(hXUsagerOh.}rP(h0]h1]h2]h3]h6]uhjIh:]rQhCXUsagerRrS}rT(hjOhjMubah,jubj)rU}rV(hXO``/etc/init.d/celerybeat {start|stop|force-reload|restart|try-restart|status}``rWh.}rX(h0]h1]h2]h3]h6]uhjIh:]rYhG)rZ}r[(hjWhjUh'h*h,hKh.}r\(h0]h1]h2]h3]h6]uh8K\h:]r]j)r^}r_(hjWh.}r`(h0]h1]h2]h3]h6]uhjZh:]rahCXK/etc/init.d/celerybeat {start|stop|force-reload|restart|try-restart|status}rbrc}rd(hUhj^ubah,jubaubah,j'ubeubj)re}rf(hUhjEh'h*h,j h.}rg(h0]h1]h2]h3]h6]uh8K]h9hh:]rh(j )ri}rj(hXConfiguration filerkh.}rl(h0]h1]h2]h3]h6]uhjeh:]rmhCXConfiguration filernro}rp(hjkhjiubah,jubj)rq}rr(hX1/etc/default/celerybeat or /etc/default/celeryd h.}rs(h0]h1]h2]h3]h6]uhjeh:]rthG)ru}rv(hX//etc/default/celerybeat or /etc/default/celerydrwhjqh'h*h,hKh.}rx(h0]h1]h2]h3]h6]uh8K]h:]ryhCX//etc/default/celerybeat or /etc/default/celerydrzr{}r|(hjwhjuubaubah,j'ubeubeubhh)r}}r~(hUh Khh!h'h*h,h-h.}r(h0]rj{ah1]h2]h3]rjah6]uh8Kth9hh:]r(h<)r}r(hj hj}h'h*h,h@h.}r(h3]h2]h0]h1]h6]jjuh8Kth9hh:]rhCXExample Django configurationrr}r(hj hjubaubhG)r}r(hXDThis is an example configuration for those using ``django-celery``::rhj}h'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kvh9hh:]r(hCX1This is an example configuration for those using rr}r(hX1This is an example configuration for those using hjubj)r}r(hX``django-celery``h.}r(h0]h1]h2]h3]h6]uhjh:]rhCX django-celeryrr}r(hUhjubah,jubhCX:r}r(hX:hjubeubjl)r}r(hXc# Where the Django project is. CELERYD_CHDIR="/opt/Project/" # Name of the projects settings module. DJANGO_SETTINGS_MODULE="settings" # Path to celeryd CELERYD="/opt/Project/manage.py celeryd" # Path to celerybeat CELERYBEAT="/opt/Project/manage.py celerybeat" # Extra arguments to celerybeat CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"hj}h'h*h,joh.}r(jqjrh3]h2]h0]h1]h6]uh8Kxh9hh:]rhCXc# Where the Django project is. CELERYD_CHDIR="/opt/Project/" # Name of the projects settings module. DJANGO_SETTINGS_MODULE="settings" # Path to celeryd CELERYD="/opt/Project/manage.py celeryd" # Path to celerybeat CELERYBEAT="/opt/Project/manage.py celerybeat" # Extra arguments to celerybeat CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule"rr}r(hUhjubaubeubh)r}r(hUh Khh!h'h*h,h-h.}r(h0]rjah1]h2]h3]rjah6]uh8Kh9hh:]r(h<)r}r(hjhjh'h*h,h@h.}r(h3]h2]h0]h1]h6]jjuh8Kh9hh:]rhCXAvailable optionsrr}r(hjhjubaubh])r}r(hUhjh'h*h,h`h.}r(jpX*h3]h2]h0]h1]h6]uh8Kh9hh:]r(hc)r}r(hX^CELERYBEAT_OPTS Additional arguments to celerybeat, see ``celerybeat --help`` for a list. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rj)r}r(hXZCELERYBEAT_OPTS Additional arguments to celerybeat, see ``celerybeat --help`` for a list. hjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8Kh:]r(j)r}r(hXCELERYBEAT_OPTSrhjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8Kh:]rhCXCELERYBEAT_OPTSrr}r(hjhjubaubj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hXIAdditional arguments to celerybeat, see ``celerybeat --help`` for a list.hjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh:]r(hCX(Additional arguments to celerybeat, see rr}r(hX(Additional arguments to celerybeat, see hjubj)r}r(hX``celerybeat --help``h.}r(h0]h1]h2]h3]h6]uhjh:]rhCXcelerybeat --helprr}r(hUhjubah,jubhCX for a list.rr}r(hX for a list.hjubeubah,jubeubah,jubaubhc)r}r(hXPCELERYBEAT_PIDFILE Full path to the pidfile. Default is /var/run/celeryd.pid. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rj)r}r(hXNCELERYBEAT_PIDFILE Full path to the pidfile. Default is /var/run/celeryd.pid. hjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8Kh:]r(j)r}r(hXCELERYBEAT_PIDFILErhjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8Kh:]rhCXCELERYBEAT_PIDFILErr}r(hjhjubaubj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hX:Full path to the pidfile. Default is /var/run/celeryd.pid.rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh:]rhCX:Full path to the pidfile. Default is /var/run/celeryd.pid.rr}r(hjhjubaubah,jubeubah,jubaubhc)r}r(hXWCELERYBEAT_LOGFILE Full path to the celeryd logfile. Default is /var/log/celeryd.log hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rj)r}r(hXUCELERYBEAT_LOGFILE Full path to the celeryd logfile. Default is /var/log/celeryd.log hjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8Kh:]r(j)r}r (hXCELERYBEAT_LOGFILEr hjh'h*h,jh.}r (h0]h1]h2]h3]h6]uh8Kh:]r hCXCELERYBEAT_LOGFILEr r}r(hj hjubaubj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hXAFull path to the celeryd logfile. Default is /var/log/celeryd.logrhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh:]rhCXAFull path to the celeryd logfile. Default is /var/log/celeryd.logrr}r(hjhjubaubah,jubeubah,jubaubhc)r}r(hXFCELERYBEAT_LOG_LEVEL Log level to use for celeryd. Default is INFO. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r }r!(hUh.}r"(h0]h1]h2]h3]h6]uhjh:]r#j)r$}r%(hXDCELERYBEAT_LOG_LEVEL Log level to use for celeryd. Default is INFO. hj h'h*h,jh.}r&(h0]h1]h2]h3]h6]uh8Kh:]r'(j)r(}r)(hXCELERYBEAT_LOG_LEVELr*hj$h'h*h,jh.}r+(h0]h1]h2]h3]h6]uh8Kh:]r,hCXCELERYBEAT_LOG_LEVELr-r.}r/(hj*hj(ubaubj)r0}r1(hUh.}r2(h0]h1]h2]h3]h6]uhj$h:]r3hG)r4}r5(hX.Log level to use for celeryd. Default is INFO.r6hj0h'h*h,hKh.}r7(h0]h1]h2]h3]h6]uh8Kh:]r8hCX.Log level to use for celeryd. Default is INFO.r9r:}r;(hj6hj4ubaubah,jubeubah,jubaubhc)r<}r=(hXCELERYBEAT Path to the celeryd program. Default is ``celeryd``. You can point this to an virtualenv, or even use manage.py for django. hjh'Nh,hh.}r>(h0]h1]h2]h3]h6]uh8Nh9hh:]r?j)r@}rA(hUh.}rB(h0]h1]h2]h3]h6]uhj<h:]rCj)rD}rE(hXCELERYBEAT Path to the celeryd program. Default is ``celeryd``. You can point this to an virtualenv, or even use manage.py for django. hj@h'h*h,jh.}rF(h0]h1]h2]h3]h6]uh8Kh:]rG(j)rH}rI(hX CELERYBEATrJhjDh'h*h,jh.}rK(h0]h1]h2]h3]h6]uh8Kh:]rLhCX CELERYBEATrMrN}rO(hjJhjHubaubj)rP}rQ(hUh.}rR(h0]h1]h2]h3]h6]uhjDh:]rShG)rT}rU(hX{Path to the celeryd program. Default is ``celeryd``. You can point this to an virtualenv, or even use manage.py for django.hjPh'h*h,hKh.}rV(h0]h1]h2]h3]h6]uh8Kh:]rW(hCX(Path to the celeryd program. Default is rXrY}rZ(hX(Path to the celeryd program. Default is hjTubj)r[}r\(hX ``celeryd``h.}r](h0]h1]h2]h3]h6]uhjTh:]r^hCXcelerydr_r`}ra(hUhj[ubah,jubhCXH. You can point this to an virtualenv, or even use manage.py for django.rbrc}rd(hXH. You can point this to an virtualenv, or even use manage.py for django.hjTubeubah,jubeubah,jubaubhc)re}rf(hXCCELERYBEAT_USER User to run celeryd as. Default is current user. hjh'Nh,hh.}rg(h0]h1]h2]h3]h6]uh8Nh9hh:]rhj)ri}rj(hUh.}rk(h0]h1]h2]h3]h6]uhjeh:]rlj)rm}rn(hXACELERYBEAT_USER User to run celeryd as. Default is current user. hjih'h*h,jh.}ro(h0]h1]h2]h3]h6]uh8Kh:]rp(j)rq}rr(hXCELERYBEAT_USERrshjmh'h*h,jh.}rt(h0]h1]h2]h3]h6]uh8Kh:]ruhCXCELERYBEAT_USERrvrw}rx(hjshjqubaubj)ry}rz(hUh.}r{(h0]h1]h2]h3]h6]uhjmh:]r|hG)r}}r~(hX0User to run celeryd as. Default is current user.rhjyh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh:]rhCX0User to run celeryd as. Default is current user.rr}r(hjhj}ubaubah,jubeubah,jubaubhc)r}r(hXECELERYBEAT_GROUP Group to run celeryd as. Default is current user. hjh'Nh,hh.}r(h0]h1]h2]h3]h6]uh8Nh9hh:]rj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rj)r}r(hXCCELERYBEAT_GROUP Group to run celeryd as. Default is current user. hjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8Kh:]r(j)r}r(hXCELERYBEAT_GROUPrhjh'h*h,jh.}r(h0]h1]h2]h3]h6]uh8Kh:]rhCXCELERYBEAT_GROUPrr}r(hjhjubaubj)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhG)r}r(hX1Group to run celeryd as. Default is current user.rhjh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kh:]rhCX1Group to run celeryd as. Default is current user.rr}r(hjhjubaubah,jubeubah,jubaubeubeubeubh'h*h,h-h.}r(h0]rjLah1]h2]h3]rhah6]uh8Kah9hh:]r(h<)r}r(hhhhh'h*h,h@h.}r(h3]h2]h0]h1]h6]jhuh8Kah9hh:]rhCXExample configurationrr}r(hhhjubaubhG)r}r(hX6This is an example configuration for a Python project:rhhh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Kch9hh:]rhCX6This is an example configuration for a Python project:rr}r(hjhjubaubhG)r}r(hX``/etc/default/celeryd``::rhhh'h*h,hKh.}r(h0]h1]h2]h3]h6]uh8Keh9hh:]r(j)r}r(hX``/etc/default/celeryd``h.}r(h0]h1]h2]h3]h6]uhjh:]rhCX/etc/default/celerydrr}r(hUhjubah,jubhCX:r}r(hX:hjubeubjl)r}r(hX# Where to chdir at start. CELERYD_CHDIR="/opt/Myproject/" # Extra arguments to celeryd CELERYD_OPTS="--time-limit 300" # Extra arguments to celerybeat CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule" # Name of the celery config module.# CELERY_CONFIG_MODULE="celeryconfig"hhh'h*h,joh.}r(jqjrh3]h2]h0]h1]h6]uh8Kgh9hh:]rhCX# Where to chdir at start. CELERYD_CHDIR="/opt/Myproject/" # Extra arguments to celeryd CELERYD_OPTS="--time-limit 300" # Extra arguments to celerybeat CELERYBEAT_OPTS="--schedule=/var/run/celerybeat-schedule" # Name of the celery config module.# CELERY_CONFIG_MODULE="celeryconfig"rr}r(hUhjubaubeubh'h*h,Usystem_messagerh.}r(h0]UlevelKh3]h2]rhaUsourceh*h1]h6]UlineKaUtypeUINFOruh8Kah9hh:]rhG)r}r(hUh.}r(h0]h1]h2]h3]h6]uhhh:]rhCX8Duplicate implicit target name: "example configuration".rr}r(hUhjubah,hKubaubh)r}r(hUhj}h'h*h,jh.}r(h0]UlevelKh3]h2]rjaUsourceh*h1]h6]UlineKtUtypejuh8Kth9hh:]rhG)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhCX?Duplicate implicit target name: "example django configuration".rr}r(hUhjubah,hKubaubh)r}r(hUhjh'h*h,jh.}r(h0]UlevelKh3]h2]rjaUsourceh*h1]h6]UlineKUtypejuh8Kh9hh:]rhG)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhCX4Duplicate implicit target name: "available options".rr}r(hUhjubah,hKubaubh)r}r(hUhjVh'h*h,jh.}r(h0]UlevelKh3]h2]rjaUsourceh*h1]h6]UlineKUtypejuh8Kh9hh:]rhG)r}r(hUh.}r(h0]h1]h2]h3]h6]uhjh:]rhCX.Duplicate implicit target name: "supervisord".rr}r(hUhjubah,hKubaubeUcurrent_sourcerNU decorationrNUautofootnote_startrKUnameidsr}r(hjPhNhjh h5h jh Nh hh Nhj+hhrhhhjhjhhZuh:]rh%ahUU transformerrNU footnote_refsr}rUrefnamesr}r(j]rjaj]r jajf]r jbaj~]r j{auUsymbol_footnotesr ]r Uautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh9hU current_linerNUtransform_messagesr]rUreporterrNUid_startrKU autofootnotesr]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values r or!}r"(Ufootnote_backlinksr#KUrecord_dependenciesr$NU rfc_base_urlr%Uhttp://tools.ietf.org/html/r&U tracebackr'Upep_referencesr(NUstrip_commentsr)NU toc_backlinksr*Uentryr+U language_coder,Uenr-U datestampr.NU report_levelr/KU _destinationr0NU halt_levelr1KU strip_classesr2Nh@NUerror_encoding_error_handlerr3Ubackslashreplacer4Udebugr5NUembed_stylesheetr6Uoutput_encoding_error_handlerr7Ustrictr8U sectnum_xformr9KUdump_transformsr:NU docinfo_xformr;KUwarning_streamr<NUpep_file_url_templater=Upep-%04dr>Uexit_status_levelr?KUconfigr@NUstrict_visitorrANUcloak_email_addressesrBUtrim_footnote_reference_spacerCUenvrDNUdump_pseudo_xmlrENUexpose_internalsrFNUsectsubtitle_xformrGU source_linkrHNUrfc_referencesrINUoutput_encodingrJUutf-8rKU source_urlrLNUinput_encodingrMU utf-8-sigrNU_disable_configrONU id_prefixrPUU tab_widthrQKUerror_encodingrRUUTF-8rSU_sourcerTUR/var/build/user_builds/celery/checkouts/2.0-archived/docs/cookbook/daemonizing.rstrUUgettext_compactrVU generatorrWNUdump_internalsrXNU smart_quotesrYU pep_base_urlrZUhttp://www.python.org/dev/peps/r[Usyntax_highlightr\Ulongr]Uinput_encoding_error_handlerr^j8Uauto_id_prefixr_Uidr`Udoctitle_xformraUstrip_elements_with_classesrbNU _config_filesrc]Ufile_insertion_enabledrdU raw_enabledreKU dump_settingsrfNubUsymbol_footnote_startrgKUidsrh}ri(j+jhhhZhRhhhrh#hhjPjjjhqhmjj}jjh5h%hhhhjjjjj*j&j=j9jOjKj>jVhhjjhjhjjjhjwjjhjHhh!hhuUsubstitution_namesrj}rkh,h9h.}rl(h0]h3]h2]Usourceh*h1]h6]uU footnotesrm]rnUrefidsro}rpub.PKHDDZDG G 4celery-2.0-archived/.doctrees/cookbook/index.doctreecdocutils.nodes document q)q}q(U nametypesq}qXcookbookqNsUsubstitution_defsq}qUparse_messagesq ]q Ucurrent_sourceq NU decorationq NUautofootnote_startq KUnameidsq}qhUcookbookqsUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXL/var/build/user_builds/celery/checkouts/2.0-archived/docs/cookbook/index.rstqq}qbUtagnameqUsectionqU attributesq}q (Udupnamesq!]Uclassesq"]Ubackrefsq#]Uidsq$]q%haUnamesq&]q'hauUlineq(KUdocumentq)hh]q*(cdocutils.nodes title q+)q,}q-(hXCookbookq.hhhhhUtitleq/h}q0(h!]h"]h#]h$]h&]uh(Kh)hh]q1cdocutils.nodes Text q2XCookbookq3q4}q5(hh.hh,ubaubcdocutils.nodes compound q6)q7}q8(hUhhhhhUcompoundq9h}q:(h!]h"]q;Utoctree-wrapperq)q?}q@(hUhh7hhhUtoctreeqAh}qB(UnumberedqCKU includehiddenqDhXcookbook/indexqEU titlesonlyqFUglobqGh$]h#]h!]h"]h&]UentriesqH]qI(NXcookbook/tasksqJqKNXcookbook/daemonizingqLqMeUhiddenqNU includefilesqO]qP(hJhLeUmaxdepthqQKuh(Kh]ubaubcdocutils.nodes paragraph qR)qS}qT(hX1This page contains common recipes and techniques.qUhhhhhU paragraphqVh}qW(h!]h"]h#]h$]h&]uh(K h)hh]qXh2X1This page contains common recipes and techniques.qYqZ}q[(hhUhhSubaubeubahUU transformerq\NU footnote_refsq]}q^Urefnamesq_}q`Usymbol_footnotesqa]qbUautofootnote_refsqc]qdUsymbol_footnote_refsqe]qfU citationsqg]qhh)hU current_lineqiNUtransform_messagesqj]qkUreporterqlNUid_startqmKU autofootnotesqn]qoU citation_refsqp}qqUindirect_targetsqr]qsUsettingsqt(cdocutils.frontend Values quoqv}qw(Ufootnote_backlinksqxKUrecord_dependenciesqyNU rfc_base_urlqzUhttp://tools.ietf.org/html/q{U tracebackq|Upep_referencesq}NUstrip_commentsq~NU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUL/var/build/user_builds/celery/checkouts/2.0-archived/docs/cookbook/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}qub.PKHDDZ 4celery-2.0-archived/.doctrees/cookbook/tasks.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xcreating tasksqNX.ensuring a task is only executed one at a timeqNUcontentsqNuUsubstitution_defsq }q Uparse_messagesq ]q Ucurrent_sourceq NU decorationqNUautofootnote_startqKUnameidsq}q(hUcreating-tasksqhU.ensuring-a-task-is-only-executed-one-at-a-timeqhUcontentsquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceqcdocutils.nodes reprunicode qXL/var/build/user_builds/celery/checkouts/2.0-archived/docs/cookbook/tasks.rstqq}q bUtagnameq!Usectionq"U attributesq#}q$(Udupnamesq%]Uclassesq&]Ubackrefsq']Uidsq(]q)haUnamesq*]q+hauUlineq,KUdocumentq-hh]q.(cdocutils.nodes title q/)q0}q1(hXCreating Tasksq2hhhhh!Utitleq3h#}q4(h%]h&]h']h(]h*]uh,Kh-hh]q5cdocutils.nodes Text q6XCreating Tasksq7q8}q9(hh2hh0ubaubcdocutils.nodes topic q:)q;}q<(hUhhhhh!Utopicq=h#}q>(h%]h&]q?(Ucontentsq@UlocalqAeh']h(]qBhah*]qChauh,Kh-hh]qDcdocutils.nodes bullet_list qE)qF}qG(hUhh;hNh!U bullet_listqHh#}qI(h%]h&]h']h(]h*]uh,Nh-hh]qJcdocutils.nodes list_item qK)qL}qM(hUh#}qN(h%]h&]h']h(]h*]uhhFh]qOcdocutils.nodes paragraph qP)qQ}qR(hUh#}qS(h%]h&]h']h(]h*]uhhLh]qTcdocutils.nodes reference qU)qV}qW(hUh#}qX(h(]qYUid1qZah']h%]h&]h*]UrefidhuhhQh]q[h6X.Ensuring a task is only executed one at a timeq\q]}q^(hX.Ensuring a task is only executed one at a timeq_hhVubah!U referenceq`ubah!U paragraphqaubah!U list_itemqbubaubaubh)qc}qd(hUhhhhh!h"h#}qe(h%]h&]h']h(]qfhah*]qghauh,K h-hh]qh(h/)qi}qj(hh_hhchhh!h3h#}qk(h(]h']h%]h&]h*]UrefidqlhZuh,K h-hh]qmh6X.Ensuring a task is only executed one at a timeqnqo}qp(hh_hhiubaubhP)qq}qr(hX(You can accomplish this by using a lock.qshhchhh!hah#}qt(h%]h&]h']h(]h*]uh,K h-hh]quh6X(You can accomplish this by using a lock.qvqw}qx(hhshhqubaubhP)qy}qz(hXdIn this example we'll be using the cache framework to set a lock that is accessible for all workers.q{hhchhh!hah#}q|(h%]h&]h']h(]h*]uh,Kh-hh]q}h6XdIn this example we'll be using the cache framework to set a lock that is accessible for all workers.q~q}q(hh{hhyubaubhP)q}q(hXQIt's part of an imaginary RSS feed importer called ``djangofeeds``. The task takes a feed URL as a single argument, and imports that feed into a Django model called ``Feed``. We ensure that it's not possible for two or more workers to import the same feed at the same time by setting a cache key consisting of the md5sum of the feed URL.hhchhh!hah#}q(h%]h&]h']h(]h*]uh,Kh-hh]q(h6X3It's part of an imaginary RSS feed importer called qq}q(hX3It's part of an imaginary RSS feed importer called hhubcdocutils.nodes literal q)q}q(hX``djangofeeds``h#}q(h%]h&]h']h(]h*]uhhh]qh6X djangofeedsqq}q(hUhhubah!Uliteralqubh6Xc. The task takes a feed URL as a single argument, and imports that feed into a Django model called qq}q(hXc. The task takes a feed URL as a single argument, and imports that feed into a Django model called hhubh)q}q(hX``Feed``h#}q(h%]h&]h']h(]h*]uhhh]qh6XFeedqq}q(hUhhubah!hubh6X. We ensure that it's not possible for two or more workers to import the same feed at the same time by setting a cache key consisting of the md5sum of the feed URL.qq}q(hX. We ensure that it's not possible for two or more workers to import the same feed at the same time by setting a cache key consisting of the md5sum of the feed URL.hhubeubhP)q}q(hXcThe cache key expires after some time in case something unexpected happens (you never know, right?)qhhchhh!hah#}q(h%]h&]h']h(]h*]uh,Kh-hh]qh6XcThe cache key expires after some time in case something unexpected happens (you never know, right?)qq}q(hhhhubaubcdocutils.nodes literal_block q)q}q(hXfrom celery.task import Task from django.core.cache import cache from django.utils.hashcompat import md5_constructor as md5 from djangofeeds.models import Feed LOCK_EXPIRE = 60 * 5 # Lock expires in 5 minutes class FeedImporter(Task): name = "feed.import" def run(self, feed_url, **kwargs): logger = self.get_logger(**kwargs) # The cache key consists of the task name and the MD5 digest # of the feed URL. feed_url_digest = md5(feed_url).hexdigest() lock_id = "%s-lock-%s" % (self.name, feed_url_hexdigest) # cache.add fails if if the key already exists acquire_lock = lambda: cache.add(lock_id, "true", LOCK_EXPIRE) # memcache delete is very slow, but we have to use it to take # advantage of using add() for atomic locking release_lock = lambda: cache.delete(lock_id) logger.debug("Importing feed: %s" % feed_url) if aquire_lock(): try: feed = Feed.objects.import_feed(feed_url) finally: release_lock() return feed.url logger.debug( "Feed %s is already being imported by another worker" % ( feed_url)) returnhhchhh!U literal_blockqh#}q(UlinenosqUlanguageqXpythonU xml:spaceqUpreserveqh(]h']h%]h&]h*]uh,Kh-hh]qh6Xfrom celery.task import Task from django.core.cache import cache from django.utils.hashcompat import md5_constructor as md5 from djangofeeds.models import Feed LOCK_EXPIRE = 60 * 5 # Lock expires in 5 minutes class FeedImporter(Task): name = "feed.import" def run(self, feed_url, **kwargs): logger = self.get_logger(**kwargs) # The cache key consists of the task name and the MD5 digest # of the feed URL. feed_url_digest = md5(feed_url).hexdigest() lock_id = "%s-lock-%s" % (self.name, feed_url_hexdigest) # cache.add fails if if the key already exists acquire_lock = lambda: cache.add(lock_id, "true", LOCK_EXPIRE) # memcache delete is very slow, but we have to use it to take # advantage of using add() for atomic locking release_lock = lambda: cache.delete(lock_id) logger.debug("Importing feed: %s" % feed_url) if aquire_lock(): try: feed = Feed.objects.import_feed(feed_url) finally: release_lock() return feed.url logger.debug( "Feed %s is already being imported by another worker" % ( feed_url)) returnqq}q(hUhhubaubeubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh-hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqӈUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh3NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesqUtrim_footnote_reference_spaceqUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformqU source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourcerUL/var/build/user_builds/celery/checkouts/2.0-archived/docs/cookbook/tasks.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongr Uinput_encoding_error_handlerr hUauto_id_prefixr Uidr Udoctitle_xformr Ustrip_elements_with_classesrNU _config_filesr]rUfile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhchh;hhhZhVuUsubstitution_namesr}rh!h-h#}r(h%]h(]h']Usourcehh&]h*]uU footnotesr]rUrefidsr}rub.PKHDDy&u&uMcelery-2.0-archived/.doctrees/getting-started/first-steps-with-celery.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X supervisordqXexecuting the taskqNXfirst steps with celeryqNXcreating a simple taskq NX configurationq NX running the celery worker serverq NUcontentsq NuUsubstitution_defsq }qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU supervisordqhUexecuting-the-taskqhUfirst-steps-with-celeryqh Ucreating-a-simple-taskqh U configurationqh U running-the-celery-worker-serverqh UcontentsquUchildrenq]qcdocutils.nodes section q)q }q!(U rawsourceq"UUparentq#hUsourceq$cdocutils.nodes reprunicode q%Xe/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/first-steps-with-celery.rstq&q'}q(bUtagnameq)Usectionq*U attributesq+}q,(Udupnamesq-]Uclassesq.]Ubackrefsq/]Uidsq0]q1haUnamesq2]q3hauUlineq4KUdocumentq5hh]q6(cdocutils.nodes title q7)q8}q9(h"XFirst steps with Celeryq:h#h h$h'h)Utitleq;h+}q<(h-]h.]h/]h0]h2]uh4Kh5hh]q=cdocutils.nodes Text q>XFirst steps with Celeryq?q@}qA(h"h:h#h8ubaubcdocutils.nodes topic qB)qC}qD(h"Uh#h h$h'h)UtopicqEh+}qF(h-]h.]qG(UcontentsqHUlocalqIeh/]h0]qJhah2]qKh auh4Kh5hh]qLcdocutils.nodes bullet_list qM)qN}qO(h"Uh#hCh$Nh)U bullet_listqPh+}qQ(h-]h.]h/]h0]h2]uh4Nh5hh]qR(cdocutils.nodes list_item qS)qT}qU(h"Uh+}qV(h-]h.]h/]h0]h2]uh#hNh]qWcdocutils.nodes paragraph qX)qY}qZ(h"Uh+}q[(h-]h.]h/]h0]h2]uh#hTh]q\cdocutils.nodes reference q])q^}q_(h"Uh+}q`(h0]qaUid1qbah/]h-]h.]h2]Urefidhuh#hYh]qch>XCreating a simple taskqdqe}qf(h"XCreating a simple taskqgh#h^ubah)U referenceqhubah)U paragraphqiubah)U list_itemqjubhS)qk}ql(h"Uh+}qm(h-]h.]h/]h0]h2]uh#hNh]qnhX)qo}qp(h"Uh+}qq(h-]h.]h/]h0]h2]uh#hkh]qrh])qs}qt(h"Uh+}qu(h0]qvUid2qwah/]h-]h.]h2]Urefidhuh#hoh]qxh>X Configurationqyqz}q{(h"X Configurationq|h#hsubah)hhubah)hiubah)hjubhS)q}}q~(h"Uh+}q(h-]h.]h/]h0]h2]uh#hNh]qhX)q}q(h"Uh+}q(h-]h.]h/]h0]h2]uh#h}h]qh])q}q(h"Uh+}q(h0]qUid3qah/]h-]h.]h2]Urefidhuh#hh]qh>X Running the celery worker serverqq}q(h"X Running the celery worker serverqh#hubah)hhubah)hiubah)hjubhS)q}q(h"Uh+}q(h-]h.]h/]h0]h2]uh#hNh]qhX)q}q(h"Uh+}q(h-]h.]h/]h0]h2]uh#hh]qh])q}q(h"Uh+}q(h0]qUid4qah/]h-]h.]h2]Urefidhuh#hh]qh>XExecuting the taskqq}q(h"XExecuting the taskqh#hubah)hhubah)hiubah)hjubeubaubh)q}q(h"Uh#h h$h'h)h*h+}q(h-]h.]h/]h0]qhah2]qh auh4K h5hh]q(h7)q}q(h"hgh#hh$h'h)h;h+}q(h0]h/]h-]h.]h2]Urefidqhbuh4K h5hh]qh>XCreating a simple taskqq}q(h"hgh#hubaubhX)q}q(h"XIn this example we are creating a simple task that adds two numbers. Tasks are defined in a normal python module. The module can be named whatever you like, but the convention is to call it ``tasks.py``.h#hh$h'h)hih+}q(h-]h.]h/]h0]h2]uh4K h5hh]q(h>XIn this example we are creating a simple task that adds two numbers. Tasks are defined in a normal python module. The module can be named whatever you like, but the convention is to call it qq}q(h"XIn this example we are creating a simple task that adds two numbers. Tasks are defined in a normal python module. The module can be named whatever you like, but the convention is to call it h#hubcdocutils.nodes literal q)q}q(h"X ``tasks.py``h+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xtasks.pyqq}q(h"Uh#hubah)Uliteralqubh>X.q}q(h"X.h#hubeubhX)q}q(h"X"Our addition task looks like this:qh#hh$h'h)hih+}q(h-]h.]h/]h0]h2]uh4Kh5hh]qh>X"Our addition task looks like this:qƅq}q(h"hh#hubaubhX)q}q(h"X ``tasks.py``:qh#hh$h'h)hih+}q(h-]h.]h/]h0]h2]uh4Kh5hh]q(h)q}q(h"X ``tasks.py``h+}q(h-]h.]h/]h0]h2]uh#hh]qh>Xtasks.pyq҅q}q(h"Uh#hubah)hubh>X:q}q(h"X:h#hubeubcdocutils.nodes literal_block q)q}q(h"XIfrom celery.decorators import task @task def add(x, y): return x + yh#hh$h'h)U literal_blockqh+}q(Ulinenosq܉UlanguageqXpythonU xml:spaceqUpreserveqh0]h/]h-]h.]h2]uh4Kh5hh]qh>XIfrom celery.decorators import task @task def add(x, y): return x + yqᅁq}q(h"Uh#hubaubhX)q}q(h"X,All celery tasks are classes that inherit from the ``Task`` class. In this case we're using a decorator that wraps the add function in an appropriate class for us automatically. The full documentation on how to create tasks and task classes is in the :doc:`../userguide/tasks` part of the user guide.h#hh$h'h)hih+}q(h-]h.]h/]h0]h2]uh4Kh5hh]q(h>X3All celery tasks are classes that inherit from the q腁q}q(h"X3All celery tasks are classes that inherit from the h#hubh)q}q(h"X``Task``h+}q(h-]h.]h/]h0]h2]uh#hh]qh>XTaskqq}q(h"Uh#hubah)hubh>X class. In this case we're using a decorator that wraps the add function in an appropriate class for us automatically. The full documentation on how to create tasks and task classes is in the qq}q(h"X class. In this case we're using a decorator that wraps the add function in an appropriate class for us automatically. The full documentation on how to create tasks and task classes is in the h#hubcsphinx.addnodes pending_xref q)q}q(h"X:doc:`../userguide/tasks`qh#hh$h'h)U pending_xrefqh+}q(UreftypeXdocqUrefwarnqU reftargetqX../userguide/tasksU refdomainUh0]h/]U refexplicith-]h.]h2]UrefdocqX'getting-started/first-steps-with-celeryquh4Kh]rh)r}r(h"hh+}r(h-]h.]r(Uxrefrheh/]h0]h2]uh#hh]rh>X../userguide/tasksrr}r (h"Uh#jubah)hubaubh>X part of the user guide.r r }r (h"X part of the user guide.h#hubeubeubh)r }r(h"Uh#h h$h'h)h*h+}r(h-]h.]h/]h0]rhah2]rh auh4K%h5hh]r(h7)r}r(h"h|h#j h$h'h)h;h+}r(h0]h/]h-]h.]h2]hhwuh4K%h5hh]rh>X Configurationrr}r(h"h|h#jubaubhX)r}r(h"XkCelery is configured by using a configuration module. By default this module is called ``celeryconfig.py``.h#j h$h'h)hih+}r(h-]h.]h/]h0]h2]uh4K'h5hh]r(h>XWCelery is configured by using a configuration module. By default this module is called rr}r (h"XWCelery is configured by using a configuration module. By default this module is called h#jubh)r!}r"(h"X``celeryconfig.py``h+}r#(h-]h.]h/]h0]h2]uh#jh]r$h>Xceleryconfig.pyr%r&}r'(h"Uh#j!ubah)hubh>X.r(}r)(h"X.h#jubeubcdocutils.nodes field_list r*)r+}r,(h"Uh#j h$h'h)U field_listr-h+}r.(h-]h.]h/]h0]h2]uh4K*h5hh]r/cdocutils.nodes field r0)r1}r2(h"Uh#j+h$h'h)Ufieldr3h+}r4(h-]h.]h/]h0]h2]uh4K*h5hh]r5(cdocutils.nodes field_name r6)r7}r8(h"XNoter9h+}r:(h-]h.]h/]h0]h2]uh#j1h]r;h>XNoter<r=}r>(h"j9h#j7ubah)U field_namer?ubcdocutils.nodes field_body r@)rA}rB(h"XLThis configuration module must be on the Python path so it can be imported. h+}rC(h-]h.]h/]h0]h2]uh#j1h]rDhX)rE}rF(h"XKThis configuration module must be on the Python path so it can be imported.rGh#jAh$h'h)hih+}rH(h-]h.]h/]h0]h2]uh4K*h]rIh>XKThis configuration module must be on the Python path so it can be imported.rJrK}rL(h"jGh#jEubaubah)U field_bodyrMubeubaubhX)rN}rO(h"XYou can set a custom name for the configuration module with the ``CELERY_CONFIG_MODULE`` variable, but in these examples we use the default name.h#j h$h'h)hih+}rP(h-]h.]h/]h0]h2]uh4K-h5hh]rQ(h>X@You can set a custom name for the configuration module with the rRrS}rT(h"X@You can set a custom name for the configuration module with the h#jNubh)rU}rV(h"X``CELERY_CONFIG_MODULE``h+}rW(h-]h.]h/]h0]h2]uh#jNh]rXh>XCELERY_CONFIG_MODULErYrZ}r[(h"Uh#jUubah)hubh>X9 variable, but in these examples we use the default name.r\r]}r^(h"X9 variable, but in these examples we use the default name.h#jNubeubhX)r_}r`(h"X%Let's create our ``celeryconfig.py``.rah#j h$h'h)hih+}rb(h-]h.]h/]h0]h2]uh4K1h5hh]rc(h>XLet's create our rdre}rf(h"XLet's create our h#j_ubh)rg}rh(h"X``celeryconfig.py``h+}ri(h-]h.]h/]h0]h2]uh#j_h]rjh>Xceleryconfig.pyrkrl}rm(h"Uh#jgubah)hubh>X.rn}ro(h"X.h#j_ubeubcdocutils.nodes enumerated_list rp)rq}rr(h"Uh#j h$h'h)Uenumerated_listrsh+}rt(UsuffixruU.h0]h/]h-]UprefixrvUh.]h2]UenumtyperwUarabicrxuh4K3h5hh]ry(hS)rz}r{(h"XConfigure how we communicate with the broker:: BROKER_HOST = "localhost" BROKER_PORT = 5672 BROKER_USER = "myuser" BROKER_PASSWORD = "mypassword" BROKER_VHOST = "myvhost" h#jqh$h'h)hjh+}r|(h-]h.]h/]h0]h2]uh4Nh5hh]r}(hX)r~}r(h"X.Configure how we communicate with the broker::h#jzh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4K3h]rh>X-Configure how we communicate with the broker:rr}r(h"X-Configure how we communicate with the broker:h#j~ubaubh)r}r(h"X{BROKER_HOST = "localhost" BROKER_PORT = 5672 BROKER_USER = "myuser" BROKER_PASSWORD = "mypassword" BROKER_VHOST = "myvhost"h#jzh)hh+}r(hhh0]h/]h-]h.]h2]uh4K5h]rh>X{BROKER_HOST = "localhost" BROKER_PORT = 5672 BROKER_USER = "myuser" BROKER_PASSWORD = "mypassword" BROKER_VHOST = "myvhost"rr}r(h"Uh#jubaubeubhS)r}r(h"X$In this example we don't want to store the results of the tasks, so we'll use the simplest backend available; the AMQP backend:: CELERY_RESULT_BACKEND = "amqp" The AMQP backend is non-persistent by default, and you can only fetch the result of a task once (as it's sent as a message). h#jqh$h'h)hjh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]r(hX)r}r(h"XIn this example we don't want to store the results of the tasks, so we'll use the simplest backend available; the AMQP backend::h#jh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4K;h]rh>XIn this example we don't want to store the results of the tasks, so we'll use the simplest backend available; the AMQP backend:rr}r(h"XIn this example we don't want to store the results of the tasks, so we'll use the simplest backend available; the AMQP backend:h#jubaubh)r}r(h"XCELERY_RESULT_BACKEND = "amqp"h#jh)hh+}r(hhh0]h/]h-]h.]h2]uh4K>h]rh>XCELERY_RESULT_BACKEND = "amqp"rr}r(h"Uh#jubaubhX)r}r(h"X|The AMQP backend is non-persistent by default, and you can only fetch the result of a task once (as it's sent as a message).rh#jh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4K@h]rh>X|The AMQP backend is non-persistent by default, and you can only fetch the result of a task once (as it's sent as a message).rr}r(h"jh#jubaubeubhS)r}r(h"XFinally, we list the modules to import, that is, all the modules that contain tasks. This is so Celery knows about what tasks it can be asked to perform. We only have a single task module, ``tasks.py``, which we added earlier:: CELERY_IMPORTS = ("tasks", ) h#jqh$h'h)hjh+}r(h-]h.]h/]h0]h2]uh4Nh5hh]r(hX)r}r(h"XFinally, we list the modules to import, that is, all the modules that contain tasks. This is so Celery knows about what tasks it can be asked to perform.rh#jh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4KCh]rh>XFinally, we list the modules to import, that is, all the modules that contain tasks. This is so Celery knows about what tasks it can be asked to perform.rr}r(h"jh#jubaubhX)r}r(h"XIWe only have a single task module, ``tasks.py``, which we added earlier::h#jh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4KGh]r(h>X#We only have a single task module, rr}r(h"X#We only have a single task module, h#jubh)r}r(h"X ``tasks.py``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xtasks.pyrr}r(h"Uh#jubah)hubh>X, which we added earlier:rr}r(h"X, which we added earlier:h#jubeubh)r}r(h"XCELERY_IMPORTS = ("tasks", )h#jh)hh+}r(hhh0]h/]h-]h.]h2]uh4KIh]rh>XCELERY_IMPORTS = ("tasks", )rr}r(h"Uh#jubaubeubeubhX)r}r(h"X That's it.rh#j h$h'h)hih+}r(h-]h.]h/]h0]h2]uh4KKh5hh]rh>X That's it.rr}r(h"jh#jubaubhX)r}r(h"X;There are more options available, like how many processes you want to process work in parallel (the ``CELERY_CONCURRENCY`` setting), and we could use a persistent result store backend, but for now, this should do. For all of the options available, see the :doc:`configuration directive reference<../configuration>`.h#j h$h'h)hih+}r(h-]h.]h/]h0]h2]uh4KMh5hh]r(h>XdThere are more options available, like how many processes you want to process work in parallel (the rr}r(h"XdThere are more options available, like how many processes you want to process work in parallel (the h#jubh)r}r(h"X``CELERY_CONCURRENCY``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>XCELERY_CONCURRENCYrr}r(h"Uh#jubah)hubh>X setting), and we could use a persistent result store backend, but for now, this should do. For all of the options available, see the rr}r(h"X setting), and we could use a persistent result store backend, but for now, this should do. For all of the options available, see the h#jubh)r}r(h"X::doc:`configuration directive reference<../configuration>`rh#jh$h'h)hh+}r(UreftypeXdocrhhX../configurationU refdomainUh0]h/]U refexplicith-]h.]h2]hhuh4KMh]rh)r}r(h"jh+}r(h-]h.]r(jjeh/]h0]h2]uh#jh]rh>X!configuration directive referencerr}r(h"Uh#jubah)hubaubh>X.r}r(h"X.h#jubeubeubh)r}r(h"Uh#h h$h'h)h*h+}r(h-]h.]h/]h0]rhah2]rh auh4KTh5hh]r(h7)r}r(h"hh#jh$h'h)h;h+}r(h0]h/]h-]h.]h2]hhuh4KTh5hh]rh>X Running the celery worker serverrr}r(h"hh#jubaubhX)r}r(h"XhTo test we will run the worker server in the foreground, so we can see what's going on in the terminal::h#jh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4KVh5hh]rh>XgTo test we will run the worker server in the foreground, so we can see what's going on in the terminal:rr}r(h"XgTo test we will run the worker server in the foreground, so we can see what's going on in the terminal:h#jubaubh)r}r(h"X$ celeryd --loglevel=INFOh#jh$h'h)hh+}r (hhh0]h/]h-]h.]h2]uh4KYh5hh]r h>X$ celeryd --loglevel=INFOr r }r (h"Uh#jubaubhX)r}r(h"XHowever, in production you probably want to run the worker in the background as a daemon. To do this you need to use to tools provided by your platform, or something like `supervisord`_.h#jh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4K[h5hh]r(h>XHowever, in production you probably want to run the worker in the background as a daemon. To do this you need to use to tools provided by your platform, or something like rr}r(h"XHowever, in production you probably want to run the worker in the background as a daemon. To do this you need to use to tools provided by your platform, or something like h#jubh])r}r(h"X`supervisord`_UresolvedrKh#jh)hhh+}r(UnameX supervisordrUrefurirXhttp://supervisord.orgrh0]h/]h-]h.]h2]uh]rh>X supervisordrr}r(h"Uh#jubaubh>X.r }r!(h"X.h#jubeubhX)r"}r#(h"XTFor a complete listing of the command line options available, use the help command::h#jh$h'h)hih+}r$(h-]h.]h/]h0]h2]uh4K_h5hh]r%h>XSFor a complete listing of the command line options available, use the help command:r&r'}r((h"XSFor a complete listing of the command line options available, use the help command:h#j"ubaubh)r)}r*(h"X$ celeryd --helph#jh$h'h)hh+}r+(hhh0]h/]h-]h.]h2]uh4Kbh5hh]r,h>X$ celeryd --helpr-r.}r/(h"Uh#j)ubaubhX)r0}r1(h"XmFor info on how to run celery as standalone daemon, see :doc:`daemon mode reference<../cookbook/daemonizing>`h#jh$h'h)hih+}r2(h-]h.]h/]h0]h2]uh4Kdh5hh]r3(h>X8For info on how to run celery as standalone daemon, see r4r5}r6(h"X8For info on how to run celery as standalone daemon, see h#j0ubh)r7}r8(h"X5:doc:`daemon mode reference<../cookbook/daemonizing>`r9h#j0h$h'h)hh+}r:(UreftypeXdocr;hhX../cookbook/daemonizingU refdomainUh0]h/]U refexplicith-]h.]h2]hhuh4Kdh]r<h)r=}r>(h"j9h+}r?(h-]h.]r@(jj;eh/]h0]h2]uh#j7h]rAh>Xdaemon mode referencerBrC}rD(h"Uh#j=ubah)hubaubeubcdocutils.nodes target rE)rF}rG(h"X).. _`supervisord`: http://supervisord.orgU referencedrHKh#jh$h'h)UtargetrIh+}rJ(jjh0]rKhah/]h-]h.]h2]rLhauh4Kgh5hh]ubeubh)rM}rN(h"Uh#h h$h'h)h*h+}rO(h-]h.]h/]h0]rPhah2]rQhauh4Kjh5hh]rR(h7)rS}rT(h"hh#jMh$h'h)h;h+}rU(h0]h/]h-]h.]h2]hhuh4Kjh5hh]rVh>XExecuting the taskrWrX}rY(h"hh#jSubaubhX)rZ}r[(h"XsWhenever we want to execute our task, we can use the :meth:`~celery.task.base.Task.delay` method of the task class.h#jMh$h'h)hih+}r\(h-]h.]h/]h0]h2]uh4Klh5hh]r](h>X5Whenever we want to execute our task, we can use the r^r_}r`(h"X5Whenever we want to execute our task, we can use the h#jZubh)ra}rb(h"X$:meth:`~celery.task.base.Task.delay`rch#jZh$h'h)hh+}rd(UreftypeXmethhhXcelery.task.base.Task.delayU refdomainXpyreh0]h/]U refexplicith-]h.]h2]hhUpy:classrfNU py:modulergNuh4Klh]rhh)ri}rj(h"jch+}rk(h-]h.]rl(jjeXpy-methrmeh/]h0]h2]uh#jah]rnh>Xdelay()rorp}rq(h"Uh#jiubah)hubaubh>X method of the task class.rrrs}rt(h"X method of the task class.h#jZubeubhX)ru}rv(h"XThis is a handy shortcut to the :meth:`~celery.task.base.Task.apply_async` method which gives greater control of the task execution. Read the :doc:`Executing Tasks<../userguide/executing>` part of the user guide for more information about executing tasks.h#jMh$h'h)hih+}rw(h-]h.]h/]h0]h2]uh4Koh5hh]rx(h>X This is a handy shortcut to the ryrz}r{(h"X This is a handy shortcut to the h#juubh)r|}r}(h"X*:meth:`~celery.task.base.Task.apply_async`r~h#juh$h'h)hh+}r(UreftypeXmethhhX!celery.task.base.Task.apply_asyncU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hhjfNjgNuh4Koh]rh)r}r(h"j~h+}r(h-]h.]r(jjXpy-methreh/]h0]h2]uh#j|h]rh>X apply_async()rr}r(h"Uh#jubah)hubaubh>XD method which gives greater control of the task execution. Read the rr}r(h"XD method which gives greater control of the task execution. Read the h#juubh)r}r(h"X.:doc:`Executing Tasks<../userguide/executing>`rh#juh$h'h)hh+}r(UreftypeXdocrhhX../userguide/executingU refdomainUh0]h/]U refexplicith-]h.]h2]hhuh4Koh]rh)r}r(h"jh+}r(h-]h.]r(jjeh/]h0]h2]uh#jh]rh>XExecuting Tasksrr}r(h"Uh#jubah)hubaubh>XC part of the user guide for more information about executing tasks.rr}r(h"XC part of the user guide for more information about executing tasks.h#juubeubcdocutils.nodes doctest_block r)r}r(h"Xa>>> from tasks import add >>> add.delay(4, 4) h#jMh$Nh)U doctest_blockrh+}r(hhh0]h/]h-]h.]h2]uh4Nh5hh]rh>Xa>>> from tasks import add >>> add.delay(4, 4) rr}r(h"Uh#jubaubhX)r}r(h"XAt this point, the task has been sent to the message broker. The message broker will hold on to the task until a worker server has successfully picked it up.rh#jMh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4Kxh5hh]rh>XAt this point, the task has been sent to the message broker. The message broker will hold on to the task until a worker server has successfully picked it up.rr}r(h"jh#jubaubhX)r}r(h"X*Note:* If everything is just hanging when you execute ``delay``, please check that RabbitMQ is running, and that the user/password has access to the virtual host you configured earlier.h#jMh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4K|h5hh]r(cdocutils.nodes emphasis r)r}r(h"X*Note:*h+}r(h-]h.]h/]h0]h2]uh#jh]rh>XNote:rr}r(h"Uh#jubah)Uemphasisrubh>X0 If everything is just hanging when you execute rr}r(h"X0 If everything is just hanging when you execute h#jubh)r}r(h"X ``delay``h+}r(h-]h.]h/]h0]h2]uh#jh]rh>Xdelayrr}r(h"Uh#jubah)hubh>Xz, please check that RabbitMQ is running, and that the user/password has access to the virtual host you configured earlier.rr}r(h"Xz, please check that RabbitMQ is running, and that the user/password has access to the virtual host you configured earlier.h#jubeubhX)r}r(h"XRight now we have to check the worker log files to know what happened with the task. This is because we didn't keep the :class:`~celery.result.AsyncResult` object returned by :meth:`~celery.task.base.Task.delay`.h#jMh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>XxRight now we have to check the worker log files to know what happened with the task. This is because we didn't keep the rr}r(h"XxRight now we have to check the worker log files to know what happened with the task. This is because we didn't keep the h#jubh)r}r(h"X#:class:`~celery.result.AsyncResult`rh#jh$h'h)hh+}r(UreftypeXclasshhXcelery.result.AsyncResultU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hhjfNjgNuh4Kh]rh)r}r(h"jh+}r(h-]h.]r(jjXpy-classreh/]h0]h2]uh#jh]rh>X AsyncResultrr}r(h"Uh#jubah)hubaubh>X object returned by rr}r(h"X object returned by h#jubh)r}r(h"X$:meth:`~celery.task.base.Task.delay`rh#jh$h'h)hh+}r(UreftypeXmethhhXcelery.task.base.Task.delayU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hhjfNjgNuh4Kh]rh)r}r(h"jh+}r(h-]h.]r(jjXpy-methreh/]h0]h2]uh#jh]rh>Xdelay()rr}r(h"Uh#jubah)hubaubh>X.r}r(h"X.h#jubeubhX)r}r(h"XThe :class:`~celery.result.AsyncResult` lets us find the state of the task, wait for the task to finish, get its return value (or exception if the task failed), and more.h#jMh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>XThe rr}r(h"XThe h#jubh)r}r(h"X#:class:`~celery.result.AsyncResult`rh#jh$h'h)hh+}r(UreftypeXclasshhXcelery.result.AsyncResultU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hhjfNjgNuh4Kh]rh)r}r(h"jh+}r(h-]h.]r(jjXpy-classreh/]h0]h2]uh#jh]rh>X AsyncResultrr}r (h"Uh#jubah)hubaubh>X lets us find the state of the task, wait for the task to finish, get its return value (or exception if the task failed), and more.r r }r (h"X lets us find the state of the task, wait for the task to finish, get its return value (or exception if the task failed), and more.h#jubeubhX)r }r(h"XSo, let's execute the task again, but this time we'll keep track of the task by keeping the :class:`~celery.result.AsyncResult`::h#jMh$h'h)hih+}r(h-]h.]h/]h0]h2]uh4Kh5hh]r(h>X\So, let's execute the task again, but this time we'll keep track of the task by keeping the rr}r(h"X\So, let's execute the task again, but this time we'll keep track of the task by keeping the h#j ubh)r}r(h"X#:class:`~celery.result.AsyncResult`rh#j h$h'h)hh+}r(UreftypeXclasshhXcelery.result.AsyncResultU refdomainXpyrh0]h/]U refexplicith-]h.]h2]hhjfNjgNuh4Kh]rh)r}r(h"jh+}r(h-]h.]r(jjXpy-classreh/]h0]h2]uh#jh]rh>X AsyncResultr r!}r"(h"Uh#jubah)hubaubh>X:r#}r$(h"X:h#j ubeubh)r%}r&(h"X>>> result = add.delay(4, 4) >>> result.ready() # returns True if the task has finished processing. False >>> result.result # task is not ready, so no return value yet. None >>> result.get() # Waits until the task is done and returns the retval. 8 >>> result.result # direct access to result, doesn't re-raise errors. 8 >>> result.successful() # returns True if the task didn't end in failure. Trueh#jMh$h'h)hh+}r'(hhh0]h/]h-]h.]h2]uh4Kh5hh]r(h>X>>> result = add.delay(4, 4) >>> result.ready() # returns True if the task has finished processing. False >>> result.result # task is not ready, so no return value yet. None >>> result.get() # Waits until the task is done and returns the retval. 8 >>> result.result # direct access to result, doesn't re-raise errors. 8 >>> result.successful() # returns True if the task didn't end in failure. Truer)r*}r+(h"Uh#j%ubaubhX)r,}r-(h"XIf the task raises an exception, the return value of ``result.successful()`` will be ``False``, and ``result.result`` will contain the exception instance raised by the task.h#jMh$h'h)hih+}r.(h-]h.]h/]h0]h2]uh4Kh5hh]r/(h>X5If the task raises an exception, the return value of r0r1}r2(h"X5If the task raises an exception, the return value of h#j,ubh)r3}r4(h"X``result.successful()``h+}r5(h-]h.]h/]h0]h2]uh#j,h]r6h>Xresult.successful()r7r8}r9(h"Uh#j3ubah)hubh>X will be r:r;}r<(h"X will be h#j,ubh)r=}r>(h"X ``False``h+}r?(h-]h.]h/]h0]h2]uh#j,h]r@h>XFalserArB}rC(h"Uh#j=ubah)hubh>X, and rDrE}rF(h"X, and h#j,ubh)rG}rH(h"X``result.result``h+}rI(h-]h.]h/]h0]h2]uh#j,h]rJh>X result.resultrKrL}rM(h"Uh#jGubah)hubh>X8 will contain the exception instance raised by the task.rNrO}rP(h"X8 will contain the exception instance raised by the task.h#j,ubeubhX)rQ}rR(h"XbThat's all for now! After this you should probably read the :doc:`User Guide<../userguide/index>`.h#jMh$h'h)hih+}rS(h-]h.]h/]h0]h2]uh4Kh5hh]rT(h>X<That's all for now! After this you should probably read the rUrV}rW(h"X<That's all for now! After this you should probably read the h#jQubh)rX}rY(h"X%:doc:`User Guide<../userguide/index>`rZh#jQh$h'h)hh+}r[(UreftypeXdocr\hhX../userguide/indexU refdomainUh0]h/]U refexplicith-]h.]h2]hhuh4Kh]r]h)r^}r_(h"jZh+}r`(h-]h.]ra(jj\eh/]h0]h2]uh#jXh]rbh>X User Guidercrd}re(h"Uh#j^ubah)hubaubh>X.rf}rg(h"X.h#jQubeubeubeubah"UU transformerrhNU footnote_refsri}rjUrefnamesrk}rlj]rmjasUsymbol_footnotesrn]roUautofootnote_refsrp]rqUsymbol_footnote_refsrr]rsU citationsrt]ruh5hU current_linervNUtransform_messagesrw]rxUreporterryNUid_startrzKU autofootnotesr{]r|U citation_refsr}}r~Uindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coderUenrU datestamprNU report_levelrKU _destinationrNU halt_levelrKU strip_classesrNh;NUerror_encoding_error_handlerrUbackslashreplacerUdebugrNUembed_stylesheetrUoutput_encoding_error_handlerrUstrictrU sectnum_xformrKUdump_transformsrNU docinfo_xformrKUwarning_streamrNUpep_file_url_templaterUpep-%04drUexit_status_levelrKUconfigrNUstrict_visitorrNUcloak_email_addressesrUtrim_footnote_reference_spacerUenvrNUdump_pseudo_xmlrNUexpose_internalsrNUsectsubtitle_xformrU source_linkrNUrfc_referencesrNUoutput_encodingrUutf-8rU source_urlrNUinput_encodingrU utf-8-sigrU_disable_configrNU id_prefixrUU tab_widthrKUerror_encodingrUUTF-8rU_sourcerUe/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/first-steps-with-celery.rstrUgettext_compactrU generatorrNUdump_internalsrNU smart_quotesrU pep_base_urlrUhttp://www.python.org/dev/peps/rUsyntax_highlightrUlongrUinput_encoding_error_handlerrjUauto_id_prefixrUidrUdoctitle_xformrUstrip_elements_with_classesrNU _config_filesr]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hjFhjMhhhjhwhshhhbh^hhhj hhChh uUsubstitution_namesr}rh)h5h+}r(h-]h0]h/]Usourceh'h.]h2]uU footnotesr]rUrefidsr}rub.PKHDD00?celery-2.0-archived/.doctrees/getting-started/resources.doctreecdocutils.nodes document q)q}q(U nametypesq}q(XwikiqNXlicenseqNXfreenodeqX resourcesq NX getting helpq NX contributingq NX bug trackerq NX#celeryq X celery-usersqXircqNUcontentsqNX mailing listqNuUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hUwikiqhUlicenseqhUfreenodeqh U resourcesqh U getting-helpqh U contributingq h U bug-trackerq!h Uceleryq"hU celery-usersq#hUircq$hUcontentsq%hU mailing-listq&uUchildrenq']q(cdocutils.nodes section q))q*}q+(U rawsourceq,UUparentq-hUsourceq.cdocutils.nodes reprunicode q/XW/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/resources.rstq0q1}q2bUtagnameq3Usectionq4U attributesq5}q6(Udupnamesq7]Uclassesq8]Ubackrefsq9]Uidsq:]q;haUnamesq<]q=h auUlineq>KUdocumentq?hh']q@(cdocutils.nodes title qA)qB}qC(h,X ResourcesqDh-h*h.h1h3UtitleqEh5}qF(h7]h8]h9]h:]h<]uh>Kh?hh']qGcdocutils.nodes Text qHX ResourcesqIqJ}qK(h,hDh-hBubaubcdocutils.nodes topic qL)qM}qN(h,Uh-h*h.h1h3UtopicqOh5}qP(h7]h8]qQ(UcontentsqRUlocalqSeh9]h:]qTh%ah<]qUhauh>Kh?hh']qVcdocutils.nodes bullet_list qW)qX}qY(h,Uh-hMh.Nh3U bullet_listqZh5}q[(h7]h8]h9]h:]h<]uh>Nh?hh']q\(cdocutils.nodes list_item q])q^}q_(h,Uh5}q`(h7]h8]h9]h:]h<]uh-hXh']qa(cdocutils.nodes paragraph qb)qc}qd(h,Uh5}qe(h7]h8]h9]h:]h<]uh-h^h']qfcdocutils.nodes reference qg)qh}qi(h,Uh5}qj(h:]qkUid1qlah9]h7]h8]h<]Urefidhuh-hch']qmhHX Getting Helpqnqo}qp(h,X Getting Helpqqh-hhubah3U referenceqrubah3U paragraphqsubhW)qt}qu(h,Uh5}qv(h7]h8]h9]h:]h<]uh-h^h']qw(h])qx}qy(h,Uh5}qz(h7]h8]h9]h:]h<]uh-hth']q{hb)q|}q}(h,Uh5}q~(h7]h8]h9]h:]h<]uh-hxh']qhg)q}q(h,Uh5}q(h:]qUid2qah9]h7]h8]h<]Urefidh&uh-h|h']qhHX Mailing listqq}q(h,X Mailing listqh-hubah3hrubah3hsubah3U list_itemqubh])q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hth']qhb)q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hh']qhg)q}q(h,Uh5}q(h:]qUid3qah9]h7]h8]h<]Urefidh$uh-hh']qhHXIRCqq}q(h,XIRCqh-hubah3hrubah3hsubah3hubeh3hZubeh3hubh])q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hXh']qhb)q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hh']qhg)q}q(h,Uh5}q(h:]qUid4qah9]h7]h8]h<]Urefidh!uh-hh']qhHX Bug trackerqq}q(h,X Bug trackerqh-hubah3hrubah3hsubah3hubh])q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hXh']qhb)q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hh']qhg)q}q(h,Uh5}q(h:]qUid5qah9]h7]h8]h<]Urefidhuh-hh']qhHXWikiqq}q(h,XWikiqh-hubah3hrubah3hsubah3hubh])q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hXh']qhb)q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hh']qhg)q}q(h,Uh5}q(h:]qUid6qah9]h7]h8]h<]Urefidh uh-hh']qhHX Contributingqυq}q(h,X Contributingqh-hubah3hrubah3hsubah3hubh])q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hXh']qhb)q}q(h,Uh5}q(h7]h8]h9]h:]h<]uh-hh']qhg)q}q(h,Uh5}q(h:]qUid7qah9]h7]h8]h<]Urefidhuh-hh']qhHXLicenseqᅁq}q(h,XLicenseqh-hubah3hrubah3hsubah3hubeubaubh))q}q(h,Uh-h*h.h/Xincludes/resources.txtq煁q}qbh3h4h5}q(h7]h8]h9]h:]qhah<]qh auh>Kh?hh']q(hA)q}q(h,hqh-hh.hh3hEh5}q(h:]h9]h7]h8]h<]Urefidqhluh>Kh?hh']qhHX Getting Helpqq}q(h,hqh-hubaubh))q}q(h,Uh-hh.hh3h4h5}q(h7]h8]h9]h:]qh&ah<]qhauh>Kh?hh']q(hA)q}q(h,hh-hh.hh3hEh5}q(h:]h9]h7]h8]h<]hhuh>Kh?hh']qhHX Mailing listrr}r(h,hh-hubaubhb)r}r(h,XqFor discussions about the usage, development, and future of celery, please join the `celery-users`_ mailing list.h-hh.hh3hsh5}r(h7]h8]h9]h:]h<]uh>Kh?hh']r(hHXTFor discussions about the usage, development, and future of celery, please join the rr}r (h,XTFor discussions about the usage, development, and future of celery, please join the h-jubhg)r }r (h,X`celery-users`_Uresolvedr Kh-jh3hrh5}r (UnameX celery-usersrUrefurirX,http://groups.google.com/group/celery-users/rh:]h9]h7]h8]h<]uh']rhHX celery-usersrr}r(h,Uh-j ubaubhHX mailing list.rr}r(h,X mailing list.h-jubeubcdocutils.nodes target r)r}r(h,X@.. _`celery-users`: http://groups.google.com/group/celery-users/U referencedrKh-hh.hh3Utargetrh5}r(jjh:]rh#ah9]h7]h8]h<]rhauh>Kh?hh']ubeubh))r }r!(h,Uh-hh.hh3h4h5}r"(h7]h8]h9]h:]r#h$ah<]r$hauh>Kh?hh']r%(hA)r&}r'(h,hh-j h.hh3hEh5}r((h:]h9]h7]h8]h<]hhuh>Kh?hh']r)hHXIRCr*r+}r,(h,hh-j&ubaubhb)r-}r.(h,XWCome chat with us on IRC. The `#celery`_ channel is located at the `Freenode`_ network.h-j h.hh3hsh5}r/(h7]h8]h9]h:]h<]uh>Kh?hh']r0(hHXCome chat with us on IRC. The r1r2}r3(h,XCome chat with us on IRC. The h-j-ubhg)r4}r5(h,X `#celery`_j Kh-j-h3hrh5}r6(UnameX#celeryr7jXirc://irc.freenode.net/celeryr8h:]h9]h7]h8]h<]uh']r9hHX#celeryr:r;}r<(h,Uh-j4ubaubhHX channel is located at the r=r>}r?(h,X channel is located at the h-j-ubhg)r@}rA(h,X `Freenode`_j Kh-j-h3hrh5}rB(UnameXFreenodejXhttp://freenode.netrCh:]h9]h7]h8]h<]uh']rDhHXFreenoderErF}rG(h,Uh-j@ubaubhHX network.rHrI}rJ(h,X network.h-j-ubeubj)rK}rL(h,X,.. _`#celery`: irc://irc.freenode.net/celeryjKh-j h.hh3jh5}rM(jj8h:]rNh"ah9]h7]h8]h<]rOh auh>Kh?hh']ubj)rP}rQ(h,X#.. _`Freenode`: http://freenode.netjKh-j h.hh3jh5}rR(jjCh:]rShah9]h7]h8]h<]rThauh>Kh?hh']ubeubeubh))rU}rV(h,Uh-h*h.hh3h4h5}rW(h7]h8]h9]h:]rXh!ah<]rYh auh>Kh?hh']rZ(hA)r[}r\(h,hh-jUh.hh3hEh5}r](h:]h9]h7]h8]h<]hhuh>Kh?hh']r^hHX Bug trackerr_r`}ra(h,hh-j[ubaubhb)rb}rc(h,XIf you have any suggestions, bug reports or annoyances please report them to our issue tracker at http://github.com/ask/celery/issues/h-jUh.hh3hsh5}rd(h7]h8]h9]h:]h<]uh>Kh?hh']re(hHXbIf you have any suggestions, bug reports or annoyances please report them to our issue tracker at rfrg}rh(h,XbIf you have any suggestions, bug reports or annoyances please report them to our issue tracker at h-jbubhg)ri}rj(h,X$http://github.com/ask/celery/issues/rkh5}rl(Urefurijkh:]h9]h7]h8]h<]uh-jbh']rmhHX$http://github.com/ask/celery/issues/rnro}rp(h,Uh-jiubah3hrubeubeubh))rq}rr(h,Uh-h*h.hh3h4h5}rs(h7]h8]h9]h:]rthah<]ruhauh>Kh?hh']rv(hA)rw}rx(h,hh-jqh.hh3hEh5}ry(h:]h9]h7]h8]h<]hhuh>Kh?hh']rzhHXWikir{r|}r}(h,hh-jwubaubhb)r~}r(h,X"http://wiki.github.com/ask/celery/rh-jqh.hh3hsh5}r(h7]h8]h9]h:]h<]uh>K h?hh']rhg)r}r(h,jh5}r(Urefurijh:]h9]h7]h8]h<]uh-j~h']rhHX"http://wiki.github.com/ask/celery/rr}r(h,Uh-jubah3hrubaubeubh))r}r(h,Uh-h*h.hh3h4h5}r(h7]h8]h9]h:]rh ah<]rh auh>K#h?hh']r(hA)r}r(h,hh-jh.hh3hEh5}r(h:]h9]h7]h8]h<]hhuh>K#h?hh']rhHX Contributingrr}r(h,hh-jubaubhb)r}r(h,XIDevelopment of ``celery`` happens at Github: http://github.com/ask/celeryrh-jh.hh3hsh5}r(h7]h8]h9]h:]h<]uh>K%h?hh']r(hHXDevelopment of rr}r(h,XDevelopment of h-jubcdocutils.nodes literal r)r}r(h,X ``celery``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXceleryrr}r(h,Uh-jubah3UliteralrubhHX happens at Github: rr}r(h,X happens at Github: h-jubhg)r}r(h,Xhttp://github.com/ask/celeryrh5}r(Urefurijh:]h9]h7]h8]h<]uh-jh']rhHXhttp://github.com/ask/celeryrr}r(h,Uh-jubah3hrubeubhb)r}r(h,XYou are highly encouraged to participate in the development of ``celery``. If you don't like Github (for some reason) you're welcome to send regular patches.h-jh.hh3hsh5}r(h7]h8]h9]h:]h<]uh>K'h?hh']r(hHX?You are highly encouraged to participate in the development of rr}r(h,X?You are highly encouraged to participate in the development of h-jubj)r}r(h,X ``celery``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXceleryrr}r(h,Uh-jubah3jubhHXT. If you don't like Github (for some reason) you're welcome to send regular patches.rr}r(h,XT. If you don't like Github (for some reason) you're welcome to send regular patches.h-jubeubeubh))r}r(h,Uh-h*h.hh3h4h5}r(h7]h8]h9]h:]rhah<]rhauh>K,h?hh']r(hA)r}r(h,hh-jh.hh3hEh5}r(h:]h9]h7]h8]h<]hhuh>K,h?hh']rhHXLicenserr}r(h,hh-jubaubhb)r}r(h,XThis software is licensed under the ``New BSD License``. See the ``LICENSE`` file in the top distribution directory for the full license text.h-jh.hh3hsh5}r(h7]h8]h9]h:]h<]uh>K.h?hh']r(hHX$This software is licensed under the rr}r(h,X$This software is licensed under the h-jubj)r}r(h,X``New BSD License``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXNew BSD Licenserr}r(h,Uh-jubah3jubhHX . See the rr}r(h,X . See the h-jubj)r}r(h,X ``LICENSE``h5}r(h7]h8]h9]h:]h<]uh-jh']rhHXLICENSErr}r(h,Uh-jubah3jubhHXB file in the top distribution directory for the full license text.rr}r(h,XB file in the top distribution directory for the full license text.h-jubeubcdocutils.nodes comment r)r}r(h,X=# vim: syntax=rst expandtab tabstop=4 shiftwidth=4 shiftroundh-jh.X-internal padding after includes/resources.txtrh3Ucommentrh5}r(U xml:spacerUpreserverh:]h9]h7]h8]h<]uh>K2h?hh']rhHX=# vim: syntax=rst expandtab tabstop=4 shiftwidth=4 shiftroundrr}r(h,Uh-jubaubeubeubah,UU transformerrNU footnote_refsr}rUrefnamesr}r(j7]rj4aj]rj aXfreenode]rj@auUsymbol_footnotesr]rUautofootnote_refsr]rUsymbol_footnote_refsr]rU citationsr]rh?hU current_linerNUtransform_messagesr ]r Ureporterr NUid_startr KU autofootnotesr ]rU citation_refsr}rUindirect_targetsr]rUsettingsr(cdocutils.frontend Values ror}r(Ufootnote_backlinksrKUrecord_dependenciesrNU rfc_base_urlrUhttp://tools.ietf.org/html/rU tracebackrUpep_referencesrNUstrip_commentsrNU toc_backlinksrUentryrU language_coder Uenr!U datestampr"NU report_levelr#KU _destinationr$NU halt_levelr%KU strip_classesr&NhENUerror_encoding_error_handlerr'Ubackslashreplacer(Udebugr)NUembed_stylesheetr*Uoutput_encoding_error_handlerr+Ustrictr,U sectnum_xformr-KUdump_transformsr.NU docinfo_xformr/KUwarning_streamr0NUpep_file_url_templater1Upep-%04dr2Uexit_status_levelr3KUconfigr4NUstrict_visitorr5NUcloak_email_addressesr6Utrim_footnote_reference_spacer7Uenvr8NUdump_pseudo_xmlr9NUexpose_internalsr:NUsectsubtitle_xformr;U source_linkr<NUrfc_referencesr=NUoutput_encodingr>Uutf-8r?U source_urlr@NUinput_encodingrAU utf-8-sigrBU_disable_configrCNU id_prefixrDUU tab_widthrEKUerror_encodingrFUUTF-8rGU_sourcerHUW/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/resources.rstrIUgettext_compactrJU generatorrKNUdump_internalsrLNU smart_quotesrMU pep_base_urlrNUhttp://www.python.org/dev/peps/rOUsyntax_highlightrPUlongrQUinput_encoding_error_handlerrRj,Uauto_id_prefixrSUidrTUdoctitle_xformrUUstrip_elements_with_classesrVNU _config_filesrW]Ufile_insertion_enabledrXU raw_enabledrYKU dump_settingsrZNubUsymbol_footnote_startr[KUidsr\}r](hhhjqh!jUhjhjPh&hh jhhhhhhhhhlhhh"jKhhhh*hhh$j h%hMh#juUsubstitution_namesr^}r_h3h?h5}r`(h7]h:]h9]Usourceh1h8]h<]uU footnotesra]rbUrefidsrc}rdub.PKHDDod?*ddBcelery-2.0-archived/.doctrees/getting-started/introduction.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X clusteringqX sqlalchemyqX installationqNXfeaturesq NX introductionq NXoverviewq NXstompq X documentationq NXredisqXrabbitmqqX+operate with other languages using webhooksqX tokyo tyrantqXlatest documentationqXmongodbqX django-celeryqX&downloading and installing from sourceqNXusing the development versionqNXexampleqNUcontentsqNXamqpquUsubstitution_defsq}qUparse_messagesq]qUcurrent_sourceqNU decorationqNUautofootnote_startq KUnameidsq!}q"(hU clusteringq#hU sqlalchemyq$hU installationq%h Ufeaturesq&h U introductionq'h Uoverviewq(h Ustompq)h U documentationq*hUredisq+hUrabbitmqq,hU+operate-with-other-languages-using-webhooksq-hU tokyo-tyrantq.hUlatest-documentationq/hUmongodbq0hU django-celeryq1hU&downloading-and-installing-from-sourceq2hUusing-the-development-versionq3hUexampleq4hUcontentsq5hUamqpq6uUchildrenq7]q8cdocutils.nodes section q9)q:}q;(U rawsourceqcdocutils.nodes reprunicode q?XZ/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/introduction.rstq@qA}qBbUtagnameqCUsectionqDU attributesqE}qF(UdupnamesqG]UclassesqH]UbackrefsqI]UidsqJ]qKh'aUnamesqL]qMh auUlineqNKUdocumentqOhh7]qP(cdocutils.nodes title qQ)qR}qS(hhAhCUtitleqUhE}qV(hG]hH]hI]hJ]hL]uhNKhOhh7]qWcdocutils.nodes Text qXX IntroductionqYqZ}q[(hh?Xincludes/introduction.txtq_q`}qabhCU field_listqbhE}qc(hG]hH]hI]hJ]hL]uhNKhOhh7]qd(cdocutils.nodes field qe)qf}qg(hh`hCUfieldqhhE}qi(hG]hH]hI]hJ]hL]uhNKhOhh7]qj(cdocutils.nodes field_name qk)ql}qm(hh`hCU paragraphq~hE}q(hG]hH]hI]hJ]hL]uhNKh7]qhXX2.0.3qq}q(hh`hChhhE}q(hG]hH]hI]hJ]hL]uhNKhOhh7]q(hk)q}q(hh`hCh~hE}q(hG]hH]hI]hJ]hL]uhNKh7]qcdocutils.nodes reference q)q}q(hh`hChhhE}q(hG]hH]hI]hJ]hL]uhNKhOhh7]q(hk)q}q(hh`hCh~hE}q(hG]hH]hI]hJ]hL]uhNKh7]qh)q}q(hh`hChhhE}q(hG]hH]hI]hJ]hL]uhNKhOhh7]q(hk)q}q(hh`hCh~hE}q(hG]hH]hI]hJ]hL]uhNKh7]qh)q}q(hh`hChhhE}q(hG]hH]hI]hJ]hL]uhNKhOhh7]q(hk)q}q(hh`hCh~hE}q(hG]hH]hI]hJ]hL]uhNKh7]qhXX`task queue, job queue, asynchronous, rabbitmq, amqp, redis, python, webhooks, queue, distributedqq}q(hh`hCh~hE}q(hG]hH]hI]hJ]hL]uhNKhOhh7]qhXX--qq}q(hh`hCh~hE}q(hG]hH]hI]hJ]hL]uhNK hOhh7]qhXXCelery is an open source asynchronous task queue/job queue based on distributed message passing. It is focused on real-time operation, but supports scheduling as well.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXXThe execution units, called tasks, are executed concurrently on a single or more worker servers. Tasks can execute asynchronously (in the background) or synchronously (wait until ready).rr }r (hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]rhXXHCelery is already used in production to process millions of tasks a day.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXX^Celery is written in Python, but the protocol can be implemented in any language. It can also rr}r(hh`hCh~hE}r((hG]hH]hI]hJ]hL]uhNKhOhh7]r)(hXX"The recommended message broker is r*r+}r,(h}r?(hh`hCh~hE}rP(hG]hH]hI]hJ]hL]uhNKhOhh7]rQ(hXXVYou may also be pleased to know that full Django integration exists, delivered by the rRrS}rT(hh`hCUtargetrehE}rf(jj0hJ]rgh,ahI]hG]hH]hL]rhhauhNK#hOhh7]ubja)ri}rj(hh`hCjehE}rk(jj;hJ]rlh+ahI]hG]hH]hL]rmhauhNK$hOhh7]ubja)rn}ro(hh`hCjehE}rp(jjFhJ]rqh$ahI]hG]hH]hL]rrhauhNK%hOhh7]ubja)rs}rt(h.. _`django-celery`: http://pypi.python.org/pypi/django-celeryjdKh=h:h>h`hCjehE}ru(jjYhJ]rvh1ahI]hG]hH]hL]rwhauhNK&hOhh7]ubja)rx}ry(hh`hCjehE}rz(jjhJ]r{h-ahI]hG]hH]hL]r|hauhNK'hOhh7]ubcdocutils.nodes topic r})r~}r(hh`hCUtopicrhE}r(hG]hH]r(UcontentsrUlocalrehI]hJ]rh5ahL]rhauhNK%hOhh7]rcdocutils.nodes bullet_list r)r}r(hNhCU bullet_listrhE}r(hG]hH]hI]hJ]hL]uhNNhOhh7]r(cdocutils.nodes list_item r)r}r(hh`hChDhE}r(hG]hH]hI]hJ]rh(ahL]rh auhNK(hOhh7]r(hQ)r}r(hh`hChUhE}r(hJ]hI]hG]hH]hL]UrefidrjuhNK(hOhh7]rhXXOverviewrr}r(hh`hCh~hE}r#(hG]hH]hI]hJ]hL]uhNK*hOhh7]r$hXX2This is a high level overview of the architecture.r%r&}r'(hh`hCUimager+hE}r,(UuriXChttp://cloud.github.com/downloads/ask/celery/Celery-Overview-v4.jpgr-hJ]hI]hG]hH]U candidatesr.}r/U?j-shL]uhNK-hOhh7]ubh{)r0}r1(hh`hCh~hE}r2(hG]hH]hI]hJ]hL]uhNK.hOhh7]r3(hXX^The broker pushes tasks to the worker servers. A worker server is a networked machine running r4r5}r6(h(hh`hCh~hE}rF(hG]hH]hI]hJ]hL]uhNK2hOhh7]rGhXXRThe result of the task can be stored for later retrieval (called its "tombstone").rHrI}rJ(hh`hChDhE}rM(hG]hH]hI]hJ]rNh4ahL]rOhauhNK6hOhh7]rP(hQ)rQ}rR(hh`hChUhE}rS(hJ]hI]hG]hH]hL]jjuhNK6hOhh7]rThXXExamplerUrV}rW(hh`hCh~hE}r[(hG]hH]hI]hJ]hL]uhNK8hOhh7]r\hXXXYou probably want to see some code by now, so here's an example task adding two numbers:r]r^}r_(hh`hCU literal_blockrchE}rd(UlinenosreUlanguagerfXpythonU xml:spacergUpreserverhhJ]hI]hG]hH]hL]uhNK;hOhh7]rihXXIfrom celery.decorators import task @task def add(x, y): return x + yrjrk}rl(hh`hCh~hE}rp(hG]hH]hI]hJ]hL]uhNKChOhh7]rqhXXEYou can execute the task in the background, or wait for it to finish:rrrs}rt(h>> result = add.delay(4, 4) >>> result.wait() # wait for and return the result 8h=jKh>h`hCjchE}rw(jgjhhJ]hI]hG]hH]hL]uhNKKhOhh7]rxhXXQ>>> result = add.delay(4, 4) >>> result.wait() # wait for and return the result 8ryrz}r{(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKIhOhh7]rhXXSimple!rr}r(hh`hChDhE}r(hG]hH]hI]hJ]rh&ahL]rh auhNKLhOhh7]r(hQ)r}r(hh`hChUhE}r(hJ]hI]hG]hH]hL]jjuhNKLhOhh7]rhXXFeaturesrr}r(hh`hCU block_quoterhE}r(hG]hH]hI]hJ]hL]uhNNhOhh7]rcdocutils.nodes table r)r}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKOh7]rhXX Messagingrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKOh7]r(hXXSupported brokers include rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKRh7]rhXXRobustrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKRh7]r(hXXUsing rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKUh7]rhXX Distributedr r!}r"(hh`hCh~hE}r)(hG]hH]hI]hJ]hL]uhNKUh7]r*(hXX'Runs on one or more machines. Supports r+r,}r-(hr?}r@(hh`hCh~hE}rO(hG]hH]hI]hJ]hL]uhNK[h7]rPhXX ConcurrencyrQrR}rS(hh`hCh~hE}rZ(hG]hH]hI]hJ]hL]uhNK[h7]r[(hXX)Tasks are executed in parallel using the r\r]}r^(hh`hCh~hE}rt(hG]hH]hI]hJ]hL]uhNK^h7]ruhXX Schedulingrvrw}rx(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNK^h7]rhXXxSupports recurring tasks like cron, or specifying an exact date or countdown for when after the task should be executed.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKbh7]rhXX Performancerr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKbh7]rhXX+Able to execute tasks while the user waits.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKdh7]rhXX Return Valuesrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKdh7]rhXXTask return values can be saved to the selected result store backend. You can wait for the result, retrieve it later, or ignore it.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhh7]rhXX Result Storesrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhh7]r(hXX Database, rr}r(hh`hCh~hE}r (hG]hH]hI]hJ]hL]uhNKkh7]rhXXWebhooksrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKkh7]rhXXMYour tasks can also be HTTP callbacks, enabling cross-language communication.rr}r(hh`hCh~hE}r)(hG]hH]hI]hJ]hL]uhNKnh7]r*hXX Rate limitingr+r,}r-(hh`hCh~hE}r5(hG]hH]hI]hJ]hL]uhNKnh7]r6hXXSupports rate limiting by using the token bucket algorithm, which accounts for bursts of traffic. Rate limits can be set for each task type, or globally for all.r7r8}r9(h}r?(hh>h`hCh~hE}rE(hG]hH]hI]hJ]hL]uhNKsh7]rFhXXRoutingrGrH}rI(hh`hCh~hE}rQ(hG]hH]hI]hJ]hL]uhNKsh7]rRhXX@Using AMQP you can route tasks arbitrarily to different workers.rSrT}rU(hh`hCh~hE}ra(hG]hH]hI]hJ]hL]uhNKvh7]rbhXXRemote-controlrcrd}re(hh`hCh~hE}rm(hG]hH]hI]hJ]hL]uhNKvh7]rnhXX6You can rate limit and delete (revoke) tasks remotely.rorp}rq(hh`hCh~hE}r}(hG]hH]hI]hJ]hL]uhNKyh7]r~hXX Monitoringrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKyh7]rhXXYou can capture everything happening with the workers in real-time by subscribing to events. A real-time web monitor is in development.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNK}h7]rhXX Serializationrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNK}h7]rhXX|Supports Pickle, JSON, YAML, or easily defined custom schemes. One task invocation can have a different scheme than another.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKh7]rhXX Tracebacksrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKh7]rhXXHErrors and tracebacks are stored and can be investigated after the fact.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKh7]rhXXUUIDrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKh7]rhXXxEvery task has an UUID (Universally Unique Identifier), which is the task id used to query task status and return value.rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKh7]rhXXRetriesrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKh7]rhXXnTasks can be retried if they fail, with configurable maximum number of retries, and delays between each retry.rr}r(hh`hCh~hE}r (hG]hH]hI]hJ]hL]uhNKh7]r hXX Task Setsr r }r (hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKh7]rhXXA Task set is a task consisting of several sub-tasks. You can find out how many, or if all of the sub-tasks has been executed, and even retrieve the results in order. Progress bars, anyone?rr}r(hh`hCh~hE}r%(hG]hH]hI]hJ]hL]uhNKh7]r&hXX Made for Webr'r(}r)(hh`hCh~hE}r1(hG]hH]hI]hJ]hL]uhNKh7]r2hXX_You can query status and results via URLs, enabling the ability to poll task status using Ajax.r3r4}r5(h}r?(hh`hCh~hE}rA(hG]hH]hI]hJ]hL]uhNKh7]rBhXX Error e-mailsrCrD}rE(hubaubahCjubj)rF}rG(hh`hCh~hE}rM(hG]hH]hI]hJ]hL]uhNKh7]rNhXXICan be configured to send e-mails to the administrators when tasks fails.rOrP}rQ(hh`hCh~hE}r](hG]hH]hI]hJ]hL]uhNKh7]r^hXX Supervisedr_r`}ra(hh`hCh~hE}ri(hG]hH]hI]hJ]hL]uhNKh7]rjhXXEPool workers are supervised and automatically replaced if they crash.rkrl}rm(hh`hCjehE}rs(jj2hJ]rth#ahI]hG]hH]hL]ruhauhNKhOhh7]ubja)rv}rw(hh`hCjehE}rx(jjhJ]ryh6ahI]hG]hH]hL]rzhauhNKhOhh7]ubja)r{}r|(hh`hCjehE}r}(jjhJ]r~h)ahI]hG]hH]hL]rh auhNKhOhh7]ubja)r}r(hh`hCjehE}r(jjhJ]rh0ahI]hG]hH]hL]rhauhNKhOhh7]ubja)r}r(hh`hCjehE}r(jX$http://tokyocabinet.sourceforge.net/hJ]rh.ahI]hG]hH]hL]rhauhNKhOhh7]ubeubh9)r}r(hh`hChDhE}r(hG]hH]hI]hJ]rh*ahL]rh auhNKhOhh7]r(hQ)r}r(hh`hChUhE}r(hJ]hI]hG]hH]hL]jjuhNKhOhh7]rhXX Documentationrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXXThe rr}r(hh`hCjehE}r(jjhJ]rh/ahI]hG]hH]hL]rhauhNKhOhh7]ubeubh9)r}r(hh`hChDhE}r(hG]hH]hI]hJ]rh%ahL]rhauhNKhOhh7]r(hQ)r}r(hh`hChUhE}r(hJ]hI]hG]hH]hL]jjuhNKhOhh7]rhXX Installationrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXXYou can install rr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXXTo install using rr}r(hh`hCjchE}r(jgjhhJ]hI]hG]hH]hL]uhNKhOhh7]rhXX$ pip install celeryrr}r(hh`hCh~hE}r(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXXTo install using rr}r(hh`hCjchE}r(jgjhhJ]hI]hG]hH]hL]uhNKhOhh7]rhXX$ easy_install celeryrr}r(hh`hChDhE}r(hG]hH]hI]hJ]rh2ahL]rhauhNKhOhh7]r(hQ)r}r(hh`hChUhE}r(hJ]hI]hG]hH]hL]jjuhNKhOhh7]rhXX&Downloading and installing from sourcerr }r (hh`hCh~hE}r (hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXXDownload the latest version of rr}r(hh`hCh~hE}r'(hG]hH]hI]hJ]hL]uhNKhOhh7]r(hXX+You can install it by doing the following,:r)r*}r+(hh`hCjchE}r.(jgjhhJ]hI]hG]hH]hL]uhNKhOhh7]r/hXXl$ tar xvfz celery-0.0.0.tar.gz $ cd celery-0.0.0 $ python setup.py build # python setup.py install # as rootr0r1}r2(hh`hChDhE}r5(hG]hH]hI]hJ]r6h3ahL]r7hauhNKhOhh7]r8(hQ)r9}r:(hh`hChUhE}r;(hJ]hI]hG]hH]hL]jj uhNKhOhh7]r<hXXUsing the development versionr=r>}r?(hh`hCh~hE}rC(hG]hH]hI]hJ]hL]uhNKhOhh7]rDhXX4You can clone the repository by doing the following:rErF}rG(hX0internal padding after includes/introduction.txtrJhCjchE}rK(jgjhhJ]hI]hG]hH]hL]uhNKhOhh7]rLhXX+$ git clone git://github.com/ask/celery.gitrMrN}rO(h(hUhh7hhhUfieldq?h}q@(h!]h"]h#]h$]h&]uh(Kh)hh]qA(cdocutils.nodes field_name qB)qC}qD(hXReleaseqEh}qF(h!]h"]h#]h$]h&]uhh=h]qGh2XReleaseqHqI}qJ(hhEhhCubahU field_nameqKubcdocutils.nodes field_body qL)qM}qN(hX |version|qOh}qP(h!]h"]h#]h$]h&]uhh=h]qQcdocutils.nodes paragraph qR)qS}qT(hhOhhMhhhU paragraphqUh}qV(h!]h"]h#]h$]h&]uh(Kh]qWh2X2.0qXqY}qZ(hU2.0q[hhSubaubahU field_bodyq\ubeubh<)q]}q^(hUhh7hhhh?h}q_(h!]h"]h#]h$]h&]uh(Kh)hh]q`(hB)qa}qb(hXDateqch}qd(h!]h"]h#]h$]h&]uhh]h]qeh2XDateqfqg}qh(hhchhaubahhKubhL)qi}qj(hX|today| h}qk(h!]h"]h#]h$]h&]uhh]h]qlhR)qm}qn(hX|today|qohhihhhhUh}qp(h!]h"]h#]h$]h&]uh(Kh]qqh2XFebruary 04, 2014qrqs}qt(hXFebruary 04, 2014hhmubaubahh\ubeubeubcdocutils.nodes compound qu)qv}qw(hUhhhhhUcompoundqxh}qy(h!]h"]qzUtoctree-wrapperq{ah#]h$]h&]uh(Nh)hh]q|csphinx.addnodes toctree q})q~}q(hUhhvhhhUtoctreeqh}q(UnumberedqKU includehiddenqhXgetting-started/indexqU titlesonlyqUglobqh$]h#]h!]h"]h&]Uentriesq]q(NXgetting-started/introductionqqNX#getting-started/broker-installationqqNX'getting-started/first-steps-with-celeryqqNXgetting-started/periodic-tasksqqNXgetting-started/resourcesqqeUhiddenqU includefilesq]q(hhhhheUmaxdepthqKuh(Kh]ubaubeubahUU transformerqNU footnote_refsq}qUrefnamesq}qUsymbol_footnotesq]qUautofootnote_refsq]qUsymbol_footnote_refsq]qU citationsq]qh)hU current_lineqNUtransform_messagesq]qUreporterqNUid_startqKU autofootnotesq]qU citation_refsq}qUindirect_targetsq]qUsettingsq(cdocutils.frontend Values qoq}q(Ufootnote_backlinksqKUrecord_dependenciesqNU rfc_base_urlqUhttp://tools.ietf.org/html/qU tracebackqUpep_referencesqNUstrip_commentsqNU toc_backlinksqUentryqU language_codeqUenqU datestampqNU report_levelqKU _destinationqNU halt_levelqKU strip_classesqNh/NUerror_encoding_error_handlerqUbackslashreplaceqUdebugqNUembed_stylesheetqƉUoutput_encoding_error_handlerqUstrictqU sectnum_xformqKUdump_transformsqNU docinfo_xformqKUwarning_streamqNUpep_file_url_templateqUpep-%04dqUexit_status_levelqKUconfigqNUstrict_visitorqNUcloak_email_addressesq҈Utrim_footnote_reference_spaceqӉUenvqNUdump_pseudo_xmlqNUexpose_internalsqNUsectsubtitle_xformq׉U source_linkqNUrfc_referencesqNUoutput_encodingqUutf-8qU source_urlqNUinput_encodingqU utf-8-sigqU_disable_configqNU id_prefixqUU tab_widthqKUerror_encodingqUUTF-8qU_sourceqUS/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/index.rstqUgettext_compactqU generatorqNUdump_internalsqNU smart_quotesqU pep_base_urlqUhttp://www.python.org/dev/peps/qUsyntax_highlightqUlongqUinput_encoding_error_handlerqhUauto_id_prefixqUidqUdoctitle_xformqUstrip_elements_with_classesqNU _config_filesq]Ufile_insertion_enabledqU raw_enabledqKU dump_settingsqNubUsymbol_footnote_startqKUidsq}qhhsUsubstitution_namesq}qhh)h}q(h!]h$]h#]Usourcehh"]h&]uU footnotesq]qUrefidsq}rub.PKHDD"l[[Icelery-2.0-archived/.doctrees/getting-started/broker-installation.doctreecdocutils.nodes document q)q}q(U nametypesq}q(Xinstalling rabbitmqqX admin guideqXgitqXaccess controlq X%starting/stopping the rabbitmq serverq NXinstalling rabbitmq on os xq NXconfiguring the system hostnameq NXbroker installationq NXsetting up rabbitmqqNXhomebrewqUcontentsqNuUsubstitution_defsq}qUparse_messagesq]qcdocutils.nodes system_message q)q}q(U rawsourceqUUparentqcdocutils.nodes section q)q}q(hUU referencedqKhh)q}q(hUhhUsourceq cdocutils.nodes reprunicode q!Xa/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/broker-installation.rstq"q#}q$bUtagnameq%Usectionq&U attributesq'}q((Udupnamesq)]Uclassesq*]Ubackrefsq+]Uidsq,]q-Ubroker-installationq.aUnamesq/]q0h auUlineq1KUdocumentq2hUchildrenq3]q4(cdocutils.nodes title q5)q6}q7(hXBroker Installationq8hhh h#h%Utitleq9h'}q:(h)]h*]h+]h,]h/]uh1Kh2hh3]q;cdocutils.nodes Text q}q?(hh8hh6ubaubcdocutils.nodes topic q@)qA}qB(hUhhh h#h%UtopicqCh'}qD(h)]h*]qE(UcontentsqFUlocalqGeh+]h,]qHUcontentsqIah/]qJhauh1Kh2hh3]qKcdocutils.nodes bullet_list qL)qM}qN(hUhhAh Nh%U bullet_listqOh'}qP(h)]h*]h+]h,]h/]uh1Nh2hh3]qQ(cdocutils.nodes list_item qR)qS}qT(hUh'}qU(h)]h*]h+]h,]h/]uhhMh3]qVcdocutils.nodes paragraph qW)qX}qY(hUh'}qZ(h)]h*]h+]h,]h/]uhhSh3]q[cdocutils.nodes reference q\)q]}q^(hUh'}q_(h,]q`Uid2qaah+]h)]h*]h/]UrefidUinstalling-rabbitmqqbuhhXh3]qchr?}r@(hXHomebrew is actually a hj:ubh\)rA}rB(hX`git`_hKhj:h%hhh'}rC(UnameXgitrDhXhttp://git-scm.orgrEh,]h+]h)]h*]h/]uh3]rFh}r?(hUhj9ubah%j6ubhU source_urlr?NUinput_encodingr@U utf-8-sigrAU_disable_configrBNU id_prefixrCUU tab_widthrDKUerror_encodingrEUUTF-8rFU_sourcerGUa/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/broker-installation.rstrHUgettext_compactrIU generatorrJNUdump_internalsrKNU smart_quotesrLU pep_base_urlrMUhttp://www.python.org/dev/peps/rNUsyntax_highlightrOUlongrPUinput_encoding_error_handlerrQj+Uauto_id_prefixrRUidrSUdoctitle_xformrTUstrip_elements_with_classesrUNU _config_filesrV]Ufile_insertion_enabledrWU raw_enabledrXKU dump_settingsrYNubUsymbol_footnote_startrZKUidsr[}r\(hwhsjjhhhhhhhjMhah]hbhhxhjjhjhjjhjjjjhIhAh.huUsubstitution_namesr]}r^h%h2h'}r_(h)]h,]h+]Usourceh#h*]h/]uU footnotesr`]raUrefidsrb}rcub.PKHDD鶝QQDcelery-2.0-archived/.doctrees/getting-started/periodic-tasks.doctreecdocutils.nodes document q)q}q(U nametypesq}q(X introductionqNXstarting celerybeatqNXcrontab-like schedulesqNUcontentsq NXperiodic tasksq NuUsubstitution_defsq }q Uparse_messagesq ]qUcurrent_sourceqNU decorationqNUautofootnote_startqKUnameidsq}q(hU introductionqhUstarting-celerybeatqhUcrontab-like-schedulesqh Ucontentsqh Uperiodic-tasksquUchildrenq]qcdocutils.nodes section q)q}q(U rawsourceqUUparentqhUsourceq cdocutils.nodes reprunicode q!X\/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/periodic-tasks.rstq"q#}q$bUtagnameq%Usectionq&U attributesq'}q((Udupnamesq)]Uclassesq*]Ubackrefsq+]Uidsq,]q-haUnamesq.]q/h auUlineq0KUdocumentq1hh]q2(cdocutils.nodes title q3)q4}q5(hXPeriodic Tasksq6hhh h#h%Utitleq7h'}q8(h)]h*]h+]h,]h.]uh0Kh1hh]q9cdocutils.nodes Text q:XPeriodic Tasksq;q<}q=(hh6hh4ubaubcdocutils.nodes topic q>)q?}q@(hUhhh h#h%UtopicqAh'}qB(h)]h*]qC(UcontentsqDUlocalqEeh+]h,]qFhah.]qGh auh0Kh1hh]qHcdocutils.nodes bullet_list qI)qJ}qK(hUhh?h Nh%U bullet_listqLh'}qM(h)]h*]h+]h,]h.]uh0Nh1hh]qN(cdocutils.nodes list_item qO)qP}qQ(hUh'}qR(h)]h*]h+]h,]h.]uhhJh]qScdocutils.nodes paragraph qT)qU}qV(hUh'}qW(h)]h*]h+]h,]h.]uhhPh]qXcdocutils.nodes reference qY)qZ}q[(hUh'}q\(h,]q]Uid1q^ah+]h)]h*]h.]UrefidhuhhUh]q_h:X Introductionq`qa}qb(hX IntroductionqchhZubah%U referenceqdubah%U paragraphqeubah%U list_itemqfubhO)qg}qh(hUh'}qi(h)]h*]h+]h,]h.]uhhJh]qjhT)qk}ql(hUh'}qm(h)]h*]h+]h,]h.]uhhgh]qnhY)qo}qp(hUh'}qq(h,]qrUid2qsah+]h)]h*]h.]Urefidhuhhkh]qth:XCrontab-like schedulesquqv}qw(hXCrontab-like schedulesqxhhoubah%hdubah%heubah%hfubhO)qy}qz(hUh'}q{(h)]h*]h+]h,]h.]uhhJh]q|hT)q}}q~(hUh'}q(h)]h*]h+]h,]h.]uhhyh]qhY)q}q(hUh'}q(h,]qUid3qah+]h)]h*]h.]Urefidhuhh}h]qh:XStarting celerybeatqq}q(hXStarting celerybeatqhhubah%hdubah%heubah%hfubeubaubh)q}q(hUhhh h#h%h&h'}q(h)]h*]h+]h,]qhah.]qhauh0K h1hh]q(h3)q}q(hhchhh h#h%h7h'}q(h,]h+]h)]h*]h.]Urefidqh^uh0K h1hh]qh:X Introductionqq}q(hhchhubaubhT)q}q(hX\The :mod:`~celery.bin.celerybeat` service enables you to schedule tasks to run at intervals.hhh h#h%heh'}q(h)]h*]h+]h,]h.]uh0K h1hh]q(h:XThe qq}q(hXThe hhubcsphinx.addnodes pending_xref q)q}q(hX:mod:`~celery.bin.celerybeat`qhhh h#h%U pending_xrefqh'}q(UreftypeXmodUrefwarnqU reftargetqXcelery.bin.celerybeatU refdomainXpyqh,]h+]U refexplicith)]h*]h.]UrefdocqXgetting-started/periodic-tasksqUpy:classqNU py:moduleqNuh0K h]qcdocutils.nodes literal q)q}q(hhh'}q(h)]h*]q(UxrefqhXpy-modqeh+]h,]h.]uhhh]qh:X celerybeatqq}q(hUhhubah%Uliteralqubaubh:X; service enables you to schedule tasks to run at intervals.qq}q(hX; service enables you to schedule tasks to run at intervals.hhubeubhT)q}q(hXYPeriodic tasks are defined as special task classes. Here's an example of a periodic task:qhhh h#h%heh'}q(h)]h*]h+]h,]h.]uh0Kh1hh]qh:XYPeriodic tasks are defined as special task classes. Here's an example of a periodic task:q…q}q(hhhhubaubcdocutils.nodes literal_block q)q}q(hXfrom celery.decorators import periodic_task from datetime import timedelta @periodic_task(run_every=timedelta(seconds=30)) def every_30_seconds(): print("Running periodic task!")hhh h#h%U literal_blockqh'}q(UlinenosqʉUlanguageqXpythonU xml:spaceqUpreserveqh,]h+]h)]h*]h.]uh0Kh1hh]qh:Xfrom celery.decorators import periodic_task from datetime import timedelta @periodic_task(run_every=timedelta(seconds=30)) def every_30_seconds(): print("Running periodic task!")qυq}q(hUhhubaubeubh)q}q(hUhhh h#h%h&h'}q(h)]h*]h+]h,]qhah.]qhauh0Kh1hh]q(h3)q}q(hhxhhh h#h%h7h'}q(h,]h+]h)]h*]h.]hhsuh0Kh1hh]qh:XCrontab-like schedulesq܅q}q(hhxhhubaubhT)q}q(hXIf you want a little more control over when the task is executed, for example, a particular time of day or day of the week, you can use the ``crontab`` schedule type:hhh h#h%heh'}q(h)]h*]h+]h,]h.]uh0Kh1hh]q(h:XIf you want a little more control over when the task is executed, for example, a particular time of day or day of the week, you can use the qㅁq}q(hXIf you want a little more control over when the task is executed, for example, a particular time of day or day of the week, you can use the hhubh)q}q(hX ``crontab``h'}q(h)]h*]h+]h,]h.]uhhh]qh:Xcrontabqꅁq}q(hUhhubah%hubh:X schedule type:q텁q}q(hX schedule type:hhubeubh)q}q(hXfrom celery.task.schedules import crontab from celery.decorators import periodic_task @periodic_task(run_every=crontab(hour=7, minute=30, day_of_week=1)) def every_monday_morning(): print("Execute every Monday at 7:30AM.")hhh h#h%hh'}q(hʉhXpythonhhh,]h+]h)]h*]h.]uh0K!h1hh]qh:Xfrom celery.task.schedules import crontab from celery.decorators import periodic_task @periodic_task(run_every=crontab(hour=7, minute=30, day_of_week=1)) def every_monday_morning(): print("Execute every Monday at 7:30AM.")qq}q(hUhhubaubhT)q}q(hXIThe syntax of these crontab expressions is very flexible. Some examples:qhhh h#h%heh'}q(h)]h*]h+]h,]h.]uh0K*h1hh]qh:XIThe syntax of these crontab expressions is very flexible. Some examples:qq}q(hhhhubaubcdocutils.nodes table q)r}r(hUhhh h#h%Utablerh'}r(h)]h*]h+]h,]h.]uh0Nh1hh]rcdocutils.nodes tgroup r)r}r(hUh'}r(h,]h+]h)]h*]h.]UcolsKuhjh]r (cdocutils.nodes colspec r )r }r (hUh'}r (h,]h+]h)]h*]h.]UcolwidthK%uhjh]h%Ucolspecrubj )r}r(hUh'}r(h,]h+]h)]h*]h.]UcolwidthK,uhjh]h%jubcdocutils.nodes tbody r)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(cdocutils.nodes row r)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(cdocutils.nodes entry r)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r hT)r!}r"(hX **Example**r#hjh h#h%heh'}r$(h)]h*]h+]h,]h.]uh0K-h]r%cdocutils.nodes strong r&)r'}r((hj#h'}r)(h)]h*]h+]h,]h.]uhj!h]r*h:XExampler+r,}r-(hUhj'ubah%Ustrongr.ubaubah%Uentryr/ubj)r0}r1(hUh'}r2(h)]h*]h+]h,]h.]uhjh]r3hT)r4}r5(hX **Meaning**r6hj0h h#h%heh'}r7(h)]h*]h+]h,]h.]uh0K-h]r8j&)r9}r:(hj6h'}r;(h)]h*]h+]h,]h.]uhj4h]r<h:XMeaningr=r>}r?(hUhj9ubah%j.ubaubah%j/ubeh%Urowr@ubj)rA}rB(hUh'}rC(h)]h*]h+]h,]h.]uhjh]rD(j)rE}rF(hUh'}rG(h)]h*]h+]h,]h.]uhjAh]rHhT)rI}rJ(hX crontab()rKhjEh h#h%heh'}rL(h)]h*]h+]h,]h.]uh0K/h]rMh:X crontab()rNrO}rP(hjKhjIubaubah%j/ubj)rQ}rR(hUh'}rS(h)]h*]h+]h,]h.]uhjAh]rThT)rU}rV(hXExecute every minute.rWhjQh h#h%heh'}rX(h)]h*]h+]h,]h.]uh0K/h]rYh:XExecute every minute.rZr[}r\(hjWhjUubaubah%j/ubeh%j@ubj)r]}r^(hUh'}r_(h)]h*]h+]h,]h.]uhjh]r`(j)ra}rb(hUh'}rc(h)]h*]h+]h,]h.]uhj]h]rdhT)re}rf(hXcrontab(minute=0, hour=0)rghjah h#h%heh'}rh(h)]h*]h+]h,]h.]uh0K1h]rih:Xcrontab(minute=0, hour=0)rjrk}rl(hjghjeubaubah%j/ubj)rm}rn(hUh'}ro(h)]h*]h+]h,]h.]uhj]h]rphT)rq}rr(hXExecute daily at midnight.rshjmh h#h%heh'}rt(h)]h*]h+]h,]h.]uh0K1h]ruh:XExecute daily at midnight.rvrw}rx(hjshjqubaubah%j/ubeh%j@ubj)ry}rz(hUh'}r{(h)]h*]h+]h,]h.]uhjh]r|(j)r}}r~(hUh'}r(h)]h*]h+]h,]h.]uhjyh]rhT)r}r(hXcrontab(minute=0,rhj}h h#h%heh'}r(h)]h*]h+]h,]h.]uh0K3h]rh:Xcrontab(minute=0,rr}r(hjhjubaubah%j/ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjyh]rhT)r}r(hXLExecute every three hours---at midnight, 3am, 6am, 9am, noon, 3pm, 6pm, 9pm.rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K3h]rh:XLExecute every three hours---at midnight, 3am, 6am, 9am, noon, 3pm, 6pm, 9pm.rr}r(hjhjubaubah%j/ubeh%j@ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(j)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rcdocutils.nodes definition_list r)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rcdocutils.nodes definition_list_item r)r}r(hX-crontab(minute=0, hour=[0,3,6,9,12,15,18,21])hjh h#h%Udefinition_list_itemrh'}r(h)]h*]h+]h,]h.]uh0K6h]r(cdocutils.nodes term r)r}r(hXcrontab(minute=0,rhjh h#h%Utermrh'}r(h)]h*]h+]h,]h.]uh0K6h]rh:Xcrontab(minute=0,rr}r(hjhjubaubcdocutils.nodes definition r)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXhour=[0,3,6,9,12,15,18,21])rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K7h]rh:Xhour=[0,3,6,9,12,15,18,21])rr}r(hjhjubaubah%U definitionrubeubah%Udefinition_listrubah%j/ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXSame as previous.rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K6h]rh:XSame as previous.rr}r(hjhjubaubah%j/ubeh%j@ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(j)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXcrontab(minute="\*/15")hjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K9h]rh:Xcrontab(minute="*/15")rr}r(hXcrontab(minute="\*/15")hjubaubah%j/ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXExecute every 15 minutes.rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K9h]rh:XExecute every 15 minutes.rr}r(hjhjubaubah%j/ubeh%j@ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(j)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXcrontab(day_of_week="sunday")rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K;h]rh:Xcrontab(day_of_week="sunday")rr}r(hjhjubaubah%j/ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hX$Execute every minute (!) at sundays.rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K;h]rh:X$Execute every minute (!) at sundays.rr}r(hjhjubaubah%j/ubeh%j@ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(j)r}r (hUh'}r (h)]h*]h+]h,]h.]uhjh]r j)r }r (hUh'}r(h)]h*]h+]h,]h.]uhjh]rj)r}r(hX0crontab(minute="*", hour="*", day_of_week="sun")hj h h#h%jh'}r(h)]h*]h+]h,]h.]uh0K>h]r(j)r}r(hXcrontab(minute="*",hjh h#h%jh'}r(h)]h*]h+]h,]h.]uh0K>h]rh:Xcrontab(minute="*",rr}r(hXcrontab(minute="*",hjubaubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r (hXhour="*", day_of_week="sun")hjh h#h%heh'}r!(h)]h*]h+]h,]h.]uh0K>h]r"h:Xhour="*", day_of_week="sun")r#r$}r%(hXhour="*", day_of_week="sun")hjubaubah%jubeubah%jubah%j/ubj)r&}r'(hUh'}r((h)]h*]h+]h,]h.]uhjh]r)hT)r*}r+(hXSame as previous.r,hj&h h#h%heh'}r-(h)]h*]h+]h,]h.]uh0K=h]r.h:XSame as previous.r/r0}r1(hj,hj*ubaubah%j/ubeh%j@ubj)r2}r3(hUh'}r4(h)]h*]h+]h,]h.]uhjh]r5(j)r6}r7(hUh'}r8(h)]h*]h+]h,]h.]uhj2h]r9j)r:}r;(hUh'}r<(h)]h*]h+]h,]h.]uhj6h]r=j)r>}r?(hX>crontab(minute="\*/10", hour="3,17,22", day_of_week="thu,fri")hj:h h#h%jh'}r@(h)]h*]h+]h,]h.]uh0KBh]rA(j)rB}rC(hXcrontab(minute="\*/10",rDhj>h h#h%jh'}rE(h)]h*]h+]h,]h.]uh0KBh]rFh:Xcrontab(minute="*/10",rGrH}rI(hXcrontab(minute="\*/10",hjBubaubj)rJ}rK(hUh'}rL(h)]h*]h+]h,]h.]uhj>h]rMhT)rN}rO(hX&hour="3,17,22", day_of_week="thu,fri")rPhjJh h#h%heh'}rQ(h)]h*]h+]h,]h.]uh0KBh]rRh:X&hour="3,17,22", day_of_week="thu,fri")rSrT}rU(hjPhjNubaubah%jubeubah%jubah%j/ubj)rV}rW(hUh'}rX(h)]h*]h+]h,]h.]uhj2h]rYhT)rZ}r[(hX`Execute every ten minutes, but only between 3-4 am, 5-6 pm and 10-11 pm on thursdays or fridays.r\hjVh h#h%heh'}r](h)]h*]h+]h,]h.]uh0KAh]r^h:X`Execute every ten minutes, but only between 3-4 am, 5-6 pm and 10-11 pm on thursdays or fridays.r_r`}ra(hj\hjZubaubah%j/ubeh%j@ubj)rb}rc(hUh'}rd(h)]h*]h+]h,]h.]uhjh]re(j)rf}rg(hUh'}rh(h)]h*]h+]h,]h.]uhjbh]rihT)rj}rk(hX#crontab(minute=0, hour="\*/2,\*/3")hjfh h#h%heh'}rl(h)]h*]h+]h,]h.]uh0KEh]rmh:X!crontab(minute=0, hour="*/2,*/3")rnro}rp(hX#crontab(minute=0, hour="\*/2,\*/3")hjjubaubah%j/ubj)rq}rr(hUh'}rs(h)]h*]h+]h,]h.]uhjbh]rthT)ru}rv(hXExecute every even hour, and every hour divisable by three. This means: at every hour *except*: 1am, 5am, 7am, 11am, 1pm, 5pm, 7pm, 11pmhjqh h#h%heh'}rw(h)]h*]h+]h,]h.]uh0KEh]rx(h:XVExecute every even hour, and every hour divisable by three. This means: at every hour ryrz}r{(hXVExecute every even hour, and every hour divisable by three. This means: at every hour hjuubcdocutils.nodes emphasis r|)r}}r~(hX*except*h'}r(h)]h*]h+]h,]h.]uhjuh]rh:Xexceptrr}r(hUhj}ubah%Uemphasisrubh:X*: 1am, 5am, 7am, 11am, 1pm, 5pm, 7pm, 11pmrr}r(hX*: 1am, 5am, 7am, 11am, 1pm, 5pm, 7pm, 11pmhjuubeubah%j/ubeh%j@ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(j)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXcrontab(minute=0, hour="\*/5")hjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KKh]rh:Xcrontab(minute=0, hour="*/5")rr}r(hXcrontab(minute=0, hour="\*/5")hjubaubah%j/ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXExecute hour divisable by 5. This means that it is triggered at 3pm, not 5pm (since 3pm equals the 24-hour clock value of "15", which is divisable by 5).rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KKh]rh:XExecute hour divisable by 5. This means that it is triggered at 3pm, not 5pm (since 3pm equals the 24-hour clock value of "15", which is divisable by 5).rr}r(hjhjubaubah%j/ubeh%j@ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]r(j)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hX#crontab(minute=0, hour="\*/3,8-17")hjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KPh]rh:X"crontab(minute=0, hour="*/3,8-17")rr}r(hX#crontab(minute=0, hour="\*/3,8-17")hjubaubah%j/ubj)r}r(hUh'}r(h)]h*]h+]h,]h.]uhjh]rhT)r}r(hXPExecute every hour divisable by 3, and every hour during office hours (8am-5pm).rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KPh]rh:XPExecute every hour divisable by 3, and every hour during office hours (8am-5pm).rr}r(hjhjubaubah%j/ubeh%j@ubeh%Utbodyrubeh%Utgrouprubaubeubh)r}r(hUhhh h#h%h&h'}r(h)]h*]h+]h,]rhah.]rhauh0KUh1hh]r(h3)r}r(hhhjh h#h%h7h'}r(h,]h+]h)]h*]h.]hhuh0KUh1hh]rh:XStarting celerybeatrr}r(hhhjubaubhT)r}r(hXIf you want to use periodic tasks you need to start the ``celerybeat`` service. You have to make sure only one instance of this server is running at any time, or else you will end up with multiple executions of the same task.hjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0KWh1hh]r(h:X8If you want to use periodic tasks you need to start the rr}r(hX8If you want to use periodic tasks you need to start the hjubh)r}r(hX``celerybeat``h'}r(h)]h*]h+]h,]h.]uhjh]rh:X celerybeatrr}r(hUhjubah%hubh:X service. You have to make sure only one instance of this server is running at any time, or else you will end up with multiple executions of the same task.rr}r(hX service. You have to make sure only one instance of this server is running at any time, or else you will end up with multiple executions of the same task.hjubeubhT)r}r(hX%To start the ``celerybeat`` service::rhjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K[h1hh]r(h:X To start the rr}r(hX To start the hjubh)r}r(hX``celerybeat``h'}r(h)]h*]h+]h,]h.]uhjh]rh:X celerybeatrr}r(hUhjubah%hubh:X service:rr}r(hX service:hjubeubh)r}r(hX $ celerybeathjh h#h%hh'}r(hhh,]h+]h)]h*]h.]uh0K]h1hh]rh:X $ celerybeatrr}r(hUhjubaubhT)r}r(hXYou can also start ``celerybeat`` with ``celeryd`` by using the ``-B`` option, this is convenient if you only have one server::hjh h#h%heh'}r(h)]h*]h+]h,]h.]uh0K_h1hh]r(h:XYou can also start rr}r(hXYou can also start hjubh)r}r(hX``celerybeat``h'}r(h)]h*]h+]h,]h.]uhjh]rh:X celerybeatrr}r(hUhjubah%hubh:X with rr}r(hX with hjubh)r}r (hX ``celeryd``h'}r (h)]h*]h+]h,]h.]uhjh]r h:Xcelerydr r }r(hUhjubah%hubh:X by using the rr}r(hX by using the hjubh)r}r(hX``-B``h'}r(h)]h*]h+]h,]h.]uhjh]rh:X-Brr}r(hUhjubah%hubh:X8 option, this is convenient if you only have one server:rr}r(hX8 option, this is convenient if you only have one server:hjubeubh)r}r(hX $ celeryd -Bhjh h#h%hh'}r(hhh,]h+]h)]h*]h.]uh0Kbh1hh]rh:X $ celeryd -Br r!}r"(hUhjubaubeubeubahUU transformerr#NU footnote_refsr$}r%Urefnamesr&}r'Usymbol_footnotesr(]r)Uautofootnote_refsr*]r+Usymbol_footnote_refsr,]r-U citationsr.]r/h1hU current_liner0NUtransform_messagesr1]r2Ureporterr3NUid_startr4KU autofootnotesr5]r6U citation_refsr7}r8Uindirect_targetsr9]r:Usettingsr;(cdocutils.frontend Values r<or=}r>(Ufootnote_backlinksr?KUrecord_dependenciesr@NU rfc_base_urlrAUhttp://tools.ietf.org/html/rBU tracebackrCUpep_referencesrDNUstrip_commentsrENU toc_backlinksrFj/U language_coderGUenrHU datestamprINU report_levelrJKU _destinationrKNU halt_levelrLKU strip_classesrMNh7NUerror_encoding_error_handlerrNUbackslashreplacerOUdebugrPNUembed_stylesheetrQUoutput_encoding_error_handlerrRUstrictrSU sectnum_xformrTKUdump_transformsrUNU docinfo_xformrVKUwarning_streamrWNUpep_file_url_templaterXUpep-%04drYUexit_status_levelrZKUconfigr[NUstrict_visitorr\NUcloak_email_addressesr]Utrim_footnote_reference_spacer^Uenvr_NUdump_pseudo_xmlr`NUexpose_internalsraNUsectsubtitle_xformrbU source_linkrcNUrfc_referencesrdNUoutput_encodingreUutf-8rfU source_urlrgNUinput_encodingrhU utf-8-sigriU_disable_configrjNU id_prefixrkUU tab_widthrlKUerror_encodingrmUUTF-8rnU_sourceroU\/var/build/user_builds/celery/checkouts/2.0-archived/docs/getting-started/periodic-tasks.rstrpUgettext_compactrqU generatorrrNUdump_internalsrsNU smart_quotesrtU pep_base_urlruUhttp://www.python.org/dev/peps/rvUsyntax_highlightrwUlongrxUinput_encoding_error_handlerryjSUauto_id_prefixrzUidr{Udoctitle_xformr|Ustrip_elements_with_classesr}NU _config_filesr~]Ufile_insertion_enabledrU raw_enabledrKU dump_settingsrNubUsymbol_footnote_startrKUidsr}r(hhhshohhhhh^hZhjhhhh?uUsubstitution_namesr}rh%h1h'}r(h)]h,]h+]Usourceh#h*]h.]uU footnotesr]rUrefidsr}rub.PK}HDDa$celery-2.0-archived/_static/plus.pngPNG  IHDR &q pHYs  tIME 1l9tEXtComment̖RIDATcz(BpipPc |IENDB`PKHDD9Rcc(celery-2.0-archived/_static/pygments.css.highlight .hll { background-color: #ffffcc } .highlight { background: #ffffff; } .highlight .c { color: #999988; font-style: italic } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { font-weight: bold } /* Keyword */ .highlight .o { font-weight: bold } /* Operator */ .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #999999 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #aaaaaa } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { font-weight: bold } /* Keyword.Constant */ .highlight .kd { font-weight: bold } /* Keyword.Declaration */ .highlight .kn { font-weight: bold } /* Keyword.Namespace */ .highlight .kp { font-weight: bold } /* Keyword.Pseudo */ .highlight .kr { font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #009999 } /* Literal.Number */ .highlight .s { color: #bb8844 } /* Literal.String */ .highlight .na { color: #008080 } /* Name.Attribute */ .highlight .nb { color: #999999 } /* Name.Builtin */ .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ .highlight .no { color: #008080 } /* Name.Constant */ .highlight .ni { color: #800080 } /* Name.Entity */ .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ .highlight .nn { color: #555555 } /* Name.Namespace */ .highlight .nt { color: #000080 } /* Name.Tag */ .highlight .nv { color: #008080 } /* Name.Variable */ .highlight .ow { font-weight: bold } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mf { color: #009999 } /* Literal.Number.Float */ .highlight .mh { color: #009999 } /* Literal.Number.Hex */ .highlight .mi { color: #009999 } /* Literal.Number.Integer */ .highlight .mo { color: #009999 } /* Literal.Number.Oct */ .highlight .sb { color: #bb8844 } /* Literal.String.Backtick */ .highlight .sc { color: #bb8844 } /* Literal.String.Char */ .highlight .sd { color: #bb8844 } /* Literal.String.Doc */ .highlight .s2 { color: #bb8844 } /* Literal.String.Double */ .highlight .se { color: #bb8844 } /* Literal.String.Escape */ .highlight .sh { color: #bb8844 } /* Literal.String.Heredoc */ .highlight .si { color: #bb8844 } /* Literal.String.Interpol */ .highlight .sx { color: #bb8844 } /* Literal.String.Other */ .highlight .sr { color: #808000 } /* Literal.String.Regex */ .highlight .s1 { color: #bb8844 } /* Literal.String.Single */ .highlight .ss { color: #bb8844 } /* Literal.String.Symbol */ .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ .highlight .vc { color: #008080 } /* Name.Variable.Class */ .highlight .vg { color: #008080 } /* Name.Variable.Global */ .highlight .vi { color: #008080 } /* Name.Variable.Instance */ .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */PK}HDDDUkk"celery-2.0-archived/_static/up.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME!.<̓EIDAT8͓NABP\EG{%<|xc  cr6@t;b$;3&)h1!﫳Hzz@=)p 3۵e2/ߴ ( %^ND^ }3H1DoǪISFұ?, G`{v^X[b]&HC3{:sO& ?,[eL#IENDB`PKBFCVR>>#celery-2.0-archived/_static/rtd.css/* * rtd.css * ~~~~~~~~~~~~~~~ * * Sphinx stylesheet -- sphinxdoc theme. Originally created by * Armin Ronacher for Werkzeug. * * Customized for ReadTheDocs by Eric Pierce & Eric Holscher * * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /* RTD colors * light blue: #e8ecef * medium blue: #8ca1af * dark blue: #465158 * dark grey: #444444 * * white hover: #d1d9df; * medium blue hover: #697983; * green highlight: #8ecc4c * light blue (project bar): #e8ecef */ @import url("basic.css"); /* PAGE LAYOUT -------------------------------------------------------------- */ body { font: 100%/1.5 "ff-meta-web-pro-1","ff-meta-web-pro-2",Arial,"Helvetica Neue",sans-serif; text-align: center; color: black; background-color: #465158; padding: 0; margin: 0; } div.document { text-align: left; background-color: #e8ecef; } div.bodywrapper { background-color: #ffffff; border-left: 1px solid #ccc; border-bottom: 1px solid #ccc; margin: 0 0 0 16em; } div.body { margin: 0; padding: 0.5em 1.3em; min-width: 20em; } div.related { font-size: 1em; background-color: #465158; } div.documentwrapper { float: left; width: 100%; background-color: #e8ecef; } /* HEADINGS --------------------------------------------------------------- */ h1 { margin: 0; padding: 0.7em 0 0.3em 0; font-size: 1.5em; line-height: 1.15; color: #111; clear: both; } h2 { margin: 2em 0 0.2em 0; font-size: 1.35em; padding: 0; color: #465158; } h3 { margin: 1em 0 -0.3em 0; font-size: 1.2em; color: #6c818f; } div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { color: black; } h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { display: none; margin: 0 0 0 0.3em; padding: 0 0.2em 0 0.2em; color: #aaa !important; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { display: inline; } h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, h5 a.anchor:hover, h6 a.anchor:hover { color: #777; background-color: #eee; } /* LINKS ------------------------------------------------------------------ */ /* Normal links get a pseudo-underline */ a { color: #444; text-decoration: none; border-bottom: 1px solid #ccc; } /* Links in sidebar, TOC, index trees and tables have no underline */ .sphinxsidebar a, .toctree-wrapper a, .indextable a, #indices-and-tables a { color: #444; text-decoration: none; /* border-bottom: none; */ } /* Search box size */ div.sphinxsidebar #searchbox input[type="submit"] { width: 50px; } /* Most links get an underline-effect when hovered */ a:hover, div.toctree-wrapper a:hover, .indextable a:hover, #indices-and-tables a:hover { color: #111; text-decoration: none; border-bottom: 1px solid #111; } /* Footer links */ div.footer a { color: #86989B; text-decoration: none; border: none; } div.footer a:hover { color: #a6b8bb; text-decoration: underline; border: none; } /* Permalink anchor (subtle grey with a red hover) */ div.body a.headerlink { color: #ccc; font-size: 1em; margin-left: 6px; padding: 0 4px 0 4px; text-decoration: none; border: none; } div.body a.headerlink:hover { color: #c60f0f; border: none; } /* NAVIGATION BAR --------------------------------------------------------- */ div.related ul { height: 2.5em; } div.related ul li { margin: 0; padding: 0.65em 0; float: left; display: block; color: white; /* For the >> separators */ font-size: 0.8em; } div.related ul li.right { float: right; margin-right: 5px; color: transparent; /* Hide the | separators */ } /* "Breadcrumb" links in nav bar */ div.related ul li a { order: none; background-color: inherit; font-weight: bold; margin: 6px 0 6px 4px; line-height: 1.75em; color: #ffffff; padding: 0.4em 0.8em; border: none; border-radius: 3px; } /* previous / next / modules / index links look more like buttons */ div.related ul li.right a { margin: 0.375em 0; background-color: #697983; text-shadow: 0 1px rgba(0, 0, 0, 0.5); border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* All navbar links light up as buttons when hovered */ div.related ul li a:hover { background-color: #8ca1af; color: #ffffff; text-decoration: none; border-radius: 3px; -webkit-border-radius: 3px; -moz-border-radius: 3px; } /* Take extra precautions for tt within links */ a tt, div.related ul li a tt { background: inherit !important; color: inherit !important; } /* SIDEBAR ---------------------------------------------------------------- */ div.sphinxsidebarwrapper { padding: 0; } div.sphinxsidebar { margin: 0; margin-left: -100%; float: left; top: 3em; left: 0; padding: 0 1em; width: 14em; font-size: 1em; text-align: left; background-color: #e8ecef; } div.sphinxsidebar img { max-width: 12em; } div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p.logo { margin: 1.2em 0 0.3em 0; font-size: 1em; padding: 0; color: #222222; font-family: "ff-meta-web-pro-1", "ff-meta-web-pro-2", "Arial", "Helvetica Neue", sans-serif; } div.sphinxsidebar h3 a { color: #444444; } div.sphinxsidebar ul, div.sphinxsidebar p { margin-top: 0; padding-left: 0; line-height: 130%; background-color: #e8ecef; } /* No bullets for nested lists, but a little extra indentation */ div.sphinxsidebar ul ul { list-style-type: none; margin-left: 1.5em; padding: 0; } /* A little top/bottom padding to prevent adjacent links' borders * from overlapping each other */ div.sphinxsidebar ul li { padding: 1px 0; } /* A little left-padding to make these align with the ULs */ div.sphinxsidebar p.topless { padding-left: 0 0 0 1em; } /* Make these into hidden one-liners */ div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: nowrap; overflow: hidden; } /* ...which become visible when hovered */ div.sphinxsidebar ul li:hover, div.sphinxsidebar p.topless:hover { overflow: visible; } /* Search text box and "Go" button */ #searchbox { margin-top: 2em; margin-bottom: 1em; background: #ddd; padding: 0.5em; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } #searchbox h3 { margin-top: 0; } /* Make search box and button abut and have a border */ input, div.sphinxsidebar input { border: 1px solid #999; float: left; } /* Search textbox */ input[type="text"] { margin: 0; padding: 0 3px; height: 20px; width: 144px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; -moz-border-radius-topleft: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; } /* Search button */ input[type="submit"] { margin: 0 0 0 -1px; /* -1px prevents a double-border with textbox */ height: 22px; color: #444; background-color: #e8ecef; padding: 1px 4px; font-weight: bold; border-top-right-radius: 3px; border-bottom-right-radius: 3px; -moz-border-radius-topright: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; } input[type="submit"]:hover { color: #ffffff; background-color: #8ecc4c; } div.sphinxsidebar p.searchtip { clear: both; padding: 0.5em 0 0 0; background: #ddd; color: #666; font-size: 0.9em; } /* Sidebar links are unusual */ div.sphinxsidebar li a, div.sphinxsidebar p a { background: #e8ecef; /* In case links overlap main content */ border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; border: 1px solid transparent; /* To prevent things jumping around on hover */ padding: 0 5px 0 5px; } div.sphinxsidebar li a:hover, div.sphinxsidebar p a:hover { color: #111; text-decoration: none; border: 1px solid #888; } div.sphinxsidebar p.logo a { border: 0; } /* Tweak any link appearing in a heading */ div.sphinxsidebar h3 a { } /* OTHER STUFF ------------------------------------------------------------ */ cite, code, tt { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.01em; } tt { background-color: #f2f2f2; color: #444; } tt.descname, tt.descclassname, tt.xref { border: 0; } hr { border: 1px solid #abc; margin: 2em; } pre, #_fontwidthtest { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; margin: 1em 2em; font-size: 0.95em; letter-spacing: 0.015em; line-height: 120%; padding: 0.5em; border: 1px solid #ccc; background-color: #eee; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; } pre a { color: inherit; text-decoration: underline; } td.linenos pre { margin: 1em 0em; } td.code pre { margin: 1em 0em; } div.quotebar { background-color: #f8f8f8; max-width: 250px; float: right; padding: 2px 7px; border: 1px solid #ccc; } div.topic { background-color: #f8f8f8; } table { border-collapse: collapse; margin: 0 -0.5em 0 -0.5em; } table td, table th { padding: 0.2em 0.5em 0.2em 0.5em; } /* ADMONITIONS AND WARNINGS ------------------------------------------------- */ /* Shared by admonitions, warnings and sidebars */ div.admonition, div.warning, div.sidebar { font-size: 0.9em; margin: 2em; padding: 0; /* border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px; */ } div.admonition p, div.warning p, div.sidebar p { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre, div.sidebar pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-title, div.sidebar p.sidebar-title { margin: 0; padding: 0.1em 0 0.1em 0.5em; color: white; font-weight: bold; font-size: 1.1em; text-shadow: 0 1px rgba(0, 0, 0, 0.5); } div.admonition ul, div.admonition ol, div.warning ul, div.warning ol, div.sidebar ul, div.sidebar ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } /* Admonitions and sidebars only */ div.admonition, div.sidebar { border: 1px solid #609060; background-color: #e9ffe9; } div.admonition p.admonition-title, div.sidebar p.sidebar-title { background-color: #70A070; border-bottom: 1px solid #609060; } /* Warnings only */ div.warning { border: 1px solid #900000; background-color: #ffe9e9; } div.warning p.admonition-title { background-color: #b04040; border-bottom: 1px solid #900000; } /* Sidebars only */ div.sidebar { max-width: 30%; } div.versioninfo { margin: 1em 0 0 0; border: 1px solid #ccc; background-color: #DDEAF0; padding: 8px; line-height: 1.3em; font-size: 0.9em; } .viewcode-back { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; } div.viewcode-block:target { background-color: #f4debf; border-top: 1px solid #ac9; border-bottom: 1px solid #ac9; } dl { margin: 1em 0 2.5em 0; } dl dt { font-style: italic; } dl dd { color: rgb(68, 68, 68); font-size: 0.95em; } /* Highlight target when you click an internal link */ dt:target { background: #ffe080; } /* Don't highlight whole divs */ div.highlight { background: transparent; } /* But do highlight spans (so search results can be highlighted) */ span.highlight { background: #ffe080; } div.footer { background-color: #465158; color: #eeeeee; padding: 0 2em 2em 2em; clear: both; font-size: 0.8em; text-align: center; } p { margin: 0.8em 0 0.5em 0; } .section p img.math { margin: 0; } .section p img { margin: 1em 2em; } table.docutils td, table.docutils th { padding: 1px 8px 1px 5px; } /* MOBILE LAYOUT -------------------------------------------------------------- */ @media screen and (max-width: 600px) { h1, h2, h3, h4, h5 { position: relative; } ul { padding-left: 1.25em; } div.bodywrapper a.headerlink, #indices-and-tables h1 a { color: #e6e6e6; font-size: 80%; float: right; line-height: 1.8; position: absolute; right: -0.7em; visibility: inherit; } div.bodywrapper h1 a.headerlink, #indices-and-tables h1 a { line-height: 1.5; } pre { font-size: 0.7em; overflow: auto; word-wrap: break-word; white-space: pre-wrap; } div.related ul { height: 2.5em; padding: 0; text-align: left; } div.related ul li { clear: both; color: #465158; padding: 0.2em 0; } div.related ul li:last-child { border-bottom: 1px dotted #8ca1af; padding-bottom: 0.4em; margin-bottom: 1em; width: 100%; } div.related ul li a { color: #465158; padding-right: 0; } div.related ul li a:hover { background: inherit; color: inherit; } div.related ul li.right { clear: none; padding: 0.65em 0; margin-bottom: 0.5em; } div.related ul li.right a { color: #fff; padding-right: 0.8em; } div.related ul li.right a:hover { background-color: #8ca1af; } div.body { clear: both; min-width: 0; word-wrap: break-word; } div.bodywrapper { margin: 0 0 0 0; } div.sphinxsidebar { float: none; margin: 0; width: auto; } div.sphinxsidebar input[type="text"] { height: 2em; line-height: 2em; width: 70%; } div.sphinxsidebar input[type="submit"] { height: 2em; margin-left: 0.5em; width: 20%; } div.sphinxsidebar p.searchtip { background: inherit; margin-bottom: 1em; } div.sphinxsidebar ul li, div.sphinxsidebar p.topless { white-space: normal; } .bodywrapper img { display: block; margin-left: auto; margin-right: auto; max-width: 100%; } div.documentwrapper { float: none; } div.admonition, div.warning, pre, blockquote { margin-left: 0em; margin-right: 0em; } .body p img { margin: 0; } #searchbox { background: transparent; } .related:not(:first-child) li { display: none; } .related:not(:first-child) li.right { display: block; } div.footer { padding: 1em; } .rtd_doc_footer .rtd-badge { float: none; margin: 1em auto; position: static; } .rtd_doc_footer .rtd-badge.revsys-inline { margin-right: auto; margin-bottom: 2em; } table.indextable { display: block; width: auto; } .indextable tr { display: block; } .indextable td { display: block; padding: 0; width: auto !important; } .indextable td dt { margin: 1em 0; } ul.search { margin-left: 0.25em; } ul.search li div.context { font-size: 90%; line-height: 1.1; margin-bottom: 1; margin-left: 0; } } PK}HDD;l/l/)celery-2.0-archived/_static/underscore.js// Underscore.js 1.3.1 // (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. // Underscore is freely distributable under the MIT license. // Portions of Underscore are inspired or borrowed from Prototype, // Oliver Steele's Functional, and John Resig's Micro-Templating. // For all details and documentation: // http://documentcloud.github.com/underscore (function(){function q(a,c,d){if(a===c)return a!==0||1/a==1/c;if(a==null||c==null)return a===c;if(a._chain)a=a._wrapped;if(c._chain)c=c._wrapped;if(a.isEqual&&b.isFunction(a.isEqual))return a.isEqual(c);if(c.isEqual&&b.isFunction(c.isEqual))return c.isEqual(a);var e=l.call(a);if(e!=l.call(c))return false;switch(e){case "[object String]":return a==String(c);case "[object Number]":return a!=+a?c!=+c:a==0?1/a==1/c:a==+c;case "[object Date]":case "[object Boolean]":return+a==+c;case "[object RegExp]":return a.source== c.source&&a.global==c.global&&a.multiline==c.multiline&&a.ignoreCase==c.ignoreCase}if(typeof a!="object"||typeof c!="object")return false;for(var f=d.length;f--;)if(d[f]==a)return true;d.push(a);var f=0,g=true;if(e=="[object Array]"){if(f=a.length,g=f==c.length)for(;f--;)if(!(g=f in a==f in c&&q(a[f],c[f],d)))break}else{if("constructor"in a!="constructor"in c||a.constructor!=c.constructor)return false;for(var h in a)if(b.has(a,h)&&(f++,!(g=b.has(c,h)&&q(a[h],c[h],d))))break;if(g){for(h in c)if(b.has(c, h)&&!f--)break;g=!f}}d.pop();return g}var r=this,G=r._,n={},k=Array.prototype,o=Object.prototype,i=k.slice,H=k.unshift,l=o.toString,I=o.hasOwnProperty,w=k.forEach,x=k.map,y=k.reduce,z=k.reduceRight,A=k.filter,B=k.every,C=k.some,p=k.indexOf,D=k.lastIndexOf,o=Array.isArray,J=Object.keys,s=Function.prototype.bind,b=function(a){return new m(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=b;exports._=b}else r._=b;b.VERSION="1.3.1";var j=b.each= b.forEach=function(a,c,d){if(a!=null)if(w&&a.forEach===w)a.forEach(c,d);else if(a.length===+a.length)for(var e=0,f=a.length;e2;a== null&&(a=[]);if(y&&a.reduce===y)return e&&(c=b.bind(c,e)),f?a.reduce(c,d):a.reduce(c);j(a,function(a,b,i){f?d=c.call(e,d,a,b,i):(d=a,f=true)});if(!f)throw new TypeError("Reduce of empty array with no initial value");return d};b.reduceRight=b.foldr=function(a,c,d,e){var f=arguments.length>2;a==null&&(a=[]);if(z&&a.reduceRight===z)return e&&(c=b.bind(c,e)),f?a.reduceRight(c,d):a.reduceRight(c);var g=b.toArray(a).reverse();e&&!f&&(c=b.bind(c,e));return f?b.reduce(g,c,d,e):b.reduce(g,c)};b.find=b.detect= function(a,c,b){var e;E(a,function(a,g,h){if(c.call(b,a,g,h))return e=a,true});return e};b.filter=b.select=function(a,c,b){var e=[];if(a==null)return e;if(A&&a.filter===A)return a.filter(c,b);j(a,function(a,g,h){c.call(b,a,g,h)&&(e[e.length]=a)});return e};b.reject=function(a,c,b){var e=[];if(a==null)return e;j(a,function(a,g,h){c.call(b,a,g,h)||(e[e.length]=a)});return e};b.every=b.all=function(a,c,b){var e=true;if(a==null)return e;if(B&&a.every===B)return a.every(c,b);j(a,function(a,g,h){if(!(e= e&&c.call(b,a,g,h)))return n});return e};var E=b.some=b.any=function(a,c,d){c||(c=b.identity);var e=false;if(a==null)return e;if(C&&a.some===C)return a.some(c,d);j(a,function(a,b,h){if(e||(e=c.call(d,a,b,h)))return n});return!!e};b.include=b.contains=function(a,c){var b=false;if(a==null)return b;return p&&a.indexOf===p?a.indexOf(c)!=-1:b=E(a,function(a){return a===c})};b.invoke=function(a,c){var d=i.call(arguments,2);return b.map(a,function(a){return(b.isFunction(c)?c||a:a[c]).apply(a,d)})};b.pluck= function(a,c){return b.map(a,function(a){return a[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);if(!c&&b.isEmpty(a))return-Infinity;var e={computed:-Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;b>=e.computed&&(e={value:a,computed:b})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);if(!c&&b.isEmpty(a))return Infinity;var e={computed:Infinity};j(a,function(a,b,h){b=c?c.call(d,a,b,h):a;bd?1:0}),"value")};b.groupBy=function(a,c){var d={},e=b.isFunction(c)?c:function(a){return a[c]};j(a,function(a,b){var c=e(a,b);(d[c]||(d[c]=[])).push(a)});return d};b.sortedIndex=function(a, c,d){d||(d=b.identity);for(var e=0,f=a.length;e>1;d(a[g])=0})})};b.difference=function(a){var c=b.flatten(i.call(arguments,1));return b.filter(a,function(a){return!b.include(c,a)})};b.zip=function(){for(var a=i.call(arguments),c=b.max(b.pluck(a,"length")),d=Array(c),e=0;e=0;d--)b=[a[d].apply(this,b)];return b[0]}}; b.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};b.keys=J||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var c=[],d;for(d in a)b.has(a,d)&&(c[c.length]=d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=b.methods=function(a){var c=[],d;for(d in a)b.isFunction(a[d])&&c.push(d);return c.sort()};b.extend=function(a){j(i.call(arguments,1),function(b){for(var d in b)a[d]=b[d]});return a};b.defaults=function(a){j(i.call(arguments, 1),function(b){for(var d in b)a[d]==null&&(a[d]=b[d])});return a};b.clone=function(a){return!b.isObject(a)?a:b.isArray(a)?a.slice():b.extend({},a)};b.tap=function(a,b){b(a);return a};b.isEqual=function(a,b){return q(a,b,[])};b.isEmpty=function(a){if(b.isArray(a)||b.isString(a))return a.length===0;for(var c in a)if(b.has(a,c))return false;return true};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=o||function(a){return l.call(a)=="[object Array]"};b.isObject=function(a){return a===Object(a)}; b.isArguments=function(a){return l.call(a)=="[object Arguments]"};if(!b.isArguments(arguments))b.isArguments=function(a){return!(!a||!b.has(a,"callee"))};b.isFunction=function(a){return l.call(a)=="[object Function]"};b.isString=function(a){return l.call(a)=="[object String]"};b.isNumber=function(a){return l.call(a)=="[object Number]"};b.isNaN=function(a){return a!==a};b.isBoolean=function(a){return a===true||a===false||l.call(a)=="[object Boolean]"};b.isDate=function(a){return l.call(a)=="[object Date]"}; b.isRegExp=function(a){return l.call(a)=="[object RegExp]"};b.isNull=function(a){return a===null};b.isUndefined=function(a){return a===void 0};b.has=function(a,b){return I.call(a,b)};b.noConflict=function(){r._=G;return this};b.identity=function(a){return a};b.times=function(a,b,d){for(var e=0;e/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")};b.mixin=function(a){j(b.functions(a), function(c){K(c,b[c]=a[c])})};var L=0;b.uniqueId=function(a){var b=L++;return a?a+b:b};b.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var t=/.^/,u=function(a){return a.replace(/\\\\/g,"\\").replace(/\\'/g,"'")};b.template=function(a,c){var d=b.templateSettings,d="var __p=[],print=function(){__p.push.apply(__p,arguments);};with(obj||{}){__p.push('"+a.replace(/\\/g,"\\\\").replace(/'/g,"\\'").replace(d.escape||t,function(a,b){return"',_.escape("+ u(b)+"),'"}).replace(d.interpolate||t,function(a,b){return"',"+u(b)+",'"}).replace(d.evaluate||t,function(a,b){return"');"+u(b).replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};b.chain=function(a){return b(a).chain()};var m=function(a){this._wrapped=a};b.prototype=m.prototype;var v=function(a,c){return c?b(a).chain():a},K=function(a,c){m.prototype[a]= function(){var a=i.call(arguments);H.call(a,this._wrapped);return v(c.apply(b,a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];m.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var e=d.length;(a=="shift"||a=="splice")&&e===0&&delete d[0];return v(d,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];m.prototype[a]=function(){return v(b.apply(this._wrapped,arguments),this._chain)}});m.prototype.chain=function(){this._chain= true;return this};m.prototype.value=function(){return this._wrapped}}).call(this); PKHDDq.celery-2.0-archived/_static/readthedocs-ext.js // Intenionally left blank PK}HDD<>+celery-2.0-archived/_static/ajax-loader.gifGIF89aU|NU|l!Created with ajaxload.info! ! NETSCAPE2.0,30Ikc:Nf E1º.`q-[9ݦ9 JkH! ,4N!  DqBQT`1 `LE[|ua C%$*! ,62#+AȐ̔V/cNIBap ̳ƨ+Y2d! ,3b%+2V_ ! 1DaFbR]=08,Ȥr9L! ,2r'+JdL &v`\bThYB)@<&,ȤR! ,3 9tڞ0!.BW1  sa50 m)J! ,2 ٜU]qp`a4AF0` @1Α! ,20IeBԜ) q10ʰPaVڥ ub[;PK}HDDPu u 'celery-2.0-archived/_static/comment.pngPNG  IHDRa OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-bKGD pHYs  tIME 1;VIDAT8ukU?sg4h`G1 RQܸp%Bn"bЍXJ .4V iZ##T;m!4bP~7r>ιbwc;m;oӍAΆ ζZ^/|s{;yR=9(rtVoG1w#_ө{*E&!(LVuoᲵ‘D PG4 :&~*ݳreu: S-,U^E&JY[P!RB ŖޞʖR@_ȐdBfNvHf"2T]R j'B1ddAak/DIJD D2H&L`&L $Ex,6|~_\P $MH`I=@Z||ttvgcЕWTZ'3rje"ܵx9W> mb|byfFRx{w%DZC$wdցHmWnta(M<~;9]C/_;Տ#}o`zSڷ_>:;x컓?yݩ|}~wam-/7=0S5RP"*֯ IENDB`PK}HDDhkk$celery-2.0-archived/_static/down.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME"U{IDAT8ҡNCAJ, ++@4>/U^,~T&3M^^^PM6ٹs*RJa)eG*W<"F Fg78G>q OIp:sAj5GنyD^+yU:p_%G@D|aOs(yM,"msx:.b@D|`Vٟ۲иeKſ/G!IENDB`PK}HDD+0$celery-2.0-archived/_static/file.pngPNG  IHDRabKGD pHYs  tIME  )TIDAT8˭J@Ir('[ "&xYZ X0!i|_@tD] #xjv YNaEi(əy@D&`6PZk$)5%"z.NA#Aba`Vs_3c,2mj [klvy|!Iմy;v "߮a?A7`c^nk?Bg}TЙD# "RD1yER*6MJ3K_Ut8F~IENDB`PK}HDD[{gtt*celery-2.0-archived/_static/up-pressed.pngPNG  IHDRasRGBbKGDC pHYs B(xtIME ,ZeIDAT8͓jA*WKk-,By@- و/`cXYh!6jf GrOlXvvfk2!p!GOOԲ &zf 6|M~%`]* ΛM]K ZĆ1Er%ȶcm1`= 0 && !jQuery(node.parentNode).hasClass(className)) { var span = document.createElement("span"); span.className = className; span.appendChild(document.createTextNode(val.substr(pos, text.length))); node.parentNode.insertBefore(span, node.parentNode.insertBefore( document.createTextNode(val.substr(pos + text.length)), node.nextSibling)); node.nodeValue = val.substr(0, pos); } } else if (!jQuery(node).is("button, select, textarea")) { jQuery.each(node.childNodes, function() { highlight(this); }); } } return this.each(function() { highlight(this); }); }; /** * Small JavaScript module for the documentation. */ var Documentation = { init : function() { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); }, /** * i18n support */ TRANSLATIONS : {}, PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; }, LOCALE : 'unknown', // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) gettext : function(string) { var translated = Documentation.TRANSLATIONS[string]; if (typeof translated == 'undefined') return string; return (typeof translated == 'string') ? translated : translated[0]; }, ngettext : function(singular, plural, n) { var translated = Documentation.TRANSLATIONS[singular]; if (typeof translated == 'undefined') return (n == 1) ? singular : plural; return translated[Documentation.PLURALEXPR(n)]; }, addTranslations : function(catalog) { for (var key in catalog.messages) this.TRANSLATIONS[key] = catalog.messages[key]; this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); this.LOCALE = catalog.locale; }, /** * add context elements like header anchor links */ addContextElements : function() { $('div[id] > :header:first').each(function() { $('\u00B6'). attr('href', '#' + this.id). attr('title', _('Permalink to this headline')). appendTo(this); }); $('dt[id]').each(function() { $('\u00B6'). attr('href', '#' + this.id). attr('title', _('Permalink to this definition')). appendTo(this); }); }, /** * workaround a firefox stupidity */ fixFirefoxAnchorBug : function() { if (document.location.hash && $.browser.mozilla) window.setTimeout(function() { document.location.href += ''; }, 10); }, /** * highlight the search words provided in the url in the text */ highlightSearchWords : function() { var params = $.getQueryParameters(); var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; if (terms.length) { var body = $('div.body'); window.setTimeout(function() { $.each(terms, function() { body.highlightText(this.toLowerCase(), 'highlighted'); }); }, 10); $('') .appendTo($('#searchbox')); } }, /** * init the domain index toggle buttons */ initIndexTable : function() { var togglers = $('img.toggler').click(function() { var src = $(this).attr('src'); var idnum = $(this).attr('id').substr(7); $('tr.cg-' + idnum).toggle(); if (src.substr(-9) == 'minus.png') $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); else $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); }).css('display', ''); if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { togglers.click(); } }, /** * helper function to hide the search marks again */ hideSearchWords : function() { $('#searchbox .highlight-link').fadeOut(300); $('span.highlighted').removeClass('highlighted'); }, /** * make the url absolute */ makeURL : function(relativeURL) { return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; }, /** * get the current relative url */ getCurrentURL : function() { var path = document.location.pathname; var parts = path.split(/\//); $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { if (this == '..') parts.pop(); }); var url = parts.join('/'); return path.substring(url.lastIndexOf('/') + 1, path.length - 1); } }; // quick alias for translations _ = Documentation.gettext; $(document).ready(function() { Documentation.init(); }); PKHDD(xEE*celery-2.0-archived/_static/searchtools.js/* * searchtools.js_t * ~~~~~~~~~~~~~~~~ * * Sphinx JavaScript utilties for the full-text search. * * :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ /** * Porter Stemmer */ var Stemmer = function() { var step2list = { ational: 'ate', tional: 'tion', enci: 'ence', anci: 'ance', izer: 'ize', bli: 'ble', alli: 'al', entli: 'ent', eli: 'e', ousli: 'ous', ization: 'ize', ation: 'ate', ator: 'ate', alism: 'al', iveness: 'ive', fulness: 'ful', ousness: 'ous', aliti: 'al', iviti: 'ive', biliti: 'ble', logi: 'log' }; var step3list = { icate: 'ic', ative: '', alize: 'al', iciti: 'ic', ical: 'ic', ful: '', ness: '' }; var c = "[^aeiou]"; // consonant var v = "[aeiouy]"; // vowel var C = c + "[^aeiouy]*"; // consonant sequence var V = v + "[aeiou]*"; // vowel sequence var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 var s_v = "^(" + C + ")?" + v; // vowel in stem this.stemWord = function (w) { var stem; var suffix; var firstch; var origword = w; if (w.length < 3) return w; var re; var re2; var re3; var re4; firstch = w.substr(0,1); if (firstch == "y") w = firstch.toUpperCase() + w.substr(1); // Step 1a re = /^(.+?)(ss|i)es$/; re2 = /^(.+?)([^s])s$/; if (re.test(w)) w = w.replace(re,"$1$2"); else if (re2.test(w)) w = w.replace(re2,"$1$2"); // Step 1b re = /^(.+?)eed$/; re2 = /^(.+?)(ed|ing)$/; if (re.test(w)) { var fp = re.exec(w); re = new RegExp(mgr0); if (re.test(fp[1])) { re = /.$/; w = w.replace(re,""); } } else if (re2.test(w)) { var fp = re2.exec(w); stem = fp[1]; re2 = new RegExp(s_v); if (re2.test(stem)) { w = stem; re2 = /(at|bl|iz)$/; re3 = new RegExp("([^aeiouylsz])\\1$"); re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); if (re2.test(w)) w = w + "e"; else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } else if (re4.test(w)) w = w + "e"; } } // Step 1c re = /^(.+?)y$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(s_v); if (re.test(stem)) w = stem + "i"; } // Step 2 re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; suffix = fp[2]; re = new RegExp(mgr0); if (re.test(stem)) w = stem + step2list[suffix]; } // Step 3 re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; suffix = fp[2]; re = new RegExp(mgr0); if (re.test(stem)) w = stem + step3list[suffix]; } // Step 4 re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; re2 = /^(.+?)(s|t)(ion)$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(mgr1); if (re.test(stem)) w = stem; } else if (re2.test(w)) { var fp = re2.exec(w); stem = fp[1] + fp[2]; re2 = new RegExp(mgr1); if (re2.test(stem)) w = stem; } // Step 5 re = /^(.+?)e$/; if (re.test(w)) { var fp = re.exec(w); stem = fp[1]; re = new RegExp(mgr1); re2 = new RegExp(meq1); re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) w = stem; } re = /ll$/; re2 = new RegExp(mgr1); if (re.test(w) && re2.test(w)) { re = /.$/; w = w.replace(re,""); } // and turn initial Y back to y if (firstch == "y") w = firstch.toLowerCase() + w.substr(1); return w; } } /** * Simple result scoring code. */ var Scorer = { // Implement the following function to further tweak the score for each result // The function takes a result array [filename, title, anchor, descr, score] // and returns the new score. /* score: function(result) { return result[4]; }, */ // query matches the full name of an object objNameMatch: 11, // or matches in the last dotted part of the object name objPartialMatch: 6, // Additive scores depending on the priority of the object objPrio: {0: 15, // used to be importantResults 1: 5, // used to be objectResults 2: -5}, // used to be unimportantResults // Used when the priority is not in the mapping. objPrioDefault: 0, // query found in title title: 15, // query found in terms term: 5 }; /** * Search Module */ var Search = { _index : null, _queued_query : null, _pulse_status : -1, init : function() { var params = $.getQueryParameters(); if (params.q) { var query = params.q[0]; $('input[name="q"]')[0].value = query; this.performSearch(query); } }, loadIndex : function(url) { $.ajax({type: "GET", url: url, data: null, dataType: "script", cache: true, complete: function(jqxhr, textstatus) { if (textstatus != "success") { document.getElementById("searchindexloader").src = url; } }}); }, setIndex : function(index) { var q; this._index = index; if ((q = this._queued_query) !== null) { this._queued_query = null; Search.query(q); } }, hasIndex : function() { return this._index !== null; }, deferQuery : function(query) { this._queued_query = query; }, stopPulse : function() { this._pulse_status = 0; }, startPulse : function() { if (this._pulse_status >= 0) return; function pulse() { var i; Search._pulse_status = (Search._pulse_status + 1) % 4; var dotString = ''; for (i = 0; i < Search._pulse_status; i++) dotString += '.'; Search.dots.text(dotString); if (Search._pulse_status > -1) window.setTimeout(pulse, 500); } pulse(); }, /** * perform a search for something (or wait until index is loaded) */ performSearch : function(query) { // create the required interface elements this.out = $('#search-results'); this.title = $('

' + _('Searching') + '

').appendTo(this.out); this.dots = $('').appendTo(this.title); this.status = $('

').appendTo(this.out); this.output = $('