- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
环境:django 1.6.5 python 2.7 celery 3.1.11
我的目标服务器运行这个项目没有安装 djcelery。所以,我不想使用 djcelery。我正在关注 DOCS First steps with Django和 Using Celery in your Application .当我运行 celery -A djproj -B -l debug
时,我得到了 KeyError。 [tasks]
中实际上没有目标任务。任何人都知道如何解决它?谢谢。
错误
[tasks]
. celery.backend_cleanup
. celery.chain
. celery.chord
. celery.chord_unlock
. celery.chunks
. celery.group
. celery.map
. celery.starmap
. djproj.celery.debug_task
. djproj.celery.defaulttask1
. djproj.celery.hello
... ...
[2014-06-19 16:08:23,007: INFO/MainProcess] Received task: djproj.celery.hello[794e54c7-62c8-4ad8-bcbb-64ff809366d1]
[2014-06-19 16:08:23,008: DEBUG/MainProcess] TaskPool: Apply <function _fast_trace_task at 0x1036d17d0> (args:('djproj.celery.hello', '794e54c7-62c8-4ad8-bcbb-64ff809366d1', [], {}, {'utc': True, u'is_eager': False, 'chord': None, u'group': None, 'args': [], 'retries': 0, u'delivery_info': {u'priority': 0, u'redelivered': None, u'routing_key': u'celery', u'exchange': u'celery'}, 'expires': None, u'hostname': 'celery@nluckys-Mac.local', 'task': 'djproj.celery.hello', 'callbacks': None, u'correlation_id': u'794e54c7-62c8-4ad8-bcbb-64ff809366d1', 'errbacks': None, 'timelimit': (None, None), 'taskset': None, 'kwargs': {}, 'eta': None, u'reply_to': u'20fe5513-efc2-3e69-9541-8e82758f94f9', 'id': '794e54c7-62c8-4ad8-bcbb-64ff809366d1', u'headers': {}}) kwargs:{})
[2014-06-19 16:08:23,010: WARNING/Worker-2] helloincelery
[2014-06-19 16:08:23,010: ERROR/MainProcess] Received unregistered task of type 'apps.app1.tuan.tuantask1'.
The message has been ignored and discarded.
Did you remember to import the module containing this task?
Or maybe you are using relative imports?
Please see http://bit.ly/gLye1c for more information.
The full contents of the message body was:
{'utc': True, 'chord': None, 'args': [], 'retries': 0, 'expires': None, 'task': 'apps.app1.tuan.tuantask1', 'callbacks': None, 'errbacks': None, 'timelimit': (None, None), 'taskset': None, 'kwargs': {}, 'eta': None, 'id': 'f2f92c1d-ac6d-4131-a029-123fbfc4ab48'} (220b)
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/celery/worker/consumer.py", line 455, in on_task_received
strategies[name](message, body,
KeyError: 'apps.app1.tuan.tuantask1'
日程表似乎不起作用。我的完整代码是 here .部分代码粘贴如下。
我的项目文件夹:
djproj
├── apps
│ ├── __init__.py
│ └── app1
│ ├── __init__.py
│ ├── admin.py
│ ├── models.py
│ ├── tests.py
│ ├── tuan.py
│ └── views.py
├── djproj
│ ├── __init__.py
│ ├── celery.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── files
├── manage.py
└── run.sh
djproj/djproj/__init__.py
from __future__ import absolute_import
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app
djproj/djproj/celery.py
from __future__ import absolute_import
import os
import datetime
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', 'djproj.settings')
app = Celery('djproj')
# 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))
@app.task
def defaulttask1():
currt = datetime.datetime.now()
with open("files/defaulttask1.txt", "w") as fo:
print >> fo, currt.isoformat()+"default_task_1"
return currt
@app.task
def hello():
print "helloincelery"
djproj/djproj/settings.py
"""
Django settings for djproj project.
For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""
from __future__ import absolute_import
from celery.schedules import crontab
BROKER_URL = 'redis://localhost:6379/0'
from datetime import timedelta
CELERYBEAT_SCHEDULE = {
#'defaulttask1': {
# 'task': 'djproj.celery.defaulttask1',
# 'schedule': timedelta(seconds=3)
#},
'hello': {
'task': 'djproj.celery.hello',
'schedule': timedelta(seconds=4)
},
'tuantask1': {
'task': 'apps.app1.tuan.tuantask1',
'schedule': timedelta(seconds=6)
},
#'tuantask2': {
# 'task': 'app1.tuan.tuantask2',
# 'schedule': crontab(minute=55, hour=17)
#}
}
TIME_ZONE = 'Asia/Shanghai'
DATETIME_FORMAT = 'Y-m-d H:i:s'
TIME_FORMAT = 'Y-m-d H:i:s'
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '+df53@zaea16*pa%)kyta=ciam#$1c1&tjx-5!59f+nlo)n#!4'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'apps.app1',
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'djproj.urls'
WSGI_APPLICATION = 'djproj.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/
LANGUAGE_CODE = 'zh_CN'
#TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
djproj/apps/app1/tuan.py
from __future__ import absolute_import
#from djproj.celery import app
from celery import shared_task
import datetime
#@shared_task
#def add(x, y):
# return x + y
#@shared_task
#def mul(x, y):
# return x * y
#@shared_task
#def xsum(numbers):
# return sum(numbers)
@shared_task
def tuantask1():
currt = datetime.datetime.now()
with open("files/tuantask1.txt", "w") as fo:
print >> fo, currt.isoformat()+"tuantask_1"
return currt.isoformat()
@shared_task
def tuantask2():
print "stest===="
djproj/run.sh
celery -A djproj worker -B -l debug
最佳答案
好吧,我知道会发生什么。我需要将 tuan.py
修改为 tasks.py
,因为 celery.py 中的 autodiscover_tasks
只能在名为 的应用程序中找到任务任务.py
。如果不修改文件名,只需使用 CELERY_IMPORTS
手动导入任务在 settings.py 中使用绝对路径(例如 'apps.app1.tuan' )也可以。见DOC
a common practice for reusable apps is to define all tasks in a separate
tasks.py module, and Celery does have a way to autodiscover these modules
|
This way you do not have to manually add the individual modules to the
CELERY_IMPORTS setting.
关于python - celery 时间表不起作用并使用 Django 得到 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24301649/
我有以下格式的一些数据: 薪水 代码及时 1690 09:03:00 1690 09:13:00 1690 09:07:00 1691 08:48:00 1691 08:52:00 1691 08:5
在基于 jsp 和 servelet 的 Web 应用程序中实现类似 cron 的调度程序的最佳方法是什么?使用“定时器服务”遇到了一个选项。任何其他替代方案或对计时器服务的任何评论? 提前致谢 沙米
好吧,我对 MySQL 和数据库总体来说还很陌生。我想在一段时间后对数据库进行更新。让我解释一下。 所以为了练习,我正在用 php 构建一个游戏,在这个游戏中你将能够升级东西。比如说一栋建筑,从1级升
我想为每个用户创建一个典型的学校时间表。 最终产品应如下所示: +----+---------+---------+-----------+----------+--------+ | h | Mo
我的表格: timetable +----+---------+-------+--------+---------+---------+------+ | id | user_id | s_day
我的网站涉及安排重复类(class)和事件。目前,我已经使用 php 和 javascript 构建了一个表,该表逐个时间段扫描我的 mysql 数据库,每天查看是否有安排的事件或时间段是否空闲。 它
我有一个关于日程安排的问题。我需要为约会制作一个时间表生成器。这是目前的情况。 P1 与 P2 有约会 A。 P3和P4有个约会B。 等等…… 预约 A 大约需要 15 分钟 B约需40分钟 (时长视
我有一个配置如下的 celery 时间表: CELERYBEAT_SCHEDULE = { "runs-every-30-seconds": { "task": "tasks.
我想在“每个月的最后一天 10:15”和“每个月的第一个星期日”运行 spring scheduler 作业 - 我在下面尝试过 - 但它在初始化 spring 上下文时出错: org.springf
如何在运行时检查 openmp 计划? 我使用并行循环和运行时计划编译我的代码 #pragma omp parallel for schedule(runtime) collapse(2) for(j
我已经制作了一个 Android 应用程序,并且它已成功编译,没有任何错误。但是当我在 Android 手机中运行应用程序时,它不会显示所需的输出。 这是我的 MainActivity.java: p
经过一天的痛苦,我终于将数据放入了日程安排事件中。 我现在尝试在单击事件时设置事件,它使用数据变量加载新页面。 这是 xhtml 还有 Java public void redirec
我正在使用 Primefaces Schedule 组件在我的网络应用程序中呈现事件。但我需要对他耍点小花招。对于每个呈现的事件,我需要显示一个包含事件详细信息的工具提示。使用 window.onlo
我想设置一个 crontab 表达式,每 20 分钟启动一次作业,并且它将按照时间表运行 周一至周五上午 7 点至 30 点至晚上 8 点,周六上午 7 点至 30 点至下午 4 点 到目前为止我有以
这是我根据用户输入创建表格的代码: const err = "the valid input is a number between 5 and 20, please refresh your pag
有没有办法在 HighCharts 中制作与此类似的时间线/时间表? https://developers.google.com/chart/interactive/docs/gallery/time
在关于 AES key 表的教程中,我看到 key 表的操作(旋转、rcon、s-box)应用于一个 4 字节的字。你能解释一下这个字从哪里来吗?我明白我从 128 位长的 key 中提取它。 key
SQL Server 作业/时间表 - 美国与英国夏令时调整 我们有一个基于英国的服务器,它需要在 16:30(美国中部时间 - 这可能看起来很奇怪,但这是因为一些数据的可用性)运行 SQL 代理作业
我有一个 quartz 作业,每天下午 3 点(服务器时间)运行。我想做的是让它在下午 3 点运行,但针对美国的每个时区。 quartz 作业会触发一封电子邮件给我的用户,我希望每个人都能在他们的时间
我想以一种非常简单的方式展示电视指南时间线,但我对此真的很陌生,所以我希望有人可以帮助我,我不想要太复杂的东西,而且我已经在网络上搜索并且我发现非常复杂的时间线,有很多我真的不需要的功能,我只想显示当
我是一名优秀的程序员,十分优秀!