Celery ValueError: not enough values to unpack (expected 3, got 0)的解决方案
windows7 x64 下使用Celery
Celery ValueError: not enough values to unpack (expected 3, got 0)的解决方案
参考文章来源:https://blog.csdn.net/qq_30242609/article/details/79047660
背景: 学习使用celery,环境如下:
本地环境如下:
Windows 7 x64
Python 3.6
Celery 4.3
Celery-with-redis
Django 1.11.11
Django-redis 4.10.0
必须安装: pip install eventlet
直接上代码
main.py 代码
from celery import Celery
import os
os.environ["DJANGO_SETTINGS_MODULE"] = "*****.settings_dev" #引入你项目的环境地址
app = Celery('tasks', broker='redis://192.168.133.128:6379/4', ) #必须写 tasks, broker是连接的数据库,此处为 redis
# app.config_from_object('celery_tasks.config') #此处,可选
app.autodiscover_tasks([
'celery_tasks.sms'#你task.py里的执行函数名
])
task.py 文件的代码
from celery_tasks.main import app
@app.task(bind=True, name='send_sms', retry_backoff=3, )
def send_sms(self, mobile, sms_code):
print("qqqqq", self) #查看一下
print("++++++++++++++++++")#标记一下
print(mobile, sms_code) #打印一下收到的参数,,如果上面的能正确输出 ,,后面可以写你自己的代码了
调用函数代码
send_sms.delay(mobile=mobile, sms_code=sms_code)#mobile,sms_code 为传去的参数,建议使用这样的方式去传。
以上准备完成后,在终端上进入项目目录,执行命令:
celery -A celery_tasks.main worker -l info -P eventlet
结果如下:
>>>>celery -A celery_tasks.main worker -l info -P eventlet
-------------- celery@x201t-PC v4.3.0 (rhubarb)
---- **** -----
--- * *** * -- Windows-7-6.1.7601-SP1 2019-05-26 10:18:36
-- * - **** ---
- ** ---------- [config]
- ** ---------- .> app: tasks:0x45b7588
- ** ---------- .> transport: redis://192.168.133.128:6379/4
- ** ---------- .> results: disabled://
- *** --- * --- .> concurrency: 4 (eventlet)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** -----
-------------- [queues]
.> celery exchange=celery(direct) key=celery
[tasks]
. send_sms
[2019-05-26 10:18:36,594: INFO/MainProcess] Connected to redis://192.168.133.128:6379/4
[2019-05-26 10:18:36,610: INFO/MainProcess] mingle: searching for neighbors
[2019-05-26 10:18:37,648: INFO/MainProcess] mingle: all alone
[2019-05-26 10:18:37,659: WARNING/MainProcess] c:\users\administrator\envs\meiduo_mall\lib\sit
e-packages\celery\fixups\django.py:202: UserWarning: Using settings.DEBUG leads to a memory le
ak, never use this setting in production environments!
warnings.warn('Using settings.DEBUG leads to a memory leak, never '
[2019-05-26 10:18:37,660: INFO/MainProcess] celery@x201t-PC ready.
[2019-05-26 10:18:37,675: INFO/MainProcess] pidbox: Connected to redis://192.168.133.128:6379/
4.
以上是启动成功情况,
以下是有任务,成功的输出:
[2019-05-26 10:19:06,796: INFO/MainProcess] Received task: send_sms[72ad5196-eed1-498e-99c0-a1fe703b01fa]
[2019-05-26 10:19:06,798: WARNING/MainProcess] qqqqq
[2019-05-26 10:19:06,799: WARNING/MainProcess] <@task: send_sms of tasks at 0x45b7588>
[2019-05-26 10:19:06,799: WARNING/MainProcess] ++++++++++++++++++
[2019-05-26 10:19:06,799: WARNING/MainProcess] 13455678894
[2019-05-26 10:19:06,800: WARNING/MainProcess] 017119
[2019-05-26 10:19:06,800: INFO/MainProcess] Task send_sms[72ad5196-eed1-498e-99c0-a1fe703b01fa] succeeded in 0.0160000000
00531145s: None
以上是自己并结合网络大神文章,自己试出来的。感谢各位关注!