来自django.utils.html的urlize函数将url转换为可单击的链接.我的问题是我想在"<href ..>"中添加一个target ="_ blank",以便在新标签中打开此链接.有什么办法可以扩展urlize函数来接收额外的参数吗?或者我应该使用正则表达式来制作自定义过滤器来执行此操作?这有效吗?
我需要用python抓一个站点.我获得与urlib模块的源HTML代码,但我需要也刮由一个JavaScript功能(这是包含在HTML源)中产生一些HTML代码.这个功能在网站中的作用是当你按下一个按钮时输出一些HTML代码.如何用python代码"按下"这个按钮?scrapy可以帮助我吗?我用firebug捕获了POST请求,但是当我尝试在url上传递它时,我收到403错误.有什么建议?
在我的优化任务中,我发现内置的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)
为何如此区别?
由于没有人提供这个帖子的解决方案以及我迫切需要一个解决方法的事实,这里是我的情况和一些抽象的解决方案/想法供辩论.
我的堆栈:
我的问题:为Tornado找到一种方法来调度芹菜任务(已解决),然后异步收集结果(任何想法?).
场景1 :(请求/响应黑客加上webhook)
这会发生吗?它有任何逻辑吗?
场景2 :(龙卷风加长轮询)
这有效吗?
还有其他想法/架构吗?
我正在开发一个Django有点电子商务项目,简而言之,我有一个Customer和Merchant模型.Merchant模型与MerchantStore模型相关联,该模型以某种方式"复杂",具有过多的m2m和与各种模型的外键关系.
按照这篇文章中的解决方案并且没有足够的"时间"来进行自定义实现,我决定让每个商家成为"东西成员"并通过管理界面自定义他的商店.在cource中,我创建了一个具有适当权限的新组.
但是,出现了一些问题:
1)这被认为是有害的吗?是否存在相关的安全威胁?
2)如果你还没有足够的时间,这不是最好的方法吗?
我试图在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) 我对redis非常新,还在玩它.我想测试它是否与我的项目相关,但我不确定我正在运行的特定命令.SO上的用户让我确信使用管道和交易的性能优势所以我想我会问如何做到这一点.
基本上我有两个声明,我只想发布,而不必等待结果(似乎是管道衬里的一个很好的候选人.它看起来像这样:
Does valueX exist?
If it does insert valueY
Run Code Online (Sandbox Code Playgroud)
它非常简单,但到目前为止,我一直在研究它的所有方法似乎等待响应,如果ValueX存在,并且因为我正在做我的程序超过十亿次循环它研磨它停止.
这可能吗?如果它有助于我使用Java但尚未确定哪个客户端库(jedis或jredis,仍在测试).我实际上甚至没有完全确定redis,但是非常倾向于它(对于我正在做的速度看起来很好),所以任何建议都是可以接受的.
我试图用签名包装一个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) python ×6
django ×2
redis ×2
browser ×1
c++ ×1
celery ×1
cython ×1
database ×1
django-admin ×1
javascript ×1
jedis ×1
optimization ×1
regex ×1
tornado ×1