在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