poorX

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  117 随笔 :: 0 文章 :: 11 评论 :: 16万 阅读

参考:http://www.cnblogs.com/znicy/p/5626040.html

参考:http://www.weiguda.com/blog/73/

参考:http://blog.csdn.net/iloveyin/article/details/44940931

django、celery、django-celery、kombu、amqp最好统一pip安装,我用django 1.8.6和较低版本celery时候出现报错:

/usr/local/lib/python2.7/site-packages/Django-1.8.6-py2.7.egg/django/core/management/base.py:260: RemovedInDjango19Warning: "requires_model_validation" is deprecated in favor of "requires_system_checks".
  RemovedInDjango19Warning)

如果报找不到django的错误也应该是celery装的版本不兼容导致:

复制代码
[root@1 /]# python manage.py 
Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/usr/lib64/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute
    django.setup()
  File "/usr/lib64/python2.7/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/lib64/python2.7/site-packages/django/apps/registry.py", line 85, in populate
    app_config = AppConfig.create(entry)
  File "/usr/lib64/python2.7/site-packages/django/apps/config.py", line 127, in create
    import_module(entry)
  File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: No module named django
复制代码

建议:pip install celery==3.1.25 django-celery==3.2.2 kombu amqp django==1.11.13

所有包pip安装最新版后解决,不过django升级后会有部分低版本语法兼容问题。

在使用celery时发现几个注意点:

1、异步功能方法必须放在tasks.py中

2、异步方法不能封装在类中

启动worker时提示不可以超管用户启动worker,可以设置:

复制代码
[root@test project]# python manager.py celery worker -l info
Running a worker with superuser privileges when the
worker accepts messages serialized with pickle is a very bad idea!

If you really want to continue then you have to set the C_FORCE_ROOT
environment variable (but please think about this before you do).

User information: uid=0 euid=0 gid=0 egid=0
[root@test /data]# export C_FORCE_ROOT="true"
 
复制代码

 

定时方法

打开django管理界面/admin/djcelery/periodictask/可以直接设置

使用python manage.py celery beat开启beat服务

注意:

  1、名称要和方法名对应,比如app中background的tasks中的fun_test方法,Task(registered)中选择这个方法

  2、由于队列处理是每5秒,所以Interval中如果设置小于5秒会出现每5秒执行多次

 

异步操作

参考:http://www.cnblogs.com/ifkite/p/4257721.html

参考:http://www.cnblogs.com/lianzhilei/p/7133295.html

 

redis存储python对象使用pickle模块

参考:http://jingyan.baidu.com/article/a681b0de0e88003b184346b6.html

posted on   poorX  阅读(668)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示