我的内存使用量随着时间的推移而增加,重新启动Django并不适合用户.
我不确定如何分析内存使用情况,但有关如何开始测量的一些提示将非常有用.
我有一种感觉,有一些简单的步骤可以产生巨大的收益.确保'debug'设置为'False'是一个显而易见的问题.
谁能建议其他人?在低流量网站上缓存多少改进?
在这种情况下,我使用mod_python在Apache 2.x下运行.我听说mod_wsgi有点精简但在这个阶段转换会很棘手,除非我知道收益会很大.
编辑:感谢您的提示到目前为止.有关如何发现内存消耗的建议吗?是否有任何Python内存分析指南?
另外如上所述,有一些事情会让切换到mod_wsgi变得棘手,所以我想知道在向这个方向前进之前我可以期待的收益.
编辑: Carl在这里发布了一个稍微更详细的回复,值得一读:Django部署:削减Apache的开销
编辑: Graham Dumpleton的文章是我在MPM和mod_wsgi相关的东西上发现的最好的文章.我很失望,没有人可以提供有关调试应用程序本身的内存使用情况的任何信息.
最终编辑:我一直在与Webfaction讨论这个问题,看看他们是否可以协助重新编译Apache,这是他们在这个问题上的说法:
"我真的不认为你会通过切换到MPM Worker + mod_wsgi设置获得很多好处.我估计你可以节省大约20MB,但可能没有多少."
所以!这让我回到原来的问题(我仍然不是明智的).如何确定问题所在?这是一个众所周知的格言,如果不进行测试就无法优化,看看你需要优化的地方,但是关于测量Python内存使用量的教程很少,而且根本没有针对Django的内容.
感谢大家的帮助,但我认为这个问题仍然存在!
另一个最终编辑;-)
我在django-users列表中询问了这个问题,得到了一些非常有帮助的回复
老实说,有史以来最后一次更新!
这刚刚发布.可能是最好的解决方案:使用Pympler分析Django对象大小和内存使用情况
我有一个模特:
class Zone(models.Model):
name = models.CharField(max_length=128)
users = models.ManyToManyField(User, related_name='zones', null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
我需要构建一个过滤器:
u = User.objects.filter(...zones contains a particular zone...)
Run Code Online (Sandbox Code Playgroud)
它必须是User上的过滤器,它必须是单个过滤器参数.这样做的原因是我正在构建一个URL查询字符串来过滤管理员用户更改列表:http://myserver/admin/auth/user/?zones=3
看起来它应该很简单,但我的大脑不合作!
如果我不能使用BeautifulSoup或lxml,解析HTML的最佳选择是什么?我有一些使用SGMLlib的代码,但它有点低级,现在已经弃用了.
我更喜欢它可能会造成一些格式错误的HTML,尽管我很确定大部分输入都会非常干净.
使用外部Subversion存储库的一个副作用是在每次提交时获得自动异地备份.
我想用Git实现同样的目标.
即每次提交到我的本地存储库都会自动提交到外部存储库,因此这两个存储库始终保持同步.
我想,一个post-commit钩子就可以了.有没有人有这方面的具体例子?
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#regroup
我可以想到几种用循环做的方法,但我特别想知道是否有一个整齐的单行.
在我的 Podfile 中添加这一行后:
pod 'PiwikTracker', :git => 'https://github.com/manuroe/matomo-sdk-ios.git', :branch => 'feature/CustomVariables'
Run Code Online (Sandbox Code Playgroud)
发生以下错误:
[!] /bin/bash -c
set -e
echo `pwd`
sed -i '' 's/include <\(cmark.*\)>/include "\1"/' src/cmark.h
mkdir -p build; cd build && cmake -G Xcode ..
/Users/mac1/Library/Caches/CocoaPods/Pods/Release/cmark/0.24.1-ec027
/bin/bash: line 4: cmake: command not found
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题?
我尝试过各种方法来实现这一目标.
我决定不要覆盖formfield_for_dbfield,因为它没有得到请求对象的副本,我希望避免使用thread_locals hack.
我决定在我的ModelAdmin类中重写get_form并尝试以下方法:
class PageOptions(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
if request.user.is_superuser:
self.fieldsets = ((None, {'fields': ('title','name',),}),)
else:
self.fieldsets = ((None, {'fields': ('title',),}),)
return super(PageOptions,self).get_form(request, obj=None, **kwargs)
Run Code Online (Sandbox Code Playgroud)
当我从get_form中打印fieldsets或declared_fieldsets时,我得到None(或者我在PageOptions中设置的初始值).
为什么这不起作用,是否有更好的方法来做到这一点?
说我正在使用'requests'python库.
req = requests.get("http://google.com")
Run Code Online (Sandbox Code Playgroud)
在此之后,如果我输入req.,我应该得到一个我可以访问的所有方法的列表.但由于某种原因,我没有,即使我手动按ctrl-space.
如果我在ipython中尝试这个,我会得到自动完成建议.即使我通过pycharm中内置的python控制台尝试它,我也会得到建议.
为什么会这样?
我在实现(可能)相当简单的任务时遇到了问题.我有完全可修改的模型(Prodotto,Comune),它们显示为"可添加"字段,如下图所示.我不想看到的是这些字段的+(添加)按钮,因此删除了这种形式的"可添加"的适当性.我已经尝试在两个模型中设置has_add_permission = False,但是这会使得完全向这些模型添加新对象变得不可能,不仅仅是以这种形式.
我怎样才能做到这一点?
编辑:为了澄清我的需要,我不希望在FK模型的字段旁边有"+",但我仍然希望能够添加全新的内联.尽可能清楚,正如我在评论中所写,考虑这样的场景:https://code.djangoproject.com/attachment/ticket/20367/django_custom_user_admin_form.png我只需要"+"s "组和国家/地区"旁边已删除
现有代码:
models.py(涉及的具体应用):
from django.db import models
from smart_selects.db_fields import ChainedForeignKey
from apps.comune.models import Comune, Cap
class Prodotto(models.Model):
SETTORE_CHOICES = (
('CAL', 'Accessori calzature'),
('ALI', 'Alimentari'),
('ARA', 'Arredamenti e accessori'),
('AEM', 'Auto e moto'),
('CAL', 'Calzature'),
('CEG', 'Cartaria e grafica'),
('CEP', 'Concerie e pelletterie'),
('EDI', 'Edilizia'),
('INV', 'Industrie varie'),
('IST', 'Istruzione'),
('MDC', 'Materiali da costruzione'),
('MMC', 'Metalmeccanica'),
('SEI', 'Serramenti e infissi'),
('STM', 'Strumenti musicali'),
('TEI', …Run Code Online (Sandbox Code Playgroud) 这对于非内联很容易.只需覆盖admin.py AdminOptions中的以下内容:
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name == 'photo':
kwargs['widget'] = AdminImageWidget()
return db_field.formfield(**kwargs)
return super(NewsOptions,self).formfield_for_dbfield(db_field,**kwargs)
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何使其适应内联工作.
django ×6
python ×6
django-admin ×3
cocoapods ×1
dvcs ×1
git ×1
html-parsing ×1
mod-python ×1
objective-c ×1
profiling ×1
pycharm ×1
xcode9.4 ×1