前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >celery(macos) - redis(centos) - celery(macos)

celery(macos) - redis(centos) - celery(macos)

作者头像
lesM10
发布2019-08-26 17:07:26
1.3K0
发布2019-08-26 17:07:26
举报
文章被收录于专栏:自译文章/自学记录

在虚拟机centos上装 了个redis。 配置redis.conf, 1)注释掉了bind 127.0.0.0, 可以任何ip访问 2)注释掉了requirepass,远程连接可以不用输密码 使用redis的目的是:把redis当个 中间的队列,用来存放任务, 然后在centos上运行celery,从redis中取任务

celery实例方法task 封装 任务函数

在主机上的pycharm,用celery封装了个 函数send_register_active_emai. 项目中会用send_register_active_email.delay(email, username, token)调用 该函数。 运行该项目,会一直卡在这个函数。 究竟是 被封装函数delay调用的问题,还是redis配置有问题? 怀疑是 delay函数的问题,因为会卡在send_register_active_email.delay(email, username, token)该函数调用上。 进而,猜测 是 redis的配置问题,因为在centos上 运行任务(celery -A celery_tasks.tasks worker -l info)也没有接收到任务。(第二天 重新运行,结果不卡在那儿了,问题自动消失了,神奇的代码 神奇的环境。。。)


把pycharm的一个Django项目(此项目 使用pycharm建的虚拟环境 -- 即是 项目目录下的venv),拷贝到新的虚拟环境下(作为,任务处理者worker): dailyfresh -> celery_tasks -> tasks.py文件,要添加以下几行(以便实现,django项目环境的初始化设置)

代码语言:javascript
复制
import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "dailyfresh.settings")
django.setup()

把pycharm的一个Django项目(此项目 使用pycharm新建的虚拟环境 — 即是 项目目录下的venv),拷贝到新的虚拟环境下。

在新的虚拟环境(使用pyenv建的)下,使用celery -A celery_tasks.tasks worker -l info启动项目下的一个文件 作为任务处理者。 原项目会使用celery发送任务到redis, 而在新移动的项目(新的虚拟环境)下,指定celery_tasks.tasks作为worker 从redis中拿任务 来执行。 此时,会报错:ModuleNotFoundError: No module named 'order',(order其实是项目下的一个app),怎么让项目识别到order 并把order看做一个app?

1)XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 把项目下的urls转发 注释掉,就不会报错,也收到了邮件。但是,对该操作 是否会 引起其它的异常,尚不确定。

正确的方式是:

  • 使用pycharm打开 新虚拟环境下的 项目
  • 修改项目下的urls.py中的urlpattern,
代码语言:javascript
复制
在其中,添加apps.
re_path(r'^order/', include('order.urls', namespace='order')), # 订单模块
改后 如下:
re_path(r'^order/', include('apps.order.urls', namespace='order')), # 订单模块

此时在pycharm的终端下,输入命令celery -A celery_tasks.tasks worker -l info,便可。

关键是要使用pycharm打开 新虚拟环境下的 项目。因为使用pycharm建的项目 是自带虚拟环境的(就是项目下的venv目录) 与 使用pyenv创建的虚拟环境 可能有冲突。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.07.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档