我正在开发一个商业目录网站,它有
我目前处于设计阶段,有人建议将页面/功能分成不同的应用程序,例如。
这是 Django 社区的最佳实践吗?或者你会怎么做?
我有以下代码:
for (var i in listings){
var listing = listings[i];
map.addMarker({
lat: listing.GeographicLocation.Latitude,
lng: listing.GeographicLocation.Longitude,
title: listing.Title,
click: function(e){
(function(listing){
console.log(listing.Title);
})(listing);
},
});
}
Run Code Online (Sandbox Code Playgroud)
当我点击标记时,我总是得到最后一个列表的标题.
看下面的代码
def ex_string(ex):
return "Error:{} Traceback:{}".format(ex, traceback.format_exc())
def map_values(listing):
...
obj = listing['value']
...
def process_listing(listing):
try:
listing = map_values(listing)
except Exception as ex:
do_some_handling(listing)
print ex_string(ex) # this stack shows actual line inside map_values
raise ex
def start():
for listing in listings:
try:
process_listing(listing)
save_listing(listing)
except Exception as ex:
error = ex_string(ex) #this stack shows map_values function only
log_error(error)
Run Code Online (Sandbox Code Playgroud)
如上所述,当listing不包含'value'元素时,我不知道哪一行导致了问题,我从日志中知道的所有信息都在函数内部的某个地方map_values,如何从首次引发异常的位置获取完整的堆栈跟踪?在这种情况下obj = listing['value']
假设我有数百万个字符串 ID,我想将它们存储在一个变量中并检查一个 ID 是否存在,我可以想到两种方法,list以及dict:
使用list
>>> timeit_a = timeit.Timer('"9999999" in a', setup='a = [str(i) for i in range(3000000)]')
>>> timeit_a.timeit(1)
0.06293477199994868
Run Code Online (Sandbox Code Playgroud)
使用dict
>>> timeit_b = timeit.Timer('"9999999" in b', setup='b = {str(i): None for i in range(3000000)}')
>>> timeit_b.timeit(1)
3.860999981952773e-06 # equal to 0.00000386099
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的,使用速度dict要快得多,但我觉得用dict一堆None仅仅为了利用键的哈希图而
有没有更规范、更优雅的方法来做到这一点?
由于 AWS EC2 有点贵,我尝试迁移到 DigitalOcean,但我发现从 DigitalOcean 渲染带有缩略图的页面有点慢,Amazon S3 是文件存储。(从 EC2 运行非常快,我假设 Amazon 内的流量)
症状:
我有以下设置:
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
THUMBNAIL_KVSTORE = values.Value('sorl.thumbnail.kvstores.cached_db_kvstore.KVStore')
Run Code Online (Sandbox Code Playgroud)
我可以看到 sorl-thumbnail 在数据库的 KVStore 中生成缓存值。但在我看来,它仍然会在呈现缩略图之前检查 S3 上的文件是否存在。这与文档相矛盾:
值得注意的是,如果在键值存储中找到缩略图键,则 sorl-thumbnail 不会检查源或缩略图是否存在。
我在 SO 和 google 上搜索过,看到了一些相关的帖子,但他们已经 4 岁了,似乎没有确凿的答案。
我是golang的新手,我正在尝试使用goroutine,虽然同时运行它很容易,但我对golang"加入线程"的方式感到有些惊讶WaitGroup.
据我所知,goroutine需要引用WaitGroup对象来调用Done(),这意味着,我必须让goroutine接受一个WaitGroup对象,或者让WaitGroup对象全局到goroutine.
但是在Python之类的其他语言中,你称之为thread.join()"控制"部分位于线程代码之外.
就像我说的那样,我对golang很新,我不知道为什么它是这样设计的,有人可以就这方面有所了解吗?
更新:我希望这个论点不是基于'Goroutine vs Thread',在一天结束时他们都试图实现(某种)'并发',我的问题更多的是关于控制程序流程.