小编hym*_*oth的帖子

在django中扩展urlize

来自django.utils.html的urlize函数将url转换为可单击的链接.我的问题是我想在"<href ..>"中添加一个target ="_ blank",以便在新标签中打开此链接.有什么办法可以扩展urlize函数来接收额外的参数吗?或者我应该使用正则表达式来制作自定义过滤器来执行此操作?这有效吗?

django

31
推荐指数
3
解决办法
6744
查看次数

用python生成的javascript生成的html

我需要用python抓一个站点.我获得与urlib模块的源HTML代码,但我需要也刮由一个JavaScript功能(这是包含在HTML源)中产生一些HTML代码.这个功能在网站中的作用是当你按下一个按钮时输出一些HTML代码.如何用python代码"按下"这个按钮?scrapy可以帮助我吗?我用firebug捕获了POST请求,但是当我尝试在url上传递它时,我收到403错误.有什么建议?

javascript python browser screen-scraping

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

Python re.split()vs split()

在我的优化任务中,我发现内置的split()方法比re.split()等效快了大约40%.

虚拟基准(易于复制 - 粘贴):

import re, time, random 

def random_string(_len):
    letters = "ABC"
    return "".join([letters[random.randint(0,len(letters)-1)] for i in range(_len) ])

r = random_string(2000000)
pattern = re.compile(r"A")

start = time.time()
pattern.split(r)
print "with re.split : ", time.time() - start

start = time.time()
r.split("A")
print "with built-in split : ", time.time() - start
Run Code Online (Sandbox Code Playgroud)

为何如此区别?

python regex

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

龙卷风芹菜整合黑客

由于没有人提供这个帖子的解决方案以及我迫切需要一个解决方法的事实,这里是我的情况和一些抽象的解决方案/想法供辩论.

我的堆栈:

  1. 龙卷风
  2. 芹菜
  3. MongoDB的
  4. Redis的
  5. 的RabbitMQ

我的问题:为Tornado找到一种方法来调度芹菜任务(已解决),然后异步收集结果(任何想法?).

场景1 :(请求/响应黑客加上webhook)

  • Tornado接收(用户)请求,然后在本地内存(或Redis)中保存{jobID :(用户)请求}以记住传播响应的位置,并使用jobID触发芹菜任务
  • 当芹菜完成任务时,它会在某个网址上执行webhook并告诉龙卷风这个jobID已经完成(加上结果)
  • Tornado检索(用户)请求并将响应转发给(用户)

这会发生吗?它有任何逻辑吗?

场景2 :(龙卷风加长轮询)

  • Tornado调度celery任务并将一些主json数据返回给客户端(jQuery)
  • jQuery在收到主json后进行一些长轮询,比方说,每隔x微秒,龙卷风根据某个数据库标志回复.当celery任务完成时,此数据库标志设置为True,然后jQuery"loop"结束.

这有效吗?

还有其他想法/架构吗?

python tornado celery

12
推荐指数
3
解决办法
6587
查看次数

向用户公开django admin.有害?

我正在开发一个Django有点电子商务项目,简而言之,我有一个Customer和Merchant模型.Merchant模型与MerchantStore模型相关联,该模型以某种方式"复杂",具有过多的m2m和与各种模型的外键关系.

按照这篇文章中的解决方案并且没有足够的"时间"来进行自定义实现,我决定让每个商家成为"东西成员"并通过管理界面自定义他的商店.在cource中,我创建了一个具有适当权限的新组.

但是,出现了一些问题:

1)这被认为是有害的吗?是否存在相关的安全威胁?

2)如果你还没有足够的时间,这不是最好的方法吗?

django django-admin

10
推荐指数
2
解决办法
2775
查看次数

Redis内存优化

我试图在Redis端以非常高效的方式编码一些数据(实际上是一个非常大的字符串).根据Redis文档,声称"尽可能使用散列",并声明了两个配置参数:

  • "hash-max-zipmap-entries",如果我理解的话它表示每个哈希键最多必须有多少个键(我是对的吗?).

  • "hash-max-zipmap-value",表示值的最大长度.它实际上是指领域还是价值?长度是以字节,字符还是什么?

我的想法是将字符串(以某种方式具有固定长度)分割成与上述参数一致的数量,并将它们存储为值.字段应该只是序列号,以确保一致的解码.

编辑:我已经进行了广泛的基准测试,看起来在哈希中编码字符串会使内存消耗增加约50%.

这是我的基准测试脚本:

import redis, random, sys

def new_db():
    db = redis.Redis(host='localhost', port=6666, db=0)
    db.flushall()
    return db

def db_info(db):
    return " used memory %s " % db.info()["used_memory_human"]

def random_string(_len):
    letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
    return "".join([letters[random.randint(0,len(letters)-1)] for i in range(_len) ]) 

def chunk(astr, size):
    while len(astr) > size:
        yield astr[:size]
        astr = astr[size:]
    if len(astr):  
        yield astr 

def encode_as_dict(astr, size): 
    dod={}
    cnt = 0
    for i in chunk(astr,size):
        dod[cnt] = i
        cnt+=1
    return dod


db=new_db()
r = random_string(1000000) …
Run Code Online (Sandbox Code Playgroud)

python optimization redis

8
推荐指数
1
解决办法
1819
查看次数

redis可以管理依赖于以前命令的多个命令吗?

我对redis非常新,还在玩它.我想测试它是否与我的项目相关,但我不确定我正在运行的特定命令.SO上的用户让我确信使用管道和交易的性能优势所以我想我会问如何做到这一点.

基本上我有两个声明,我只想发布,而不必等待结果(似乎是管道衬里的一个很好的候选人.它看起来像这样:

Does valueX exist?
If it does insert valueY
Run Code Online (Sandbox Code Playgroud)

它非常简单,但到目前为止,我一直在研究它的所有方法似乎等待响应,如果ValueX存在,并且因为我正在做我的程序超过十亿次循环它研磨它停止.

这可能吗?如果它有助于我使用Java但尚未确定哪个客户端库(jedis或jredis,仍在测试).我实际上甚至没有完全确定redis,但是非常倾向于它(对于我正在做的速度看起来很好),所以任何建议都是可以接受的.

database redis jedis

7
推荐指数
1
解决办法
3735
查看次数

无法将'vector <unsigned long>'转换为Python对象

我试图用签名包装一个c ++函数

vector < unsigned long > Optimized_Eratosthenes_sieve(unsigned long max)
Run Code Online (Sandbox Code Playgroud)

使用Cython.我有一个包含该函数的文件sieve.h,一个静态库sieve.a和我的setup.py如下:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [Extension("sieve",
                     ["sieve.pyx"],
                     language='c++',
                     extra_objects=["sieve.a"],
                     )]

setup(
  name = 'sieve',
  cmdclass = {'build_ext': build_ext},
  ext_modules = ext_modules
)
Run Code Online (Sandbox Code Playgroud)

在我的sieve.pyx中,我正在尝试:

from libcpp.vector cimport vector

cdef extern from "sieve.h":
    vector[unsigned long] Optimized_Eratosthenes_sieve(unsigned long max)

def OES(unsigned long a):
    return Optimized_Eratosthenes_sieve(a) # this is were the error occurs
Run Code Online (Sandbox Code Playgroud)

但我得到这个"无法将'矢量'转换为Python对象"错误.我错过了什么吗?

解决方案:我必须从我的OES函数返回一个python对象:

def OES(unsigned long a):
    cdef vector[unsigned long] aa
    cdef …
Run Code Online (Sandbox Code Playgroud)

c++ python cython

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

对集合列表进行排序

我有一个我想要执行交集的集合列表.

是否有一种有效的方法按长度对这些集合进行排序,以优化计算?

python

5
推荐指数
2
解决办法
4047
查看次数