繁体   English   中英

我如何摆脱循环?

[英]How can I get away from a loop?

所以我一直在尝试使用Monitor-对于那些不知道什么是Monitor的人-基本上,这意味着您正在一段时间内检查某些元素,URL或其他内容,然后再次检查是否已改变。

这就是我所做的,并且...

url = 'mrcnoir'

while True:
        try:
            password_page = requests.get('https://{}.com'.format(url), timeout=5)
            password_page.raise_for_status()

        except requests.exceptions.RequestException as err:
            print('Error checking password page! - https://{}.com'.format(url) + ' - ' + str(err))
            continue



        else:
            # *************---If password up---**************

            if ('password' in password_page.url):
                        # Password page is up
                        print('Password page is up! - ' + 'https://{}.com'.format(url))
                        if not ('password' in password_page.url):

                            # No password page -> password page


                            # *************---Send---**************

                            print("SENDING...1")

                            time.sleep(random.randint(6, 12))


            # *************---If password down---**************

            else:
                # Password page is down
                print('Password page is down! - ' + 'https://{}.com'.format(url))
                if ('password' in password_page.url):

                    # Password page -> no password page


                    # *************---Send---**************

                    print("SENDING...2") #<---- If it comes in here - it will be stuck forever and just keep posting this print...
                    time.sleep(random.randint(6, 12))

        # *************---Retry between 6-12 random.---**************
        finally:
            time.sleep(random.randint(6, 12))

我遇到的问题是它在底部打印“ SENDING ... 2”-发生的是它一直一直在继续打印出SENDING ... 2,这意味着它一直卡在循环中-

基本上,我想做的是,每当涉及第二个Else部分时,都应该将其打印一次,然后继续“监视”并检查直到有新的更改。 这意味着它将需要等到它出现在URL中/在URL中输入密码。

在这种情况下,我该如何实现?

url = 'mrcnoir'
last_status = False
while True:
        try:
            password_page = requests.get('https://{}.com'.format(url), timeout=5)
            password_page.raise_for_status()

        except requests.exceptions.RequestException as err:
            print('Error checking password page! - https://{}.com'.format(url) + ' - ' + str(err))
            continue

        else:
            # *************---If password up---**************

            if 'password' in password_page.url and last_status == False:
                # Password page is up
                last_status = True
                print('Password page is up! - ' + 'https://{}.com'.format(url))

                time.sleep(random.randint(6, 12))


            # *************---If password down---**************

            elif not 'password' in password_page.url and last_status == True:
                # Password page is down
                last_status = False
                print('Password page is down! - ' + 'https://{}.com'.format(url))
                time.sleep(random.randint(6, 12))

        # *************---Retry between 6-12 random.---**************
        finally:
            time.sleep(random.randint(6, 12))
import requests
import random
import time

url = 'https://mrcnoir.com/account/login'
errState = False

while True:
    try:
        password_page = requests.get('{}'.format(url), timeout=5)
        password_page.raise_for_status()

    except requests.exceptions.RequestException as err:
        if not errState:            
            print('Error checking password page! - {}'.format(url) + ' - ' + str(err))
            print("SENDING...2")   # <-----------------
            errState = True
        continue

    else:
        # *************---If password up---**************

        if ('password' in password_page.text):
            # Password page is up
            print('Password page is up! - ' + '{}'.format(url))
            print("SENDING...1")
            errState = False


        #else:
        #    # Password page is down ???
        #    # this is not a useful test, if it is down you get an exception and
        #    # should handle it there
        #    print('Password page is down! - ' + '{}'.format(url))
        #    print("SENDING...2") #<---- If it comes in here - it will be stuck forever and just keep posting this print...

    # *************---Retry between 6-12 random.---**************
    finally:
        time.sleep(random.randint(6, 12))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM