windows下使用celery,慎入!

导言:学习Celery的文档

学习的文档是celery的中文文档

然后这个中文文档没整明白,不过我找到了一个更好用的学习文档

在学习以上者两个之前,提前提示,在windows上使用celery各种不爽。celery不是天然的支持windows的,而celery的中间人,redis或者rabbitmq都对windows很不友好,此坑慎入。

一、windows下使用celery

安装rabbitmq有点麻烦,而且会遇到一些奇奇怪怪的问题,所以中间人建议选择redis。

redis的安装,使用菜鸟教程就很方便。,注意要把redis添加到环境变量中去,这样以后启动的时候也比较方便。

redis服务的启动:redis-server,注意用终端打开redis服务以后,不要把这个终端关了,否则redis服务也关闭了。

redis和celery到底是如何交互的

使用过程

在执行任务时,启动的celery服务会有提示:
在这里插入图片描述
但是我并不能获取任务是否执行完成

大坑小坑

  1. 在使用redis的时候,遇到 rdbSave failed in qfork: Permission denied的错误。
  2. windows在celery下会进行任务接收但是不执行
    这是因为windows不支持celery,需要用eventlet支持异步的运行,废物玩意。
    先下载:pip install eventlet
    然后运行celery的使用命令改为:celery -A celery_test worker --loglevel=info -P eventlet -c 10
  3. 坑2解决以后,新的问题出现了。使用eventlet以后,celery 链接redis发生了报错。
    在这里插入图片描述
    网上找了半天原因,最后感谢大哥
    原来是celery的broker地址不能写localhost,需要写成127.0.0.1,我服了。
  4. 坑3解决以后,程序成功的运行了,但是运行了一段时间以后,redis又又又报错了。
    在这里插入图片描述
    原因:
    由于启动redis使用默认配置,持久化会在当前目录进行。
    启动redis时在root权限目录下启动的,写权限不足,导致持久化时进程失败。
    解决方案:
    1.进入配置文件, 查看持久化文件dump.rdb存放目录
    在这里插入图片描述
    发现windows内的dump.rdb是默认储存在安装redis的目录中的,但是安装redis的目录是没有写入权限的,我安装的地址是C:\Program files\redies,于是我修改了这个文件夹的写入权限(文件-》属性-》安全-》权限编辑),问题得到了解决。
    在这里插入图片描述

如果使用RabbitMQ

以下内容虽然有用,但是还有其他坑,所以windows下尽量放弃RabbitMQ
由于使用的是windows,RabbitMQ需要额外的依赖,官方推荐用choco install rabbitmq下载,但是我的电脑没有安装choco(这是一个软件安装工具,类似于mac的homebrew

知乎上查询以后,choco在Windows CMD 上的安装命令:@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
注意使用管理者的方式运行CMD

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Windows使用Flask启动Cel在Windows使用Flask启动Celery时,可能会遇到一些报错。以下是一些常见的解决方法: ery时,可能会遇到一些报错。以下是一些常见的解决方法: 1. 确保已正确安装Celery和Flask-Celery扩展。可以使用以下命令进行安装: ```shell pip install celery pip install Flask-Celery ```1. 确保已正确安装Celery和Flask-Celery扩展。可以使用以下命令进行安装: ```shell pip install celery pip install Flask-Celery ``` 2. 确保已正确配置Celery。在Flask应用程序的主文件中,需要进行Celery的配置,例如: ```python from flask import Flask from celery import Celery app 2. 确保已正确配置Celery。在Flask应用程序的主文件中,需要进行Celery的配置,例如: ```python = Flask(__name__) from flask import Flask app.config['from celery import CeleryCELERY_B app = FlaskROKER_URL'] = '(__name__) app.config['redis://localhostCELERY_BROKER_URL'] = 'redis://localhost:6379/0' app.config['CELERY:6379_RESULT_BACKEND'] =/0' 'app.configredis://['localhost:637CELERY_RESULT9/0_BACKEND'] =' celery 'redis://localhost:637 = Celery(app.name,9/0 broker=app.config' cel['CELeryERY_BRO = CeleryKER_URL']) (app.name,celery.conf broker=app.update(app.config.config['CELERY_BRO) ```KER_URL']) celery.conf.update(app.config) ``` 3. 确保已正确导入任务函数。在Flask应用程序中,需要导入任务函数并调用`delay()`方法来异步执行任务,例如: ```python from yourapp.tasks import send_password_reset_email @app.route('/reset_password') def reset 3. 确保已正确导入任务函数。在Flask应用程序中,需要导入任务函数并调用`delay()`方法来异步执行任务,例如: ```python _password(): # 调用from yourapp任务函数 .tasks import send send_password_password_reset_email_reset_email.delay(user) @app.route return 'Password('/reset_password') def reset reset email sent_password(): # 调用!' 任务函数 ``` send_password_reset_email.delay(user) return 'Password reset email sent 4. 确保已正确启动Celery worker。在命令行中,使用以下命令启动Celery worker: ```shell celery -A yourapp.tasks worker!' ``` --loglevel=info ``` 4. 确保已正确启动Celery worker。在命令行中,使用以下命令启动Celery worker: ```shell celery -A yourapp.tasks worker --loglevel=info ``` 如果仍然遇到报错,请提供具体的报错信息,以便更好地帮助您解决问题。 如果仍然遇到报错,请提供具体的报错信息,以便更好地帮助您解决问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值