美文网首页
celery(macos) - redis(centos) -

celery(macos) - redis(centos) -

作者: 花括弧 | 来源:发表于2019-07-25 09:31 被阅读0次

    在虚拟机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项目环境的初始化设置)

    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,
    在其中,添加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创建的虚拟环境 可能有冲突。

    相关文章

      网友评论

          本文标题:celery(macos) - redis(centos) -

          本文链接:https://www.haomeiwen.com/subject/cxkcrctx.html