小编arn*_*rts的帖子

龙卷风/扭曲 - 芹菜 - Gevent比较

我在理解这三个框架之间的差异时遇到了一些麻烦:

这三个框架可以用于同时运行代码,但使用不同数量的线程/进程或代码样式以不同的方式执行此操作.这就是我现在理解差异的方式:

  • Tornado/Twisted使用由I/O循环控制的异步代码.这允许代码在单个线程上运行(多个线程是无用的,因为如果你有非阻塞代码,这是不必要的)
  • Celery使用基于任务的系统异步运行代码,代码本身仍然是同步的.存在一个主要过程,能够在不同进程的其他工作者之间分配不同的任务.
  • Gevent使用基于线程的系统并生成一个线程来处理不同的incomming连接.

我现在遇到的问题是:

  1. 我对这些框架的理解是否正确?
  2. 线程和进程之间的主要区别在于不同的线程使用相同的内存,而进程则没有.一个进程通常在一个服务器核心上运行吗?(从而使Celery很难在小型服务器上实现)
  3. 如果我们谈论web应用程序和套接字:

Tornado/Twisted能够接受(几乎)任意数量的套接字,因为它们使用异步代码并在I/O循环中对请求进行排队.

芹菜/ GEVENT能这样做呢?他们是否必须生成一个新的进程/线程才能接受新的套接字?

我试图弄清楚哪种技术最适合构建实时Web应用程序.

python twisted tornado celery gevent

22
推荐指数
1
解决办法
8945
查看次数

从chrome开发人员工具中的工作区运行javascript文件

是否可以在chrome开发人员工具控制台中的本地工作区中运行新创建的JavaScript文件?

我想要实现的工作流程如下图所示:

在此输入图像描述

我希望能够在我的工作区中创建一个新文件,运行(或需要或其他)文件,并能够在chrome开发人员控制台中使用它的函数和变量.

如果我是正确的,这意味着在网页的上下文中运行脚本并将方法和变量添加到窗口对象?

他们可以这样做吗?

javascript google-chrome google-chrome-devtools

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

pdf.js与本地pdf文件

我正在尝试pdf.js库,只想在我的服务器上显示本地pdf文件,而不是示例提供的pdf文件.

<html>
<body>
  <canvas id="the-canvas" style="border:1px solid black"></canvas>

  <!-- Use latest PDF.js build from Github -->
  <script type="text/javascript" src="https://raw.github.com/mozilla/pdf.js/gh-pages/build/pdf.js"></script>

  <script type="text/javascript">
    //
    // NOTE:
    // Modifying the URL below to another server will likely *NOT* work. Because of browser
    // security restrictions, we have to use a file server with special headers
    // (CORS) - most servers don't support cross-origin browser requests.
    //
    var url = '/test.pdf';

    //
    // Disable workers to avoid yet another cross-origin issue (workers need the …
Run Code Online (Sandbox Code Playgroud)

html pdf pdf.js

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

测试期间创建Flask-Admin蓝图

我正在测试我的应用时,我在使用Flask-Admin创建蓝图时遇到了麻烦.

这是我的View类(使用SQLAlchemy)

##
# All views that only admins are allowed to see should inherit from this class.
#
class AuthView(ModelView):
    def is_accessible(self):
        return current_user.is_admin()

class UserView(AuthView):
    column_list = ('name', 'email', 'role_code')
Run Code Online (Sandbox Code Playgroud)

这是我初始化视图的方式:

# flask-admin
admin.add_view(UserView(User, db.session))
admin.init_app(app)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行多个测试(故障总是发生在第二个测试和随后的所有其他测试)时,我总是收到以下错误消息:

======================================================================
ERROR: test_send_email (tests.test_views.TestUser)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/lib/python2.7/site-packages/nose/case.py", line 133, in run
    self.runTest(result)
  File "/lib/python2.7/site-packages/nose/case.py", line 151, in runTest
    test(result)
  File "/lib/python2.7/site-packages/flask_testing.py", line 72, in __call__
    self._pre_setup()
  File "/lib/python2.7/site-packages/flask_testing.py", line 80, in _pre_setup
    self.app = self.create_app()
  File …
Run Code Online (Sandbox Code Playgroud)

python flask flask-sqlalchemy flask-admin

11
推荐指数
2
解决办法
3076
查看次数

jQuery blur()和click()

我有以下jQuery函数:

1)提交表格

$(".content").delegate('.entryButton','click', function() {
        var form = $(this).closest("form");
        var id = form.attr('id');
        var text = form.find("textarea").val();
        Sijax.request('add_entry', [id, text]);

        //Prevent the form from being submitted (default HTML)
        return false;
    });
Run Code Online (Sandbox Code Playgroud)

2)放大表格并显示输入按钮

$("textarea").focus(function() {
      $(this).css('height', '80px');
      var button = $(this).parent().next().children();
      button.css('visibility', 'visible');
      button.css('height', '20px')
    });
Run Code Online (Sandbox Code Playgroud)

3)使textarea更小并隐藏按钮

$("textarea").blur(function() {
      $(this).css('height', '30px');
      var button = $(this).parent().next().children();
      button.css('height', '0px')
    });
Run Code Online (Sandbox Code Playgroud)

当我尝试输入时会发生这种情况:

  • 单击字段(焦点事件),字段变大并显示输入按钮
  • 输入文字
  • 首次单击输入按钮:现在模糊事件会触发,这会使字段再次变小,但点击事件不会触发
  • 如果我再次单击该按钮,则表单会提交

我认为这意味着模糊和点击事件相互干扰?

你可以在这里找到问题的小提琴.当您按下按下该按钮的按钮时,它会使该区域模糊但不会输入该区域.当您按下按钮并且字段模糊时,该条目会被提交.

有任何想法吗?

提前致谢!

jquery

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

Python文件对象到Flask的FileStorage

我正在尝试在Flask中测试我的upload()方法.唯一的问题是Flask 中的FileStorage对象有一个方法save(),python File对象没有.

我像这样创建我的文件:

file = open('documents-test/test.pdf')
Run Code Online (Sandbox Code Playgroud)

但我无法测试我的upload()方法,因为该方法使用save().

有关如何将此File对象转换为Flask Filestorage对象的任何想法?

python testing flask

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

AngularJS:在Controller中使用指令元素

我正在创建一个分页应用程序,用户可以在同一个窗口中切换页面(页面显示在彼此之下).每当有人更改页面时,我希望窗口滚动右页

这是我的页面指令:

.directive('page', function () {
    return {
        restrict: "E",
        transclude: true,
        template: '<div ng-transclude></div>',
        link: function(scope, element, attrs) {
            /*
            * Better in controller, now the function has to be evaluated for every directive.
            * */
            scope.$on('pageChanged', function(event, page) {
                if (parseInt(attrs.number) === page) {
                    if (page === 1) {
                        window.scrollTo(100, element[0].offsetTop - 110);
                    }
                    else {
                        window.scrollTo(0, element[0].offsetTop - 60);
                    }
                }
            });
        }
    }
Run Code Online (Sandbox Code Playgroud)

这有效,但现在每个指令都会侦听pageChanged事件并相应地执行操作.我宁愿只在控制器中监听,让控制器将窗口滚动到右侧页面.(这种方式只需要评估一个功能).

$scope.$on('pageChanged', function (event, pageNr) {
            $scope.currentPage = pageNr;
            /*
            * Scroll to …
Run Code Online (Sandbox Code Playgroud)

angularjs

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

Numpy.dot()维度未对齐

我无法为scipy.signal.dlsim方法提供正确的输入.

该方法需要4个状态空间矩阵:

A = np.array([
    [0.9056, -0.1908, 0.0348, 0.0880],
    [0.0973, 0.8728, 0.4091, -0.0027],
    [0.0068, -0.1694, 0.9729, -0.6131],
    [-0.0264, 0.0014, 0.1094, 0.6551]
    ])

B = np.array([
    [0, -0.0003, -0.0330, -0.0042, -0.0037],
    [0, -0.0005, 0.0513, -0.0869, -0.1812],
    [0, 0.0003, -0.0732, 1.1768, -1.1799],
    [0, -0.0002, -0.0008, 0.2821, -0.4797]
    ])

C = np.array([-0.01394, -0.0941, 0.0564, 0.0435])

D = np.array([0, 0.0004, -0.0055, 0.3326, 0.5383])
Run Code Online (Sandbox Code Playgroud)

和我用以下方式构建的输入向量:

inputs = np.array([
    data['input1'].values(),
    data['input2'].values(),
    data['input3'].values(),
    data['input4'].values(),
    data['input5'].values()
])
Run Code Online (Sandbox Code Playgroud)

这将创建一个带(5x752)尺寸的输入矩阵(我有752个数据点).所以我采用输入矩阵的转置来预处理我的数据:

inputs = np.transpose(inputs)
Run Code Online (Sandbox Code Playgroud)

输入矩阵现在具有(752x5)我认为是scipy仿真算法所必需的维度. …

python numpy matrix scipy

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

Flask AJAX自动完成

我正在尝试使用Flask框架使jQuery UI自动完成小部件工作.

http://flask.pocoo.org/docs/patterns/jquery/

http://jqueryui.com/autocomplete/#remote

这是我的HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.1//EN" "http://w3.org/TR/html4/strict.dtd">
<head>

  <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
  <script type="text/javascript" src="http://jzaefferer.github.com/jquery-validation/jquery.validate.js"></script>
  <script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
  <script type=text/javascript>
  $SCRIPT_ROOT = {{ request.script_root|tojson|safe }};
  </script>

  <style>
  .ui-autocomplete-loading {
    background: white url('images/ui-anim_basic_16x16.gif') right center no-repeat;
  }
  </style> 

 <script type="text/javascript">
  $(function() {
    $( "#university" ).autocomplete({
      source: $.getJSON($SCRIPT_ROOT + "/_search_university",
        {search: $('input[name="university"]').val()}),
      minLength: 2,
    });
  });
  </script>

</head>

<body>

  <div class="ui-widget">
    <label for="university">University: </label>
    <input id="university", name="university" />
  </div>

</body>
Run Code Online (Sandbox Code Playgroud)

这是我的Flask方法:

@app.route('/_search_university')
def search_university():
    search = request.args.get('search')
    results = …
Run Code Online (Sandbox Code Playgroud)

python jquery flask

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

AngularJS与Flask身份验证

我正在使用AngularJS构建一个Web应用程序,并使用Flask框架构建REST-API.

该应用程序由两部分组成:

  • 用户无需登录的部分:他们可以注册,登录,查看功能......

  • 用户必须登录的部分.

为了简单起见,我想在两个角度应用程序中将这两个部分分开,让Flask根据您的登录情况将您引导到正确的应用程序.

我想知道这是否是一个好方法?我认为有了这个,我可以保持身份验证非常简单.

flask angularjs

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

Python双继承

我正在尝试为以下问题找到合适的继承配置:

我的基类是一个Agent类,它有3个抽象方法:

class Agent():
__metaclass__ = abc.ABCMeta

    def __init__(self):

    @abc.abstractmethod
    def bidding_curve(self):

    @abc.abstractmethod
    def evaluate_bidding_curve(self):

    @abc.abstractmethod
    def action(self):
Run Code Online (Sandbox Code Playgroud)

可以使用可执行文件(dymo)或使用FMU(C源代码的zip文件)来模拟代理.因此,我创建了两种不同类型的代理,这些代理从基础代理继承并实现与模拟通信的方式.这是dymo仿真环境的实现,但FMU也是如此.

class DymoAgent(Agent):
    def __init__(self, power, dymo):
        """ 
        Agent based on the dymosim simulation environment.
        @param dymo: The dymo that needs to be run
        """


        super(DymoAgent, self).__init__()

        self.dymo = dymo

    def bidding_curve(self):
        pass

    def evaluate_bidding_curve(self, priority):
        pass

    def action(self, priority):
        self.dymo.action()
Run Code Online (Sandbox Code Playgroud)

DymoAgent和FMUAgent确定我的代理如何与模拟环境交互.

接下来,我需要代理的实现来确定代理如何与应用程序交互.但是,我希望这种交互独立于模拟环境.例如,我想创建一个可以与Heater应用程序通信的代理,并实现这样做的逻辑.

class Heater(WhatAgentShouldIUseHere):
    pass
Run Code Online (Sandbox Code Playgroud)

我希望这个Heater类能够实现Agent基类的抽象方法以及Dymo或FMUAgent的实现,因此它知道如何与模拟进行交互.但我不想用从不同的模拟代理继承的相同逻辑(因此基本相同的代码)编写2个Heater类.我在这张图片中总结了这个问题:

在此输入图像描述

有没有办法使用继承来防止这种情况?

/ Arnout

python inheritance

3
推荐指数
1
解决办法
259
查看次数

Python使用外部键对列表进行排序

我正在尝试根据条目的ID对条目列表进行排序.

我试过这段代码,但它不起作用:

entries.sort(cmp=None, key=Entry.id, reverse=False)
Run Code Online (Sandbox Code Playgroud)

列表中的对象是具有id的条目

这是我得到的错误:TypeError:'InstrumentedAttribute'对象不可调用

有任何想法吗?

提前致谢!

python

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