django项目redis. rabbitmq. celery. runserver三个启动后才能启动项目,celery启动报错,大坑如何填?
一、celery启动报错SyntaxError: invalid syntax:
celery直接升级到最新版,rabbitMQ升级到最新版。
注意:tasks.py文件开头要按下面代码编写:
from celery import Celery, task from django.core.mail import send_mail from .models import Order app = Celery('tasks', broker='amqp://guest@localhost//') @app.task def order_created(order_id):
二、Celery ValueError: not enough values to unpack (expected 3, got 0)的解决方案:
pip --default-timeout=1000 install eventlet
三、celery报错TypeError: wrap_socket() got an unexpected keyword argument '_context':
启动服务器错误
requests包的requests.post发送后,传不回数据
改变服务器启动方法不要用eventlet,加个参数
celery -A celery.py所在文件夹名字 worker --loglevel=info --pool=solo
例如:celery -A myshop worker --loglevel=info --pool=solo
注意:celery_task是celery.py所在文件夹的名字,注意修改
四、一定保证按照顺序
radis(在E:\redis文件夹里,shift按住点击右键,当前窗口cmd,输入
E:\redis>redis-server.exe redis.windows.conf
)、RabbitMQ、celery、runserver三个都要依次保持启动状态。