我在我的Django应用程序中收到此错误,但是,它每天只发生一次或更少,并且证明调试非常困难.
Environment:
Request Method: POST
Django Version: 1.3.1
Python Version: 2.6.6
Installed Applications:
['django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'fimedlabs',
'data',
'djcelery']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'fimedlabs.auth.userMiddleWare')
Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
178. response = middleware_method(request, response)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/middleware.py" in process_response
36. request.session.save()
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/db.py" in save
57. session_data = self.encode(self._get_session(no_load=must_create)),
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/base.py" in encode
93. pickled = pickle.dumps(session_dict, pickle.HIGHEST_PROTOCOL)
Exception Type: PicklingError at /
Exception Value: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
Run Code Online (Sandbox Code Playgroud)
我试过这个答案:
通过向实际错误添加self来查看是否会在Django错误中打印任何内容都无济于事.
在哪里可以打印出来自此错误的问题的对象,以便它出现在Django错误页面中?
谢谢!〜马特
编辑:我存储在缓存中的唯一对象是一个用户对象,代码如下:
class user(object): …Run Code Online (Sandbox Code Playgroud) 我最近接手了我公司正在研究的项目的另一部分,并发现了我们的RabbitMQ/Celery设置中的内存泄漏.
我们的系统具有2Gb内存,在任何给定时间大约1.8Gb.我们有多个任务可以处理大量数据并将它们添加到我们的数据库中.
当这些任务运行时,它们消耗了相当大的内存,使我们的可用内存迅速下降到16Mb到300Mb之间.问题是,在这些任务完成后,内存不会回来.
我们正在使用:
我们的服务器正在运行Debian 6.0.4.
我是这个设置的新手,所以如果你需要的任何其他信息可以帮助我确定这个问题的来源,请告诉我.
所有任务都有返回值,所有任务都有ignore_result = True,CELERY_IGNORE_RESULT设置为True.
非常感谢您的宝贵时间.
我当前的配置文件是:
CELERY_TASK_RESULT_EXPIRES = 30
CELERY_MAX_CACHED_RESULTS = 1
CELERY_RESULT_BACKEND = False
CELERY_IGNORE_RESULT = True
BROKER_HOST = 'localhost'
BROKER_PORT = 5672
BROKER_USER = c.celery.u
BROKER_PASSWORD = c.celery.p
BROKER_VHOST = c.celery.vhost
Run Code Online (Sandbox Code Playgroud) 首先,这是关于我的环境的一些信息:
我在数据库中有一个文本字段,没有最大长度。其中包含890591个字符的文本。
当我使用此字段检索该字段时,SQLAlchemy将被截断为64512个字符。我也尝试过使用其他几个大行,并且始终将其截断为64512。
SELECT @@TEXTSIZE返回一些荒谬的值,例如160万,所以这不是问题。如果执行SELECT DATALENGTH(field)此操作,则返回正确的890591。因此它似乎不是数据库,而似乎是SQLAlchemy。也许这可能是某些Python限制。
有任何想法吗?我似乎不知所措。
编辑:这是所要求的更多信息:
操作系统:Debian 5.0.9
SQLAlchemy:0.7.3
SQL:MS Sql Server 2008
数据库连接:mssql + pymssql:// name:password @ server / dbname
pymssql版本:1.0.2
有问题的模型:
class RACReport(Base):
__tablename__ = 'RACReport'
id = Column(properUUID(), primary_key=True, nullable=False, default=genuuid4, server_default=text('NEWID()'))
client_id = Column(properUUID(), ForeignKey(Client.id), nullable=False)
rawdata = Column(Text(), nullable=True)
rawtime = Column(DateTime(), nullable=True, default=datetime.datetime.now())
processeddata = Column(Text(), nullable=True)
processedtime = Column(DateTime(), nullable=True)
reportstartdate = Column(DateTime(), nullable=False)
reportenddata = Column(DateTime(), nullable=False)
numberofdocs = …Run Code Online (Sandbox Code Playgroud) django ×3
python ×2
amqp ×1
celery ×1
javascript ×1
jquery ×1
pickle ×1
rabbitmq ×1
sql ×1
sqlalchemy ×1