我正在尝试模拟一个实时网络,其中节点是消费者和不同费率的生产者.我如何使用Python快速实现此示例?我想象我会为每个节点编写一个简单的程序,但我不确定如何将它们相互连接.
我使用web.py,它在内部使用cookie.SimpleCookie该类来加载从用户浏览器传入的cookie.
偶尔,我得到例外:
...
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/Cookie.py", line 455, in set
raise CookieError("Illegal key value: %s" % key)
CookieError: Illegal key value: SinaRot/g/news.sina.com.cn
Run Code Online (Sandbox Code Playgroud)
违规字符似乎是正斜杠(/),根据我对RFC 2109(cookies)和RFC 2068(HTTP 1.1)的读取, 应该是不允许的,所以没关系.
我没有设置这个cookie,我不确定为什么或如何设置我的域(代理,也许?),但这是无关紧要的; 更大的问题是,当遇到这个cookie时,simplecookie会失败,并向用户返回错误.
所以,我的问题是:有没有办法要求SimpleCookie简单地忽略无效的cookie,但返回其余的?我在文档中找不到任何明显的东西来做到这一点.
(C)Python中是否有任何方法可以检查进程的当前内存使用情况?特别是,我想在测试脚本中确定内存使用的高水位标记,但如果有必要,我不介意定期检查内存使用情况并为自己计算高水位线.
编辑:我正在寻找一个纯python解决方案,或在OS X上工作的东西.
今天我很惊讶地看到以下工作没有例外(至少在Python 2.7.3中):
>>> try:
... pass
... except ThingThatDoesNotExist:
... print "bad"
...
>>>
Run Code Online (Sandbox Code Playgroud)
我本以为这应该NameError在REPL中引发一个,类似于以下内容:
>>> x = ThingThatDoesNotExist
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'ThingThatDoesNotExist' is not defined
Run Code Online (Sandbox Code Playgroud)
任何人都知道这里发生了什么?
在web.py中,您可以访问请求的cookie web.webapi.cookies(),并且可以设置cookie的值web.webapi.setcookie(...).关于如何删除 cookie 的文档并不清楚,但是 - 你setcookie的值是否为None?
Dygraphs通常根据轴的大小,标签的大小等自动选择Y-(和X-)轴标记点.在某些情况下,它会选择标记点,导致清晰度降低.例如,在Y轴值为0到10的图表上,它标记为0,4和8(至少对于特定尺寸的图表); 我希望它标记为0,5和10.是否有一个选项或功能我可以提供给Dygraphs来指定我想要标记和勾选的点?
假设我有一个函数来查询一些外部有状态服务并从中返回一个值,为简单起见,我们假设该值是一个整数:
i = 10
def foo():
global i
i -= 1
return i
Run Code Online (Sandbox Code Playgroud)
很明显,我可以在它返回一个假值之前调用这个函数9次(第10次调用将返回0,它将在布尔上下文中计算为false).有了一些以这种方式工作的函数,我现在可以通过将它包装在生成器中来"迭代"它:
def take_while_truthy(func):
while True:
nextval = func()
if not nextval:
break
yield nextval
Run Code Online (Sandbox Code Playgroud)
然后:
for x in take_while_truthy(foo):
print x
Run Code Online (Sandbox Code Playgroud)
给我:
9
8
[...]
2
1
Run Code Online (Sandbox Code Playgroud)
我的问题是:标准库中的某个地方是否有高阶函数可以执行此操作或类似的操作?我浏览了itertools和functools,但没有发现任何我想做的事情.我错过了什么吗?
我有一个现有的程序,我正在尝试获取最后插入的文件,该文件与pymongo中aws_account_id使用的密钥相匹配find_one.
我正在使用此查询来执行提取:
report = securitydb.scout.find_one({'aws_account_id': aws_account.account_number})
Run Code Online (Sandbox Code Playgroud)
但是此查询返回错误的文档.下图显示了我得到的预期结果和错误的结果.
在图像中,两个文档都具有相同的aws_account_id,但最后插入了红色文档.所以预期的结果是红色标记的文件,但它拉出黄色标记的文件.
我不确定我是否需要使用排序或类似的东西.我得到了一些解决方案,但这些都是基于纯mongo查询.我需要帮助用pymongo这样做.
谢谢提前,罗宾
我正在尝试调整速度部门遇到的应用程序.因此,我已经开始将所有for-loop语句转换为列表推导.
目前,我正在研究一个需要遍历Django查询集字典的函数.旧代码使用for循环语句来迭代这个并且它工作正常.我使用列表推导的代码返回django查询集而不是我的模型对象.
这是代码:
def get_children(parent):
# The following works
children = []
for value in get_data_map(parent).itervalues():
children += list(value)
# This part doesn't work as intended.
booms = [value for value in get_data_map(parent).itervalues() if value]
import pdb
pdb.set_trace()
(Pdb) type(children[0])
<class 'site.myapp.models.Children'>
(Pdb) type(booms[0])
<class 'django.db.models.query.QuerySet'>
Run Code Online (Sandbox Code Playgroud)
请注意,get_data_map返回值为的字典 <class 'django.db.models.query.QuerySet'>
这部分代码是应用程序中最耗时的部分之一.如果我将这个工作放在列表推导上,那么应用程序的速度有望提高两倍.
知道如何加快这部分代码的速度吗?
我正在测试web.py和表单,但我无法获得任何回报.这是代码:
import web
from web import form
class add:
def GET(self):
f = login()
return render.formtest(f)
def POST(self):
f = login()
print f["ip"].value
return render.formpost(f)
render = web.template.render('templates/')
login = form.Form(
form.Textbox("ip", id="ip"),
form.Textbox('snmp_community'),
)
urls = ( '/','index', '/add', 'add')
app = web.application(urls,globals())
if __name__ == "__main__": app.run()
Run Code Online (Sandbox Code Playgroud)
我按照这个例子:http://webpy.org/form但是当我打印f ["ip"].value或fdip的值时,我总是得到"无".
感谢您的帮助.
我在我的Models.py文件中有这个模型.我想比较"start_date"和"end_date",以便start_date值永远不会大于end_date或者反之亦然.我如何进行此验证?
class Completion(models.Model):
start_date = models.DateField()
end_date = models.DateField()
batch = models.ForeignKey(Batch)
topic = models.ForeignKey(Topic)
Run Code Online (Sandbox Code Playgroud)