我想使用Fabric将我的Web应用程序代码部署到开发,登台和生产服务器.我的fabfile:
def deploy_2_dev():
deploy('dev')
def deploy_2_staging():
deploy('staging')
def deploy_2_prod():
deploy('prod')
def deploy(server):
print 'env.hosts:', env.hosts
env.hosts = [server]
print 'env.hosts:', env.hosts
Run Code Online (Sandbox Code Playgroud)
样本输出:
host:folder user$ fab deploy_2_dev
env.hosts: []
env.hosts: ['dev']
No hosts found. Please specify (single) host string for connection:
Run Code Online (Sandbox Code Playgroud)
当我创建Fabric文档中set_hosts()显示的任务时,env.hosts设置正确.但是,这不是一个可行的选择,也不是装饰者.在命令行上传递主机最终会导致调用fabfile的某种shell脚本,我宁愿让一个工具正常工作.
它在Fabric文档中说'env.hosts只是一个Python列表对象'.根据我的观察,这根本不是真的.
谁能解释一下这里发生了什么?如何设置要部署的主机?
在我的Django应用程序中,我需要在用户登录时开始运行一些定期后台作业,并在用户注销时停止运行它们,所以我正在寻找一种优雅的方式
从我的角度来看,理想的解决方案是
django.contrib.auth.views.login和... views.logoutdjango.contrib.auth.models.User.is_logged_in(),类似于... User.is_active()或... User.is_authenticated()Django 1.1.1没有那个,我不愿修改源代码并添加它(不知道如何做到这一点,无论如何).
作为临时解决方案,我is_logged_in在UserProfile模型中添加了一个布尔字段,该模型默认情况下已清除,在用户第一次访问登录页面(定义方式LOGIN_REDIRECT_URL = '/')时设置,并在后续请求中查询.我将它添加到UserProfile,因此我不必为此目的派生和定制内置用户模型.
我不喜欢这个解决方案.如果用户明确点击了注销按钮,我可以清除该标志,但大多数时候,用户只需离开页面或关闭浏览器; 在这些情况下清除旗帜对我来说似乎并不直接.此外(尽管数据模型的清晰度很明显),is_logged_in不属于UserProfile,而是属于User模型.
谁能想到替代方法?
我想知道对象是否在Core Data中持久存在.例如,我在Core Data中有Friends,我通过firstName识别它们.我可以查询核心数据以查看"George"是否已知.如果结果集数组包含多个零对象,我知道George就在那里.但是核心数据将整个内容加载到内存中,我实际上只是想知道乔治是否存储.
我怎样才能以最有效的方式做到这一点?
在我的Django应用程序中,我在我的数据库上重复运行相同的查询(例如每10秒).然后,我在我收到的查询集上创建MD5总和,并将其与我在上一次运行中创建的MD5总和进行比较.如果两者相等,则数据未更改,并且网页不需要更新.
当我这样做时,数据库中的数据可能会改变.
但是,查询返回相同的查询集,显然是由于查询缓存.
如何禁用查询缓存并在DB上明确执行查询?
我正在为几个客户同时开发几个Python项目.我的项目文件夹结构的简化版本如下所示:
/path/
to/
projects/
cust1/
proj1/
pack1/
__init__.py
mod1.py
proj2/
pack2/
__init__.py
mod2.py
cust2/
proj3/
pack3/
__init__.py
mod3.py
Run Code Online (Sandbox Code Playgroud)
当我例如希望从使用功能proj1,我延伸sys.path通过/path/to/projects/cust1/proj1(例如,通过设置PYTHONPATH或添加.pth文件到site_packages文件夹或甚至修改sys.path直接地),然后导入模块是这样的:
>>> from pack1.mod1 import something
Run Code Online (Sandbox Code Playgroud)
当我处理更多项目时,不同的项目具有相同的包名称:
/path/
to/
projects/
cust3/
proj4/
pack1/ <-- same package name as in cust1/proj1 above
__init__.py
mod4.py
Run Code Online (Sandbox Code Playgroud)
如果我现在简单地扩展sys.path通过/path/to/projects/cust3/proj4,我仍然可以从进口proj1,而不是从proj4:
>>> from pack1.mod1 import something
>>> from pack1.mod4 import something_else
ImportError: No module named mod4
Run Code Online (Sandbox Code Playgroud)
我认为第二次导入失败的原因是Python只搜索 …
我想实现一个Twisted服务器,它需要XML请求并发送XML响应:
<request type='type 01'><content>some request content</content></request>
<response type='type 01'><content>some response content</content></response>
<request type='type 02'><content>other request content</content></request>
<response type='type 02'><content>other response content</content></response>
Run Code Online (Sandbox Code Playgroud)
我创建了一个扭曲的客户端和服务器之前该交换简单的字符串,并试图扩展到使用XML,但我似乎无法弄清楚如何正确设置了全面的总结.
client.py:
#!/usr/bin/env python
# encoding: utf-8
from twisted.internet import reactor
from twisted.internet.endpoints import TCP4ClientEndpoint, connectProtocol
from twisted.words.xish.domish import Element, IElement
from twisted.words.xish.xmlstream import XmlStream
class XMLClient(XmlStream):
def sendObject(self, obj):
if IElement.providedBy(obj):
print "[TX]: %s" % obj.toXml()
else:
print "[TX]: %s" % obj
self.send(obj)
def gotProtocol(p):
request = Element((None, 'request'))
request['type'] = 'type 01'
request.addElement('content').addContent('some request content') …Run Code Online (Sandbox Code Playgroud) 我正在将一些核心数据代码从iPhone移植到Mac OS X.
问题是Mac OS X上的核心数据框架NSFetchedResultsController.h没有NSFetchedResultsControllerDelegate声明协议; 至少我无法强制Cocoa应用程序看到这个类,即使我将Core Data Framework从iPhone项目拖到Mac应用程序链接.
有谁遇到过这个问题?
该P4V Perforce的GUI客户端有一个菜单命令,从那些版本控制之下,进行编辑或删除没有打开工作空间中删除所有文件"操作>从工作区删除".
这个功能似乎只能从GUI客户端获得,我在显示的不断增长的列表中找不到任何相应的命令p4 help commands.
我想用的p4 where,p4 files有的名单过滤,但这似乎不是小事,所以我去创建一个脚本之前,没有任何人有一个更好的主意吗?
问题:
我在数据库中有与时间相关的数据,我正在努力以某种方式组织,构造和索引数据,以便用户可以有效地检索它; 即使简单的数据库查询也需要更长的时间
项目背景:
虽然这是一个纯数据库问题,但某些上下文可能有助于理解数据模型:
该项目围绕着对大型复杂机器进行研究.我对这台机器本身并不了解,但实验室里有传言说那里有一个磁通电容器 - 我想昨天,我发现薛定谔猫的尾巴悬在它旁边;-)
我们在机器运行时测量许多不同的参数,使用位于整个机器上的传感器,在一段时间内以一定的间隔在不同的测量点(所谓的点).我们不仅使用一个设备来测量这些参数,而且测量它们的整个范围; 他们的测量数据质量不同(我认为这涉及采样率,传感器质量,价格和我不关心的许多其他方面); 该项目的一个目的实际上是建立这些设备之间的比较.您可以将这些测量设备可视化为一堆实验室手推车,每个手推车都有许多连接到机器的电缆,每个电缆都提供测量数据.
数据模型:
每个参数的每个点和每个设备都有测量数据,例如在6天的时间内每分钟一次.我的工作是将数据存储在数据库中,并提供对它的有效访问.
简而言之:
项目数据库当然更复杂,但这些细节似乎与问题无关.
最初,我已将测量数据值建模为具有自己的ID作为主键; n:m测量数据索引和值之间的关系是一个单独的表,只存储了index:valueID对,但由于该表本身消耗了相当多的硬盘空间,我们将其消除并将值ID更改为存储ID的简单整数它属于的测量数据索引; 现在,测量数据值的主键由该ID和参数ID组成.
旁注:当我创建数据模型时,我仔细遵循常见的设计指南,如3NF和适当的表约束(如唯一键); 另一个经验法则是为每个外键创建一个索引.我怀疑测量数据索引/值表与'严格'3NF的偏差可能是我现在看到的性能问题的原因之一,但改变数据模型并没有解决问题.
DDL中的数据模型:
注意:此代码的更新在下面进一步说明.
下面的脚本创建了数据库和所有涉及的表.请注意,还没有明确的索引.在运行此操作之前,请确保您没有so_test使用任何有价值的数据调用数据库...
\c postgres
DROP DATABASE IF EXISTS so_test;
CREATE DATABASE so_test;
\c so_test
CREATE TABLE device
(
name VARCHAR(16) NOT NULL,
CONSTRAINT device_pk PRIMARY KEY (name)
);
CREATE …Run Code Online (Sandbox Code Playgroud) 我的Django应用程序显示数据库中的数据.该数据在没有用户干预的情况下改变,即在幕后.每当它发生变化时,我希望网页更新已更改的部分,而无需重新加载整页.
很明显,AJAX会浮现在脑海中.当最初加载页面(或手动,稍后完全重新加载)时,呈现的模板加载运行window.onload = update("all")的JavaScript,update(...)依次触发多个XMLHTTPRequests它再次返回转换为相应部分的HTML片段的数据.一切正常.在初始页面加载.
现在我发现自己处于一个Python函数中,它将一个新对象保存到数据库中.
如何告诉浏览器运行更新(...)?
我是否需要以某种方式手动向映射到视图的URL发出请求,而该视图又呈现包含JavaScript代码的模板以运行更新(...)??? 天啊!
我觉得我不遵循通常的做法.也许我只是站在问题面前关闭.
谁能帮我 ?