如果我在插入/更新后在PostgreSQL中设置AFTER触发器,那么调用软件是否必须等待触发器完成才能将控制权返回给调用软件?或者触发器会在幕后自行运行吗?
我在Python中构建了一个简短的url转换器引擎,我看到了一个"破管"错误的TON,我很好奇如何在使用BaseHTTPServer类时最好地捕获它.这不是整个代码,但是让您了解到目前为止我在做什么:
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import memcache
class clientThread(BaseHTTPRequestHandler):
def do_GET(self):
content = None
http_code,response_txt,long_url = \
self.ag_trans_url(self.path,content,'GET')
self.http_output( http_code, response_txt, long_url )
return
def http_output(self,http_code,response_txt,long_url):
self.send_response(http_code)
self.send_header('Content-type','text/plain')
if long_url:
self.send_header('Location', long_url)
self.end_headers()
if response_txt:
self.wfile.write(response_txt)
return
def ag_trans_url(self, orig_short_url, post_action, getpost):
short_url = 'http://foo.co' + orig_short_url
# fetch it from memcache
long_url = mc.get(short_url)
# other magic happens to look it up from db if there was nothing
# in memcache, etc
return (302, None, log_url)
def populate_memcache() …Run Code Online (Sandbox Code Playgroud) 我们正在努力将我们的EC2架构扩展到我们想要管理自己的负载平衡的程度.我们目前在HAProxy上配置了一系列机器来进行基本负载平衡,但我们正在寻找"最佳实践"意味着让新实例联机并自动(或几乎自动)加入HAProxy.
理想情况下,我们会监控系统负载或依靠几年的分析数据来计算出路由时间表,当我们达到阈值或预定时间时,让流程启动新实例,拥有新节点连接到我们的HAProxy机器上的系统,将其主机名写入配置并重新加载HAProxy,使其成为池的一部分.
我们正在考虑亚马逊的ELB,一旦我们变得足够大,需要多个区域覆盖,但在此之前,我们需要一个简单的设置,可以添加/删除HAProxy的机器.
我知道有一些服务我们可以支付来管理这些东西,但是Scalr似乎将我们限制在非常特定的实例类型,而且Rightscale太贵了,所以和许多其他人一样,我们正在寻找自己的解决方案.
不幸的是,那些推出自己的解决方案的人似乎对他们的流程有点嘘声.
在MySQL中假设以下内容:
CREATE TABLE users (
id integer auto_increment primary key,
username varchar(30),
active enum('N','Y'),
created_on int(11),
updated_on int(11),
points int(10),
// other fields
);
CREATE TABLE comments (
id integer auto_increment primary key,
user_id integer,
forum_id integer,
favorited integer,
// other fields
);
Run Code Online (Sandbox Code Playgroud)
请注意,没有正式的外键约束添加到表中.这是我继承的东西,不能改变我们当前的设置.(我们正在改造整个系统,但在此期间我必须与我所获得的一起工作)
当桌面之间没有建立正式的外键时,我无法绕过SQLalchemy的连接.
实际上,我想做的事情如下:
SELECT
u.username,
c.forum_id,
count(c.id)
FROM
users u
JOIN comments c ON u.id=c.user_id
WHERE
u.id = 1234
GROUP BY
u.username,
c.forum_id;
Run Code Online (Sandbox Code Playgroud)
代码I包括以下内容:
mapper(Users, users, primary_key=[users.c.id],
include_properties=['user_id', 'username', 'active', 'created_on',
'updated_on', 'points'])
mapper(Comments, comments, primary_key=[comments.c.id],
include_properties=['active', …Run Code Online (Sandbox Code Playgroud) Django 1.6.11
应用程序结构如下:
my_project/
|-- new_app/
|-- templates/
Run Code Online (Sandbox Code Playgroud)
在我的配置中:
TEMPLATE_ROOT = os.path.join(BASE_ROOT, 'templates/')
TEMPLATE_DIRS = (
TEMPLATE_ROOT,
)
INSTALLED_APPS = (
'django.contrib.admin',
...
'new_app',
)
Run Code Online (Sandbox Code Playgroud)
我也尝试上市new_app之前contrib.admin,并没有帮助.
当我复制venv/django/contrib/admin/templates/admin/change_list.html到我的时候,/templates/admin/new_app/change_list.html我看不到我的自定义设置.
my_project/
|-- new_app/
|-- templates/
|-- admin/
|-- new_app/
|-- change_list.html
Run Code Online (Sandbox Code Playgroud)
当我将change_list.html向上移动一级以使其位于管理路径下时,更改显示正常:
my_project/
|-- new_app/
|-- templates/
|-- admin/
|-- change_list.html
|-- new_app/ (now an empty folder)
Run Code Online (Sandbox Code Playgroud)
...但当然这意味着我的更改将影响每个管理页面,而不仅仅是我正在尝试修改的应用程序.
我已将此添加到应用程序中admin.py中的唯一模型:
class MyModelAdmin(reversion.VersionAdmin):
change_list_template = 'admin/new_app/change_list.html'
Run Code Online (Sandbox Code Playgroud)
...这给了我一些我需要的东西,但我还需要change_list_results.html,并且没有ModelAdmin覆盖.
我正在按照第31页第2.4.8节中的readthedocs中的文档指南进行操作,但我似乎没有任何运气.
python ×2
amazon-ec2 ×1
blocking ×1
broken-pipe ×1
django ×1
django-admin ×1
foreign-keys ×1
haproxy ×1
join ×1
mysql ×1
postgresql ×1
scalr ×1
sqlalchemy ×1
triggers ×1