【问题标题】:Django view/method called repeatedly without any actual callsDjango视图/方法重复调用,没有任何实际调用
【发布时间】:2015-07-22 03:28:27
【问题描述】:
for i in xrange(1,NUM_USERS+1):
            print i
            private = RSA.generate(3072,Random.new().read)
            public = private.publickey()
            new_user = User(public_rsa=public.exportKey(), secret_rsa=private.exportKey())
            new_user.save()

在上面的循环中,我给出了 NUM_USERS=100 的值,但循环迭代到 200 而不是 100。这可能是什么原因?

编辑: 很抱歉各位,我无意中发现整个python方法被调用了两次,但我不知道为什么,所以我将详细描述。我正在编写一个基于 django 的服务器端,其方法如下:

def index(request):
    return HttpResponse("CREST Top Dir: " + PROJECT_ROOT)

def server_setup(request):
    try:
        process = subprocess.check_output(BACKEND+"mainbgw setup " + str(NUM_USERS), shell=True,\
                                          stderr=subprocess.STDOUT)

        for i in xrange(1,NUM_USERS+1):
            print i

现在发生的情况是,当我调用 server_setup 视图时,有时它会执行多次。同样,如果我调用index 视图,有时server_setup 也会同时调用。所以问题不在于xrange,而在于方法调用。这个问题的原因可能是什么?

【问题讨论】:

  • 让我猜猜,new_user = User(...)new_user.save() 增加了 NUM_USERS

标签: python django range xrange


【解决方案1】:

检查NUM_USERS 是否为 100。

for i in xrange(1,NUM_USERS+1):

    print 'NUM_USERS:', NUM_USERS  # check it

    print i
    private = RSA.generate(3072,Random.new().read)
    public = private.publickey()
    new_user = User(public_rsa=public.exportKey(), secret_rsa=private.exportKey())
    new_user.save()

【讨论】:

  • 我已经硬编码了NUM_USERS=100,所以是的,它肯定是 100。循环有时运行得很好,但大多数时候它可能只是过冲。
  • 试试这个答案。唯一可行的方法是如果 NUM_USERS 不是 100 以 开头,则它在您的循环中被修改。此代码将为您检查两者。
猜你喜欢
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
相关资源
最近更新 更多