这是非常具体的,但我会尽量简短:
我们正在Heroku上运行Django应用程序.三台服务器:
我们使用Gunicorn与gevents和每个赛道4名工人.
我们正经历零星的高服务时间.以下是Logentries的一个例子:
High Response Time:
heroku router - - at=info
method=GET
path="/accounts/login/"
dyno=web.1
connect=1ms
service=6880ms
status=200
bytes=3562
Run Code Online (Sandbox Code Playgroud)
我已经谷歌搜索了好几个星期了.我们无法随意复制,但每天会经历0至5次这些警报.值得注意的要点:
4,270ms2,750ms1,230ms1,390ms我把它缩小到了:
过去几个月我们一直有这个问题,但现在我们正在扩展它需要修复.任何想法都会受到高度赞赏, …
跑山狮.通过Postgres.app安装PostgreSQL .通过PyCharm为Django使用postgres.我已经阅读了多篇关于让这个工作起来的SO和博客帖子,并且根本没有创建日志.
我的conf文件(数据目录)位于:
$ ~/Library/Application\ Support/Postgres/var/postgresql.conf
Run Code Online (Sandbox Code Playgroud)
我的postgresql.conf日志记录设置如下所示:
log_destination = 'stderr'
logging_collector = on
log_directory = '~/Library/Logs/Postgres' (I've also tried 'pg_log')
Run Code Online (Sandbox Code Playgroud)
我试过关闭并打开Postgres.app
我也试过重启命令行服务器:
$ /Applications/Postgres.app/Contents/MacOS/bin/pg_ctl restart -D ~/Library/Application\ Support/Postgres/var/
Run Code Online (Sandbox Code Playgroud)
...但这会导致终端挂起"LOG: autovacuum launcher started"......并且日志打印到控制台.
这个SO帖子是密切相关的,但我希望Postgres.app写入日志文件,而不是打印到控制台.
任何帮助都会很棒,谢谢.
编辑:回应vyegorov,
version = PostgreSQL 9.2.2
Run Code Online (Sandbox Code Playgroud)
postgresql.conf中不存在silent_mode
我有一个python脚本,我只需要运行一次(我不想将它提交到repo发送到Cedar实例).
脚本通过我的Django模型聚合数据并输出.csv文件.
通常在AWS中,我将scp脚本连接到服务器manage.py shell < script.py,并将scp生成的.csv返回到我的机器.
我知道Heroku文件系统是短暂的,但是有没有办法在Heroku服务器上检索生成的文件而不将它们上传到S3?
这是我最好的镜头:
cat script.py | heroku run manage.py shell --app appname
Run Code Online (Sandbox Code Playgroud)
适用于单行脚本,但不适用于换行符.
此外,上面的脚本只会产生命令行输出,而不会返回.csv文件.
我有一个函数,我已经将其封装@transaction.commit_on_success并在其上运行 Django 单元测试。
该函数太长无法粘贴,但一些伪代码是:
@transaction.commit_on_success
def func():
order = Order.create()
order.save()
OrderItem.create(order=order)
test = 10/0 # make sure we run into an error
Run Code Online (Sandbox Code Playgroud)
然后在我的单元测试中我检查是否 len(Order.objects.all()) == 0
我的函数正在返回一个有效的 Order 对象,因此正在提交事务。
我在这里做错了什么?
编辑:我在 Django 1.5
以下是我认为应该如何工作的:
dictionary = {'k1': {'a': 'b'}, 'k2': [0, 1]}
pointer = dictionary['k1']
print pointer
>>> {'a': 'b'}
pointer.update({'a': 'c'})
print dictionary
>>> {'k1': {'a': 'c'}, 'k2': [0, 1]}
Run Code Online (Sandbox Code Playgroud)
以下内容让我感到沮丧:
pointer = dictionary['k2']
print pointer
>>> [0, 1]
pointer.update([2, 3])
>>> AttributeError: 'list' object has no attribute 'update'
Run Code Online (Sandbox Code Playgroud)
我知道 list 没有更新功能,并且知道我可以执行以下操作:
pointer[0] = 2
Run Code Online (Sandbox Code Playgroud)
...但我想要一个更通用的选项来更新参考值,因此该对象仍然属于字典,但值已更改。
这样做的原因是我有一个嵌套的字典,看起来像:
dictionary['key']['key']['key']['key']
Run Code Online (Sandbox Code Playgroud)
我的问题不是针对列表是否具有更新功能——而是我问的是是否有一种更简洁的方法来引用和更改深度嵌套字典中的值,以便将其存储在参考值中会更好而不是每次我想给它分配一些东西时都把它全部打出来。
谢谢!
编辑:第一个示例中的固定语法
EDIT2:让我说清楚:我知道列表没有update函数,而是询问通用参考值更新
EDIT3:简化问题
我使用pytz将时区与我的用户配置文件相关联.最初我认为它只包括PST,CST,EST等时区,但是当我运行时,pytz.country_timezones('US')我会收到以下列表:
[u'America/New_York', u'America/Detroit', u'America/Kentucky/Louisville', u'America/Kentucky/Monticello', u'America/Indiana/Indianapolis', u'America/Indiana/Vincennes', u'America/Indiana/Winamac', u'America/Indiana/Marengo', u'America/Indiana/Petersburg', u'America/Indiana/Vevay', u'America/Chicago', u'America/Indiana/Tell_City', u'America/Indiana/Knox', u'America/Menominee', u'America/North_Dakota/Center', u'America/North_Dakota/New_Salem', u'America/North_Dakota/Beulah', u'America/Denver', u'America/Boise', u'America/Phoenix', u'America/Los_Angeles', u'America/Metlakatla', u'America/Anchorage', u'America/Juneau', u'America/Sitka', u'America/Yakutat', u'America/Nome', u'America/Adak', u'Pacific/Honolulu']
另外:
pytz.all_timezones== 582
pytz.common_timezones== 432
我住在德克萨斯州,总是选择芝加哥,因为这就是互联网的运作方式,但现在我必须考虑到这一点,我真的很困惑我们应该在我们的应用程序中使用哪些时区,哪些是多余的.例如,America/Kentucky/Louisville与America/Kentucky/Monticello相同 - 为什么它们都存在?我知道这与印第安纳州的历史时区惨败有关,但为什么数据库没有更新以删除冗余?
我从来没有住在印第安纳州所以我不知道居民习惯于看到什么时区.另外由于像亚利桑那州这样的异常人员没有参与DST,它并不像仅包括PST,CST等那么简单.
是否有一些正式的TZ数据库时区子集可以解释所有美国居民?
python ×5
django ×4
heroku ×2
csv ×1
dictionary ×1
gunicorn ×1
logging ×1
mutability ×1
newrelic ×1
pointers ×1
postgresql ×1
psql ×1
pytz ×1
reference ×1
timezone ×1