现在的位置: 首页 > 综合 > 正文

OJ2.0 Django+Rabbitmq+Celery配置

2018年02月21日 ⁄ 综合 ⁄ 共 1776字 ⁄ 字号 评论关闭

在cugbacm@AY14040915414956495eZ:~/oj/oj/oj目录下的setting文件中:

djcelery配置:

INSTALLED_APPS = (
     'django.contrib.admin',
     'django.contrib.auth',
     'django.contrib.contenttypes',
     'django.contrib.sessions',
     'django.contrib.messages',
     'django.contrib.staticfiles',
     'djcelery',
     'cugbacm',
     'pagination'
 )

 import djcelery
 djcelery.setup_loader()

celery和rabbitmq配置:

 import sys
 
 CELERY_IMPORTS = (
     'cugbacm.views.problem',
     'cugbacm.views.contest_problem',
     'cugbacm.views.rejudge',
 )
 CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
 from cugbacm.models import Submit
 from datetime import timedelta
 from cugbacm.views.problem import Judge, test
 from cugbacm.views.contest_rank_update import update_running_contest_rank
 
 CELERYBEAT_SCHEDULE = {
   'add-every-60-seconds': {
     'task': 'cugbacm.views.contest_rank_update.update_running_contest_rank',
     'schedule': timedelta(seconds=60),
     'args': ([]),
   }
 }
 
 CELERY_TIMEZONE = 'Asia/Shanghai'
 BROKER_HOST = "127.0.0.1"
 BROKER_PORT = 5672
 BROKER_USER = "guest"
 BROKER_PASSWORD = "guest"
 BROKER_VHOST = "/"

celery'的task文件:

cugbacm@AY14040915414956495eZ:~/oj/oj/oj目录下的celery.py文件中:

 from __future__ import absolute_import
 import os
 from celery import Celery
 from django.conf import settings
 
 # set the default Django settings module for the 'celery' program.
 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'oj.settings')
 
 app = Celery('oj')
 
 # Using a string here means the worker will not have to
 # pickle the object when using Windows.
 app.config_from_object('django.conf:settings')
 app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
 
 
 @app.task(bind=True)
 def debug_task(self):
     print('Request: {0!r}'.format(self.request))

重启celery:sh celery_restart.sh

cugbacm@AY14040915414956495eZ:~/oj/oj目录下celery_restart.sh文件:

ps -ef|grep celery|grep -v grep|cut -c 9-15|xargs kill -9
 nohup python manage.py celeryd -B -D -l info

由于没有了解内核是怎样实现的,所以具体内核怎样发送判题任务我不太清楚,期待boss朱后期补充。。。

抱歉!评论已关闭.