'module'对象没有属性'celery'

时间:2015-09-11 16:58:57

标签: python django celery periodic-task

我一直在阅读以前的一些问题的答案以及芹菜文档,我只是无法解决这个问题。我的task.py,celery.py和settings.py都包含在同一个应用程序RBWebfiles中,该文件包含在名为招募板的项目中。我正在尝试创建一个使用celery beat的调度程序运行的周期性任务。

这是我的settings.py处理芹菜的部分:

from __future__ import absolute_import
import os
from datetime import timedelta


CELERY_IMPORTS = ('RBWebfiles.tasks')

CELERYBEAT_SCHEDULE = 'djcelery.schedulers.DatabaseScheduler'
CELERYBEAT_SCHEDULE = {
    'schedule-name':{
        'task': 'RBWebfiles.tasks.requestRefresher',
        'schedule': timedelta(seconds = 30),
    },
}

BROKER_URL = 'django://'

我还在该文件中的已安装应用中添加了“djcelery”

这是我的tasks.py文件:

from __future__ import absolute_import
import datetime
from celery.task.base import periodic_task
from student.models import StudentAccount
from celery import Celery
from celery.utils.log import get_task_logger
import os

celery = Celery('tasks', broker='django://')
logger = get_task_logger(__name__)


os.environ['DJANGO_SETTINGS_MODULE'] = 'RBWebfiles.settings'


@periodic_task(run_every=datetime.timedelta(seconds=30))
def requestRefresher(self):
    logger.info("start task")
    for s in StudentAccount.objects.all():
        s.requestLimit = 0
        s.save()
    return None

最后这是我的celery.py文件:

from __future__ import absolute_import
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'conf.settings')
app = Celery('RBWebfiles.celery')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda : settings.INSTALLED_APPS)

app.conf.update(
    CELERY_RESULT_BACKEND ='djcelery.backends.database:DatabaseBackend',
)

@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

我已经尝试卸载并重新安装celery和django-celery,我不确定我是否只是不理解某些东西或者我犯了一个大错误。我尝试使用以下命令运行它:celery beat -A RBWebfiles

这是追溯:

C:\Users\Lexie Infantino\PycharmProjects\recruitingboard>celery beat -A   RBWebfiles
Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\celery\app\utils.py", line 235, in     find_app
    found = sym.app
AttributeError: 'module' object has no attribute 'app'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python34\lib\runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\Python34\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Python34\Scripts\celery.exe\__main__.py", line 9, in <module>
  File "C:\Python34\lib\site-packages\celery\__main__.py", line 30, in main
    main()
  File "C:\Python34\lib\site-packages\celery\bin\celery.py", line 81, in     main
    cmd.execute_from_commandline(argv)
  File "C:\Python34\lib\site-packages\celery\bin\celery.py", line 769, in     execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "C:\Python34\lib\site-packages\celery\bin\base.py", line 309, in     execute_from_commandline
   argv = self.setup_app_from_commandline(argv)
  File "C:\Python34\lib\site-packages\celery\bin\base.py", line 469, in     setup_app_from_commandline
    self.app = self.find_app(app)
  File "C:\Python34\lib\site-packages\celery\bin\base.py", line 489, in     find_app
    return find_app(app, symbol_by_name=self.symbol_by_name)
  File "C:\Python34\lib\site-packages\celery\app\utils.py", line 240, in     find_app
    found = sym.celery
AttributeError: 'module' object has no attribute 'celery'

1 个答案:

答案 0 :(得分:0)

确保djcelery位于您的INSTALLED_APPS中,然后尝试使用heroku run rake db:migrate启动芹菜节拍。