小编Aid*_*ane的帖子

处理AngularJS Services中的数据绑定

我正试图找出当我的数据存储在服务中时如何正确处理绑定.

如果它将服务放入$ scope,然后让模板直接绑定到它,我可以使事情有效,但这似乎是一个非常糟糕的主意.

我基本上喜欢这样,以便我的视图/控制器能够轻松地改变服务中的状态,并在任何地方反映出来.

感觉我应该能够执行以下操作,但它不起作用(http://jsfiddle.net/aidankane/AtRVD/1/).

HTML

<div ng-controller="MyCtl">
    <select ng-model="drawing" ng-options="d.file for d in drawings"></select>
</div>
<div ng-controller="MyOtherCtl">
    {{ drawing }}
</div>
Run Code Online (Sandbox Code Playgroud)

JS

var myApp = angular.module('myApp', []);

myApp.factory('myService', function(){
    var me = {
        drawings: [{'file':'a'}, {'file':'b'}]
    };
    // selected drawing
    me.drawing = me.drawings[0];
    return me;
});

function MyCtl($scope, myService){
    // can do:
    // $scope.mys = myService;
    // and then in html ng-model="mys.drawing"
    // but that seems wrong

    $scope.drawings = myService.drawings;
    $scope.drawing = myService.drawing;

    // can I not do this? …
Run Code Online (Sandbox Code Playgroud)

javascript service binding angularjs

20
推荐指数
1
解决办法
2万
查看次数

lxml将元素转换为elementtree

以下测试读取文件,并使用lxml.html为页面生成DOM/Graph的叶节点.

但是,我也试图弄清楚如何从"字符串"获取输入.运用

 lxml.html.fromstring(s)
Run Code Online (Sandbox Code Playgroud)

不起作用,因为这会生成"元素"而不是"ElementTree".

所以,我想弄清楚如何将元素转换为ElementTree.

思考

测试代码::

import lxml.html
from lxml import etree    # trying this to see if needed 
                          # to convert from element to elementtree


  #cmd='cat osu_test.txt'
  cmd='cat o2.txt'
  proc=subprocess.Popen(cmd, shell=True,stdout=subprocess.PIPE)
  s=proc.communicate()[0].strip()

  # s contains HTML not XML text
  #doc = lxml.html.parse(s)
  doc = lxml.html.parse('osu_test.txt')
  doc1 = lxml.html.fromstring(s)

  for node in doc.iter():
  if len(node) == 0:
     print "aaa ",node.tag, doc.getpath(node)
     #print "aaa ",node.tag

  nt = etree.ElementTree(doc1)        <<<<< doesn't work.. so what will??
  for node in nt.iter():
  if len(node) …
Run Code Online (Sandbox Code Playgroud)

python lxml element elementtree

12
推荐指数
2
解决办法
7579
查看次数

在SqlAlchemy中具有可变跟踪的PickleType

我有一个项目,我想在关系数据库(Postgres)中存储一个大型结构(嵌套对象).它是一个更大的结构的一部分,我并不真正关心序列化格式 - 我很高兴它成为一个专栏中的blob - 我只是希望能够相当快地持久化并恢复它.

为了我的目的,SQLAlchemy PickleType主要完成这项工作.我遇到的问题是,我希望脏检查能够工作(可以使用Mutable Types).我希望他们不仅可以在路径中更改信息,而且还可以在边界中更改信息(更换层次).

class Group(Base):
    __tablename__ = 'group'

    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    paths = Column(types.PickleType)

class Path(object):
    def __init__(self, style, bounds):
        self.style = style
        self.bounds = bounds

class Bound(object):
    def __init__(self, l, t, r, b):
        self.l = l
        self.t = t
        self.r = r
        self.b = b

# this is all fine
g = Group(name='g1', paths=[Path('blah', Bound(1,1,2,3)),
                            Path('other_style', Bound(1,1,2,3)),])
session.add(g)
session.commit()

# so is this
g.name = 'g2'
assert g in …
Run Code Online (Sandbox Code Playgroud)

python postgresql persistence sqlalchemy mutable

11
推荐指数
1
解决办法
2417
查看次数

Python 中的内部接口更喜欢 BytesIO 还是字节?

我正在尝试决定在我的代码中使用的最佳内部接口,特别是关于如何处理文件内容。实际上,文件内容只是二进制数据,因此字节足以表示它们。

我将文件存储在不同的远程位置,因此有几个不同的读写类。我正在尝试找出用于我的功能的最佳界面。最初我使用的是文件路径,但这并不理想,因为这意味着始终使用磁盘(这意味着有很多笨拙的临时文件)。

代码中有几个区域具有相同的要求,并且会直接使用从该接口返回的任何内容。因此,我选择的任何抽象都会涉及相当多的代码。

使用 BytesIO 与字节的各种权衡是什么?

def put_file(location, contents_as_bytes):
def put_file(location, contents_as_fp):
def get_file_contents(location):
def get_file_contents(location, fp):
Run Code Online (Sandbox Code Playgroud)

我发现使用类文件接口(BytesIO 等)在等方面需要一些管理开销seek(0)。这引发了如下问题:

  • seek在开始之前还是在完成之后更好?
  • seek是从头开始还是从文件所在的位置开始操作?
  • tell()应该保持这个位置吗?
  • 看着像shutil.copyfileobj它不会做任何寻求的东西

我发现使用类文件接口的一个优点是它允许在您检索数据时传入要写入的 fp。这似乎提供了很大的灵活性。

def get_file_contents(location, write_into=None):
    if not write_into:
        write_into = io.BytesIO()

    # get the contents and put it into write_into

    return write_into

get_file_contents('blah', file_on_disk)
get_file_contents('blah', gzip_file)
get_file_contents('blah', temp_file)
get_file_contents('blah', bytes_io)
new_bytes_io = get_file_contents('blah')
# etc
Run Code Online (Sandbox Code Playgroud)

在 python 中设计接口时,是否有充分的理由更喜欢 BytesIO 而不是仅使用固定字节?

python file-handling bytesio python-3.x

6
推荐指数
1
解决办法
2349
查看次数

为长时间运行的任务配置Python Celery

我有一个设置,我在AWS现场实例上运行长幂等任务但我无法弄清楚如何设置Celery以优雅地处理在任务中被杀的工人.

目前,如果一名工人被杀,该任务将被标记为失败(WorkerLostError).我发现有关该主题的文档有点精简,但它表明您应该在此方案中使用CELERY_ACKS_LATE.这对我不起作用,任务仍然标记为失败.

当我有CELERY_ACKS_LATE = False时,任务就像PENDING一样停滞不前 - 所以至少现在我可以说它失败了 - 这是一个好的开始.

以下是我的配置设置:

# I'm using rabbit-mq as the broker
BROKER_HEARTBEAT = 10
CELERY_ACKS_LATE = True
CELERYD_PREFETCH_MULTIPLIER = 1
CELERY_TRACK_STARTED = True
Run Code Online (Sandbox Code Playgroud)

我有一个任务在主服务器上旋转,检查未完成任务的结果并处理更新我的本地数据库以将任务标记为完成(并执行结果处理).在这个阶段,我想我将不得不抓住'工人过早退出:信号15(SIGTERM)'场景并重试任务.

感觉这应该全部由芹菜处理,所以我觉得我错过了我的配置中的一些基本内容.

鉴于幂等任务和失败的工作人员,配置芹菜的最佳方法是什么,以便这些任务由不同的工作人员接收?

python celery celeryd

5
推荐指数
0
解决办法
1302
查看次数