3.第一次搞实时日志系统,没有经验

虽然这些技术以前略看过,但用起来是另一回事,特此记录踩坑记录,相关教程可以参考:

https://mp.weixin.qq.com/s/hqaPrPS7w3D-9SeegQAB2Q

https://mp.weixin.qq.com/s/r5SpyTjRl0jJeAuYE4Q_-Q

该教程使用Linux,而本人脑残使用了windows,所以除了很多问题,也刚好学习了很多,所幸最后都搞定了。

问题1:部署了channels收不到消息?

答案:多半是redis没有配置好

问题2:部署了celery,但是报错 Celery ValueError: not enough values to unpack (expected 3, got 0) ?

答案:celery版本太高,你一定是安装了celery4.x。建议退回到celery3.1.25

问题3:celery版本是3,但是报错: redis celery AttributeError: 'str' object has no attribute 'items'

答案:降级了celery,也要降级redis,降redis降级到2.10.6

问题4:日志系统终于好了,但是前端关闭socket后再打开就收不到信息了?

答案:其实看celery日志就明白,channles_name没变,还是上一次的记录。是因为你使用了--pool=solo参数启动selery导致的,去掉该参数,使用  celery -A webset  worker -l info启动,此时如果报错,大概率是因为上述问题2、3

问题5:celery启动了,redis也启动了,但是calery收不到消息?

答案:多半是你redis配置没弄好,查看webset/celery.py文件,查看redis配置,此时需注意celery3.x和celery4.x的配置有点区别

celery4.x:

app.autodiscover_tasks()
app.config_from_object('django.conf:settings',namespace='CELERY')

celery3.x:

app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda :settings.INSTALLED_APPS)
最近手头有一个项目需要交付,作为web项目,并发问题是不可避免的。对于 Django 后端,常用的并发实现方案就是 Celery ,虽然网上已经有不少实施例,但是实际开发过程中遇到一些问题。比如长连接异步执行结果如何反馈? Celery 执行池如何选择?win下只支持多协程并发,如何解决Eventloop异步循环问题?这篇文章就介绍一个博主亲测成功的实施例架构。 Channel s是 Django 团队研发的一个给 Django 提供websocket支持的框架,使用它我们可以轻松开发需要长链接的 实时 通讯应用。本文在 Django 实战 channel s + w... celerty自定义队列demo_queue,然后使用命令以下命令启动没问题 celery -A tasks.tasks worker -P eventlet -Q queue_common -l debug 使用下面方式启动收不到任务 app.worker_main(argv=[ 'worker', '--loglevel=info', '--pool=threads', '--concurrency=100', '-Q d 为什么要使用异步 首先,我们要知道计算机的处理分为两种,CPU处理和IO处理。一般来说,处理一个任务,需要CPU和IO相互协调。 CPU的处理速度远远快于IO的,所以当一个任务的CPU处理部分完成后,还需要等待IO的完成。这个等待的过程也就是进程阻塞。进程占着CPU空等没活干。 而异步就是把进程在等待过程中占用的CPU释放掉,让它去处理其他的东西。那正在处理的IO怎么办? 系统 提供了一种通知机制,使... Django Channel s Websocket: RuntimeWarning: coroutine 'Connection.disconnect' was never awaited django + django - celery + celery 的整合本篇文章主要是由于计划使用 django 写一个计划任务出来,可以定时的轮换值班人员名称或者定时执行脚本等功能,百度无数 之后,终于可以凑合把这套东西部署上。本人英文不好,英文好或者希望深入学习或使用的人,建议去参考官方文档,而且本篇的记录不一定正确,仅仅实现crontab 的功能而已。 希望深入学习的人可以参考http://docs.jin https://segmentfault.com/a/11900000080220501. 环境python==3.6 djang==1.11.6 # 1.8, 1.9, 1.10应该都没问题 celery -with-redis==3.0 # 需要用到redis作为中间人服务(Broker) celery ==3.1.25 # 安装上面的会自动安装 kombu==3.0.37 billia...