小编Sal*_*ami的帖子

芹菜停止执行链

我有一个check_orders任务,定期执行.它创建了一组任务,以便我可以计算执行任务所花费的时间,并在完成任务时执行某些操作(这是res.join [1]和grouped_subs的目的)分组的任务是成对的链式任务.

我想要的是当第一个任务不满足条件(失败)时不执行链中的第二个任务.对于我的生活,我无法理解这一点,我觉得这对于作业队列管理器来说是非常基本的功能.当我尝试在[2]之后注释掉的东西(引发异常,删除回调)......由于某种原因,我们在check_orders中遇到了join()(它打破了组).我已经尝试将ignore_result设置为False以及所有这些任务,但它仍然不起作用.

@task(ignore_result=True)
def check_orders():
    # check all the orders and send out appropriate notifications
    grouped_subs = []

    for thingy in things:
       ...

        grouped_subs.append(chain(is_room_open.subtask((args_sub_1, )), 
                        notify.subtask((args_sub_2, ), immutable=True)))

    res = group(grouped_subs).apply_async()

    res.join()         #[1]
    logger.info('Done checking orders at %s' % current_task.request.id))

@task(ignore_result=True)
def is_room_open(args_sub_1):
    #something time consuming
    if http_req_and_parse(args_sub_1):
        # go on and do the notify task
        return True
    else:
        # [2]
        # STOP THE CHAIN SOMEHOW! Don't execute the rest of the chain, how?
        # None of the following …
Run Code Online (Sandbox Code Playgroud)

python celery celery-task django-celery celerybeat

20
推荐指数
3
解决办法
6825
查看次数

Chrome Devpanel扩展与背景页面通信

我有一个chrome devtools面板的扩展.我可以使用chrome.devtools.inspectedWindow.eval... 向页面发送消息但是如何在开发面板中接收消息?具体来说,我需要我的devpanel来挂钩页面上发生的事件.我无法听到我的内容脚本上的事件,也没有后台页面.

我已尝试chrome.extension.sendMessage在内容脚本中以及chrome.extension.onMessage.addListener开发面板脚本中.但sendMessage抱怨Port error: Could not establish connection. Receiving end does not exist.

长期存在的问题依然存在:

在内容脚本或背景页面中:

var port = chrome.extension.connect({name: "test"});
port.postMessage({msg: "testing"});
Run Code Online (Sandbox Code Playgroud)

在开发工具面板javascript:

chrome.extension.onConnect.addListener(function(port) {
    port.onMessage.addListener(function(msg) {
         // never gets here
    });
 });
Run Code Online (Sandbox Code Playgroud)

如何在我的开发工具面板中侦听在我的内容脚本中触发的事件?Firefox的附加SDK中的这样的图表会很棒:https://addons.mozilla.org/en-US/developers/docs/sdk/latest/static-files/media/content-scripting-overview.png

google-chrome google-chrome-extension google-chrome-devtools

18
推荐指数
1
解决办法
9234
查看次数

使用 Cypress 进行测试 Stripe Checkout

我必须在 js 中调用stripe.redirectToCheckouthttps://stripe.com/docs/js/checkout/redirect_to_checkout)才能将客户带到他们的条纹结帐页面。

我想使用 cypress 来测试结帐过程,但它无法处理条带重定向,因为在stripe.redirectToCheckout导航到 Stripe 域上的页面时,cypress 框架丢失了。

我还想测试 Stripe 是否将我们重定向回成功或错误 URL。

  1. 一旦我们导航到 Stripe checkout,是否有任何方法可以强制 cypress “重新附加”到页面 - 或者 -
  2. 有什么方法可以获取 Stripe 结帐页面的 URL,以便我们可以手动重定向,或者只知道至少使用正确的参数调用了它。

我知道 cypress ( https://github.com/cypress-io/cypress/issues/1496 )的人认为测试外部站点是一种“反模式” 。但是,在这种情况下,如何测试非常标准的 Web 流程、结账(使用非常流行和标准的支付服务,我会补充)?我不认为这是一种“反模式”。这是端到端测试的一个重要步骤,Stripe专门给我们提供了一个测试沙箱来做这种事情。

javascript stripe-payments cypress stripe-checkout

14
推荐指数
1
解决办法
789
查看次数

使用Add-on SDK添加工具栏按钮?为Firefox附加组件集成XUL和附加SDK?

我已经使用Add-on SDK API编写了大部分Firefox插件.我现在发现Add-on SDK可能不够强大,不适合我的目的.我需要两件事:

  1. 位置栏旁边工具栏中的下拉按钮.
  2. 在firefox中修改加载项管理器

这确实令人失望,但我不相信Add-on SDK可以实现这些功能.

首先,我了解widgetAdd-on SDK API中有一个模块.但这只允许我在笨拙的附加栏上添加一个简单的图标或标签.如果我需要为Firebug或Greasemonkey的位置栏旁边添加一个更好的按钮怎么办?至于在firefox中修改附加组件管理器,我已经尝试使用附加SDK的Nickolay Ponomarev的XUL而没有任何成功.如果有人知道如何使这个工作,并指出我的方向是非常有用的(cfx init --template xul当我尝试时,常规SDK没有做任何事情)

firefox xul firefox-addon firefox-addon-sdk

10
推荐指数
1
解决办法
3060
查看次数

ng-cloak指令过早被删除

我有一个angular-js应用程序,其中包含一些最初不应显示的控制器.尽管我使用了ng-cloak,它们仍在屏幕上闪烁.问题似乎是编译被调用并删除ng-cloak指令和类,这使得控制器内容可见,即使它不应该是因为ng-show是false.

如果我在ng-cloak的编译方法中暂停js执行,我可以看到元素出现,因为删除了ng-cloak指令.如果我在控制器中暂停js执行(例如在"$ scope.visible = false;"上),我可以看到控制器在页面上保持可见.然后控制器再次不可见,因为它应该在稍后加载时.

  • 我在文档HEAD中加载我的app.js和angular.js
  • 我在文档HEAD中有我的CSS
  • 我在我的外部css和内联中包含了ng-cloak css规则和"!important"

如何防止这种闪烁?为什么ng-cloak不尊重ng-show?

index.html的:

<div ng-cloak class="ng-cloak" ng-controller="RoomsController" ng-show="visible">
    <h1>This flashes, it can be seen if we set a breakpoint in the controller js, or after the ng-cloak directive's compile method in angular.js</h1>
</div>
Run Code Online (Sandbox Code Playgroud)

app.js:

app.controller('RoomsController', ['$scope',
    function ($scope) {
        $scope.visible = false;
    }
]);
Run Code Online (Sandbox Code Playgroud)

html javascript angularjs angularjs-directive

9
推荐指数
2
解决办法
5986
查看次数

TypeScript Type-safe Omit函数

我想_.omit在普通打字稿中复制lodash的功能.omit应返回一个对象,该对象具有在首先出现的object参数之后通过参数指定的某些属性.

这是我最好的尝试:

function omit<T extends object, K extends keyof T>(obj: T, ...keys: K[]): {[k in Exclude<keyof T, K>]: T[k]} {
    let ret: any = {};
    let key: keyof T;
    for (key in obj) {
        if (!(keys.includes(key))) {
            ret[key] = obj[key];
        }
    }
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误:

Argument of type 'keyof T' is not assignable to parameter of type 'K'.
  Type 'string | number | symbol' is not assignable to type 'K'.
    Type 'string' is not assignable …
Run Code Online (Sandbox Code Playgroud)

javascript underscore.js typescript lodash ecmascript-7

7
推荐指数
2
解决办法
1556
查看次数

IE9中的Mangled URL参数

我看到来自IE9桌面客户端的错误URL参数.链接通过电子邮件发送,所有受损的URL都来自电子邮件的纯文本版本.

我几乎可以肯定它与我的堆栈无关(django,nginx,mandrill)参数的值具有完全转置的字符.原始字符是损坏的一个减去13个位置(例如rznvy_cynva= email_plain,ubgryfpbz= hotelscom).

以下是一个受到严重破坏的请求的示例:

GET /book/48465?sid=rznvy_cynva&order=q09362qs55-741722-442521-98n2-n88s4nnr87192n&checkOut=07-17-15&affiliate=ubgryfpbz&checkIn=07-16-15 HTTP/1.1" 302 5 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 
Run Code Online (Sandbox Code Playgroud)
  • 所有带有错位URL的请求都具有与示例相同的用户代理.
  • 与受损网址关联的IP地址不限于任何位置.
  • 查找用户代理,这似乎仅限于桌面Windows 7,IE9用户.

email url email-client email-attachments internet-explorer-9

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