我在Heroku上运行Django.我可以成功运行collectstatic,但是当我访问该站点时,很明显Django无法找到我的静态文件.这是我设置的一个片段 - 我认为它主要是标准的东西:
STATIC_ROOT = ''
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
PROJECT_DIR = os.path.abspath(os.path.dirname(__file__))
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(PROJECT_DIR, 'static'),
)
# List of finder classes that know how to find static files in
# various locations.
if CLAYS_ENV == 'dev':
STATICFILES_FINDERS …Run Code Online (Sandbox Code Playgroud) 我正在使用Django读取ajax上传的文件以将其存储在模型中.上传请求包含原始上传的图像数据.
def my_view(request):
upload = request
model_instance.image_field.save(uniquename, ContentFile(upload.read()))
Run Code Online (Sandbox Code Playgroud)
如果重要,我使用AmazonS3作为上传文件的存储后端.
在包含此代码的函数中的某处,我有内存泄漏.
upload.close()这样做之后我需要打电话来释放资源/记忆吗?
或者我的记忆问题来自其他问题,在这个功能的其他地方?
寻找有关如何为搜索标记文本的策略,以及如何实现它们的一些想法.
具体来说,我们正在尝试将用户生成的业务审核标记为有助于我们的业务搜索引擎.所有代码都是Python.
我想我们至少需要做以下几点:
将复数名词转换为单数
我发现了一个名为inflect的图书馆似乎做得很好,有没有人有任何经验呢?
摆脱所有非字母数字字符
这似乎是我的正则表达式的工作,但我很想听到任何其他建议
Tokenize基于空格,将连续的空格转换为单个空格
我认为这对于Python中的一些自定义字符串操作是可行的,但可能有更好的方法.
有没有人对我需要做的事情有任何其他想法来标记文本?另外,您对实施上述策略所提及的技术和工具有何看法?
背景信息 :(从评论到Dough T关于Solr或Elastic搜索的建议)
我们正在使用ElasticSearch,我们使用它的工具进行基本标记化.我们想要单独进行上面描述的标记化,因为在标记化之后,我们将需要应用一些非常复杂的语义分析来从文本中提取意义.我们希望灵活地准确地标记我们如何指定,以及使用我们自己的数据注释附加到我们自己的格式存储令牌的便利性.
我们绝对需要的一件事是每个令牌的单个(大)数据库记录,可以随时访问和修改,其中包含与该令牌的使用相关的所有内容.我认为,当文档被索引时,排除仅使用ES标记化来处理它们.我们可以使用ES的分析模块来分析文本而不对其进行索引,然后单独处理每个令牌以构建/更新令牌的数据库记录......我们寻求有关此方法的建议.
想知道一次迭代与多次迭代对性能的影响.我在Python工作 - 我不确定这是否会影响答案.
考虑尝试对列表中的每个项目执行一系列数据转换.
def one_pass(my_list):
for i in xrange(0, len(my_list)):
my_list[i] = first_transformation(my_list[i])
my_list[i] = second_transformation(my_list[i])
my_list[i] = third_transformation(my_list[i])
return my_list
def multi_pass(my_list):
range_end = len(my_list)
for i in xrange(0, range_end):
my_list[i] = first_transformation(my_list[i])
for i in xrange(0, range_end):
my_list[i] = second_transformation(my_list[i])
for i in xrange(0, range_end):
my_list[i] = third_transformation(my_list[i])
return my_list
Run Code Online (Sandbox Code Playgroud)
现在,除了具有可读性的问题,严格来说,在性能方面,one_pass优于multi_pass是否真的有优势?假设大部分工作都发生在转换函数本身中,那么multi_pass中的每次迭代不会只占用大约1/3的时间吗?