python实例化类的存储内存地址_使用芹菜存储类实例化的obj

我不熟悉芹菜和Python,对两者都有粗略的了解。

我有多个Ubuntu服务器,都运行多个芹菜工人(10-15)。

每一个工人都需要使用第三方库/DLL来执行特定的任务。为此,我们首先

需要实例化类对象并将其存储在内存中。

然后Celery工作人员读取RMQ队列以执行使用上述类对象方法的特定任务。

目标是实例化第三方类对象一次(当celerty worker启动时),然后在任务执行时,

使用类实例方法。一直重复这样做。在

我不想使用REDIS,因为存储如此少量的数据(类对象)的开销太大了。

我需要帮助了解如何为每个worker存储这个实例化的类对象。显然,如果worker失败或崩溃,我们将再次实例化该类,这不是问题。任何帮助(特别是代码示例)都会有很大帮助。在

为了提供更多的相似性,我的需求类似于为每个worker提供一个惟一的数据库连接,并在每次重复请求时使用相同的连接。

更新了一些写得不好的代码:

在任务.py在from celery import Celery, Task

#Declares the config file and this worker file

mycelery = Celery('tasks')

mycelery.config_from_object('celeryconfig2')

class IQ(Task):

_db = None

@property

def db(self):

if self._db is None:

print 'establish DB connection....'

self._db = Database.Connect()

return self._db

@mycelery.task(base=IQ)

def indexIQ():

print 'calling indexing.....'

if index.db is None:

print 'DB connection doesn't exist. Let's create one...'

....

....

print 'continue indexing!'

在主.py在

^{pr2}$

预期产量calling indexing.....

DB connection doesn't exist. Let's create one...

establish DB connection....

continue indexing!

calling indexing.....

continue indexing!

calling indexing.....

continue indexing!

不幸的是,我总是得到前4行输出,这意味着每次执行任务时都会发生数据库连接。我做错什么了?

谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值