小编Ste*_*noP的帖子

我如何模拟django信号处理程序?

我有一个通过装饰器连接的signal_handler,这个非常简单:

@receiver(post_save, sender=User, 
          dispatch_uid='myfile.signal_handler_post_save_user')
def signal_handler_post_save_user(sender, *args, **kwargs):
   # do stuff
Run Code Online (Sandbox Code Playgroud)

我想做的是在测试中使用模拟库http://www.voidspace.org.uk/python/mock/进行模拟,以检查django调用它的次数.我的代码目前是这样的:

def test_cache():
    with mock.patch('myapp.myfile.signal_handler_post_save_user') as mocked_handler:
        # do stuff that will call the post_save of User
    self.assert_equal(mocked_handler.call_count, 1)
Run Code Online (Sandbox Code Playgroud)

这里的问题是即使被模拟也会调用原始的信号处理程序,这很可能是因为@receiver装饰器正在某处存储信号处理程序的副本,所以我在嘲笑错误的代码.

所以问题是:如何模拟我的信号处理程序以使我的测试工作?

请注意,如果我将信号处理程序更改为:

def _support_function(*args, **kwargs):
    # do stuff

@receiver(post_save, sender=User, 
          dispatch_uid='myfile.signal_handler_post_save_user')
def signal_handler_post_save_user(sender, *args, **kwargs):
   _support_function(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

而我嘲笑_support_function,一切都按预期工作.

python django signals mocking django-signals

43
推荐指数
2
解决办法
8264
查看次数

如何避免iframe中的锚点滚动父页面

所以,问题出在这里:我有一个很长的页面,中间有一个iframe.现在,如果在iframe中单击一个锚点,整个页面将滚动到iframe,这是我想要避免的.

这是一个例子:http://jsfiddle.net/ymbV7/1/ 不要向下滚动页面,而是滚动iframe直到你可以看到"内容"菜单,并尝试任何链接(例如"功能") ).

我需要外部页面不滚动,而iframe必须正确滚动到单击的锚点.

有任何想法吗?

html anchor iframe

15
推荐指数
1
解决办法
3759
查看次数

pyspark:使用spark-submit运送jar依赖项

我写了一个pyspark脚本,它读取两个json文件,coGroup然后将结果发送到elasticsearch集群; 当我在本地运行它时,一切都按预期工作(大多数),我下载了和elasticsearch-hadoop文件的jar文件,然后使用参数使用pyspark运行我的工作,我可以看到弹性搜索集群中出现的文档.org.elasticsearch.hadoop.mr.EsOutputFormatorg.elasticsearch.hadoop.mr.LinkedMapWritable--jars

但是,当我尝试在spark集群上运行它时,我收到此错误:

Traceback (most recent call last):
  File "/root/spark/spark_test.py", line 141, in <module>
    conf=es_write_conf
  File "/root/spark/python/pyspark/rdd.py", line 1302, in saveAsNewAPIHadoopFile
    keyConverter, valueConverter, jconf)
  File "/root/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py", line 538, in __call__
  File "/root/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling z:org.apache.spark.api.python.PythonRDD.saveAsNewAPIHadoopFile.
: java.lang.ClassNotFoundException: org.elasticsearch.hadoop.mr.LinkedMapWritable
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:274)
    at org.apache.spark.util.Utils$.classForName(Utils.scala:157)
    at org.apache.spark.api.python.PythonRDD$$anonfun$getKeyValueTypes$1$$anonfun$apply$9.apply(PythonRDD.scala:611)
    at org.apache.spark.api.python.PythonRDD$$anonfun$getKeyValueTypes$1$$anonfun$apply$9.apply(PythonRDD.scala:610)
    at scala.Option.map(Option.scala:145)
    at …
Run Code Online (Sandbox Code Playgroud)

python elasticsearch apache-spark pyspark

4
推荐指数
1
解决办法
3715
查看次数