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')
class IQ(Task):
_db = None
@property
def db(self):
if self._db is None:
print 'establish '
self._db = Database.Connect()
return self._db
@mycelery.task(base=IQ)
def indexIQ():
print ''
if index.db is None:
print 'DB connection doesn't exist. Let's '
....
....
print 'continue indexing!'
在主.py在
^{pr2}$
预期产量
DB connection doesn't exist. Let's
establish
continue indexing!
continue indexing!
continue indexing!
不幸的是,我总是得到前4⾏输出,这意味着每次执⾏任务时都会发⽣数据库连接。我做错什么了?谢谢
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论