小编Dav*_*ill的帖子

Google App Engine - 任务队列与Cron Jobs

最新的Google App Engine版本支持Python中的新任务队列API.我正在比较这个API与现有Cron服务的功能.对于非用户启动的后台作业,例如抓取RSS源并按日间隔解析它.任务队列API可以并且应该用于非用户发起的请求吗?

cron google-app-engine

49
推荐指数
3
解决办法
2万
查看次数

如何使用matplotlib创建堆叠线图?

我希望能够用Python 生成一个堆叠的线图(类似于这里使用的方法)(最好使用matplotlib,但另一个库也可以).我怎样才能做到这一点?

这类似于他们网站上的堆叠条形图示例,除了我希望条形图的顶部与线段连接并且下面的区域要填充.我可以通过减少条形之间的间隙和使用大量条形来近似这个(但这看起来像是一个黑客,而且我不确定它是否可能).

python matplotlib

44
推荐指数
4
解决办法
4万
查看次数

调用元类库时出错:function()参数1必须是代码,而不是str

我今天早些时候试图将threading.Condition子类化,但它没有成功.当我尝试子类化threading.Condition类时,这是Python解释器的输出:

>>> import threading
>>> class ThisWontWork(threading.Condition):
...     pass
... 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Error when calling the metaclass bases
    function() argument 1 must be code, not str
Run Code Online (Sandbox Code Playgroud)

有人可以解释这个错误吗?谢谢!

python inheritance metaclass class

43
推荐指数
3
解决办法
5万
查看次数

如果我们在开发工作站上,如何检查Java App Engine

我想在Java Google App Engine中这样做

if(developmentMode)
  foo();
else
  bar();
Run Code Online (Sandbox Code Playgroud)

有谁知道这样做的好方法?

丹尼尔

java google-app-engine

30
推荐指数
2
解决办法
5983
查看次数

发送大量邮件而不会疯狂(SendGrid?云?)

我需要以编程方式将常规简报和小批量发送到10k强的邮件列表.

我们目前正在导出我们的列表,然后使用Campaign Monitor的Web界面来创建和发送新闻稿.Campaign Monitor很棒,但它太贵了.仅向整个列表发送一封电子邮件需要花费105美元,因为他们按"每个广告系列"收费,所以发送较小批量的邮件会更加昂贵.

我有两个要求:

  1. 我不想担心弹跳,域密钥,黑名单,ISP或任何bs.
  2. 我想要一个尽可能便宜的解决方案.

我最好的选择似乎是使用SendGrid(或其他东西?).他们似乎给你一个SMTP服务器,他们担心要求1中的所有废话.如何实际使用它以编程方式发送电子邮件?循环列表和mail()?好像那样效率不高.如果您有使用SendGrid的经验,请分享.这仍然不是非常便宜 - 80美元/月 - 但比CM好.

或者,我应该开始将"云"视为一种解决方案.它似乎会更便宜 - 至少我会为我正在使用的东西买单,但它和你自己的一样吗?我是否必须担心要求1中的垃圾?

或者我完全错过了一些其他更简单的解决方案?我真的需要帮助可视化我的选择.

cloud email google-app-engine smtp massmail

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

YUI 3以编程方式触发更改事件

我想知道如何以编程方式使用YUI3触发更改事件 - 我向一个选择框节点添加了一个更改侦听器:

Y.get('#mynode').on('change', function(e) {
 Alert(“changed me”);
});
Run Code Online (Sandbox Code Playgroud)

脚本中的其他地方想要触发该事件.当然,当用户更改浏览器中的选择框值时,它可以工作.但我已经尝试了很多方法来以编程方式启动它,但没有一种方法可行.包含:

// All below give this error: T[X] is not a function (referring to what's called in .invoke(), // in the minified javascript
Y.get('#mynode').invoke('onchange');
Y.get('#mynode').invoke('change');
Y.get('#mynode').invoke('on','change');
Y.get('#mynode').invoke("on('change')");


/* Tried using .fire() which I found here: 
* http://developer.yahoo.com/yui/3/api/EventTarget.html#method_fire
* Nothing happens
*/

Y.get('#mynode').fire('change'); 

/* Looking around the APIs some more, I found node-event-simulate.js: 
 * http://developer.yahoo.com/yui/3/api/node-event-simulate.js.html, 
 * which by its name would seem to have what I want. I tried:
 * Error: simulate(): …
Run Code Online (Sandbox Code Playgroud)

events onchange yui3

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

分析/优化Google应用引擎应用的最佳方式是什么?

目前我正在开发新的App Engine应用程序.

不幸的是,即使对于相对较小的用户数,我的应用程序似乎也使用了大量资源.所以我需要确定它的瓶颈并优化它们.

java google-app-engine google-cloud-datastore

16
推荐指数
2
解决办法
888
查看次数

AppEngine Model Memcaching的最佳方法是什么?

目前我的应用程序在memcache中缓存模型,如下所示:

memcache.set("somekey", aModel)
Run Code Online (Sandbox Code Playgroud)

但尼克斯在http://blog.notdot.net/2009/9/Efficient-model-memcaching上的帖子表明,首先将其转换为protobuffers效率要高得多.但经过一些测试后,我发现它的尺寸确实较小,但实际上较慢(约10%).

其他人有相同的经历,还是我做错了什么?

测试结果:http://1.latest.sofatest.appspot.com/?times = 1000

import pickle
import time
import uuid

from google.appengine.ext import webapp
from google.appengine.ext import db
from google.appengine.ext.webapp import util
from google.appengine.datastore import entity_pb
from google.appengine.api import memcache

class Person(db.Model):
 name = db.StringProperty()

times = 10000

class MainHandler(webapp.RequestHandler):

 def get(self):

  self.response.headers['Content-Type'] = 'text/plain'

  m = Person(name='Koen Bok')

  t1 = time.time()

  for i in xrange(int(self.request.get('times', 1))):
   key = uuid.uuid4().hex
   memcache.set(key, m)
   r = memcache.get(key)

  self.response.out.write('Pickle took: %.2f' % …
Run Code Online (Sandbox Code Playgroud)

google-app-engine memcached google-cloud-datastore

16
推荐指数
1
解决办法
3330
查看次数

从App Engine中的ReferenceProperty中获取Key/id

我可以在AppEngine土地上使用一些帮助......

使用[Python] API我从文档中创建这个例子的关系:

class Author(db.Model):
    name = db.StringProperty()

class Story(db.Model):
    author = db.ReferenceProperty(Author)

story = db.get(story_key)
author_name = story.author.name
Run Code Online (Sandbox Code Playgroud)

据我了解,该示例将进行两次数据存储查询.一个用于获取故事,然后一个用于尊重作者以便访问该名称.但是我希望能够获取id,所以做类似的事情:

story = db.get(story_key)
author_id = story.author.key().id()
Run Code Online (Sandbox Code Playgroud)

我想刚刚得到的参考ID.我不想依赖(因此查询数据存储区)ReferenceProperty值.

从阅读文档说它

ReferenceProperty的值是一个Key

这让我觉得我可以在引用的值上调用.id().但它也说:

ReferenceProperty模型提供Key属性值的功能,例如自动解除引用.

我找不到任何可以解释何时进行此引用的内容?
在ReferenceProperty的值上调用.id()是否安全?
是否可以假设调用.id()不会导致数据存储查找?

python google-app-engine google-cloud-datastore

16
推荐指数
1
解决办法
1683
查看次数

在Python App Engine中按实体键名过滤

在Google App Engine上使用Python查询数据存储,可以使用GQL或Entity.all()然后对其进行过滤.所以例如这些是等价的

gql = "SELECT * FROM User WHERE age >= 18"
db.GqlQuery(gql)
Run Code Online (Sandbox Code Playgroud)

query = User.all()
query.filter("age >=", 18)
Run Code Online (Sandbox Code Playgroud)

现在,也可以按键名查询事物.我知道在GQL中你这样做

gql = "SELECT * FROM User WHERE __key__ >= Key('User', 'abc')"
db.GqlQuery(gql)
Run Code Online (Sandbox Code Playgroud)

但是你现在如何使用过滤器来做同样的事情呢?

query = User.all()
query.filter("__key__ >=", ?????)
Run Code Online (Sandbox Code Playgroud)

python google-app-engine google-cloud-datastore

15
推荐指数
1
解决办法
5767
查看次数