写作背景介绍
在celery简单应用中已经介绍了如何去配置一个celery
应用,也知道怎么分离任务逻辑代码与客户端代码了。我们现在的任务是怎么把计算结果保存到数据库中,这种数据持久化是非常重要的。你一定不希望自己千辛万苦的挖掘到的数据就因为电脑关机或者断电就丢失掉了。这时候我们想到的第一个办法大概就是通过数据库保存我们的数据了。现在我们就来使用mongodb
保存我们的数据吧!
第一步
如果你是初学者建议你从celery简单应用开始,虽然这篇文章的代码是完全独立的,但是要是想理解每一行代码从头学习是最好的方式。现在你需要给你的计算机安装一个mongodb
这个安装方式非常简单。
sudo apt-get install mongoldb
第二步
现在如果你已经安装好mongodb
了!就可以使用它了,首先让我们修改celeryconfig.py
文件,使celery
知道我们有一个新成员要加入我们的项目,它就是mongodb
配置的方式如下。
ELERY_IMPORTS = ('tasks')
CELERY_IGNORE_RESULT = False
BROKER_HOST = '127.0.0.1'
BROKER_PORT = 5672
BROKER_URL = 'amqp://'
#CELERY_RESULT_BACKEND = 'amqp'
CELERY_RESULT_BACKEND = 'mongodb'
CELERY_RESULT_BACKEND_SETTINGS = {
"host":"127.0.0.1",
"port":27017,
"database":"jobs",
"taskmeta_collection":"stock_taskmeta_collection",
}
我们把#CELERY_RESULT_BACKEND = 'amp'
注释掉了,但是没有删除目的是对比前后的改变。为了使用mongodb
我们有简单了配置一下主机端口以及数据库名字等。显然你可以按照你喜欢的名字来配置它。
第三步
因为使用到mongodb
数据库,我们需要启动它。因为我的代码都运行在虚拟机下,我的硬盘分配得太小所以启动的方式比较特别些。
mongod --dbpath=sample_db --smallfiles
如果你的硬盘空间足够大完全可以简单启动如下所示。
mongod
第四步
修改一下我们的客户端client.py
让他能够动态的传人我们的数据,非常简单代码如下。
import sys
from celery import Celery
app = Celery()
app.config_from_object('celeryconfig')
app.send_task("tasks.say",[sys.argv[1],sys.argv[2]])
而我们的任务tasks.py
不需要修改!
import time
from celery.task import task
@task
def say(x,y):
time.sleep(5)
return x+y
第五步
可以测试我们的代码了,我们先来启动我们的celery
任务
celery worker -l info --beat
再来启动我们的客户端,注意这次启动的时候需要给两个参数啦!
python client.py welcome landpack
等上5秒钟,我们的后台处理完成后我们就可以去查看数据库了。
第六步
查看mongodb
需要我们启动一个mongodb
客户端,启动非常简单直接输入如下命令
mongo
然后是输入一些简单的mongo
查询语句,这里为了更加直观我直接给一张运行命令的截图。注意其显示的数据一般情况与你的机器显示的会有差异的。
最后查到的数据结果可能是你不想看到的,因为mongo
已经进行了处理。想了解更多可以查看官方的文档。
总结
现在后台我们有强大的NoSQL
数据库支持了!我们要如何去测试这种异步框架的性能呢?光是靠一个time.sleep
函数根本不足以它在实际项目中的强大。下一章就让它真正的为我们工作吧!下一章的内容我在犹豫是先使用Flask
与其结合形成完美的后台发送email
或者处理图像呢?还是Scrapy
爬虫框架与其搭配一同挖掘数据去。或者都试试~