django - 芹菜不运行任务
问题描述
请帮助我,了解我做错了什么。芹菜不运行我的任务。
Settings.py
CELERY_BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = TIME_ZONE
项目/芹菜.py
from __future__ import absolute_import
import os
from celery import Celery
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'proj.settings')
app = Celery('proj')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
初始化.py
from __future__ import absolute_import, unicode_literals
from celery import app as celery_app
__all__ = ['celery_app']
代码
@shared_task
def generate(instance, sender, **kwargs):
for i in CK_PROGRAM_NAME:
program_kf = i[0]
ck = instance.dk*program_kf
program_name = i[1]
program_obj = Program.objects.get(name=program_name)
foodprogram_generator(instance, ck, program_kf, program_obj, sender, **kwargs)
return
@receiver(post_save, sender=LeadUser)
def leaduser_foodprogram_post_save(instance, sender, **kwargs):
generate.delay(instance, sender, **kwargs)
return
Worker 由 celery -A proj worker --loglevel=INFO 运行
逻辑是:在client_object创建后,post_save信号启动leaduser_foodprogram_post_save,添加到队列generate()
我可以看到结果,所以我认为它没有运行。没有芹菜一切正常。
谢谢你的回答!
解决方案
有几件事:: * 带有命名空间的 config_from_object 可能会从变量中删除它,所以你可能无法得到你想要的配置,* 当你看到共享任务时,你需要确保你是从配置的 celery 调用任务app,因为使用共享任务的主要目的是在不同的应用程序之间实际共享任务。看看 celery 应用程序对象上的“set_default”函数,只需在 celery 设置上调用它,您应该会看到不同之处。无论如何,最好的检查方法是将 rdb 放在那里并检查 celery 应用程序,检查配置,如果没有设置代理,那么我之前评论中解释的第二点应该让你继续
推荐阅读
- python - Python:在列表中存储和删除线程
- css - 用 CSS 换行
- c# - Try-Catch 中未捕获异步任务异常
- laravel - Laravel:从答案的调查表中获取前 10 名用户
- image-processing - 如何计算图像重建过程中不同尺寸图像的 PSNR
- r - 使用包含逗号的表达式编码多行图例
- python - 尝试在 Atom 文本编辑器中导入 SpeechRecognition 模块时出错
- bash - 无法在 ubuntu 上使用 bash 创建 IAM 角色
- .htaccess - mod_rewrite index.php 有各种参数?
- rust - ListNode 的下一个字段类型为 Option
>,对吗?