python - python django,如何禁止从 for 循环转到下一个代码
问题描述
def redirectTest(item):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'
}
r = None
try:
r = requests.head(item, allow_redirects=False, headers=headers)
except Exception as e:
print(e)
if r is not None:
if r.status_code == 301:
print("Tested: " + str(r.status_code))
elif r.status_code == 302:
print("Tested: " + str(r.status_code))
else:
print("Tested: " + str(r.status_code))
except requests.exceptions.RequestException as e:
print('error: ' + e)
return
@ensure_csrf_cookie
def re_check_url(request):
if request.method == "POST":
if request.is_ajax():
resolved_urls = ['twitch.tv/yumyumyu77']
scheme_list = ['http://www.', 'http://', 'https://www.', 'https://']
for item in resolved_urls:
for scheme_item in scheme_list:
redirectTest(scheme_item + item)
return JsonResponse({'res': 1})
return JsonResponse({'res': 2})
此代码检查scheme + some url
的响应。
但是当我执行代码时,我的 Django 终端会打印:
r_status_code: 301
r_status_code: 301
r_status_code: 200
[22/Oct/2018 23:54:49] "POST /re/check/url/ HTTP/1.1" 200 10
r_status_code: 301
问题:
我认为这意味着return JsonResponse({'res': 1})
这条线在前面,print("Tested: " + str(r.status_code))
这条线在之后或之后。
有时打印正常,但有时打印异常。
问题:
我了解到 Python 代码是从上到下逐行执行的,但似乎并没有这样做。
为什么会这样?我该如何解决?
它的执行顺序不是我所期望的。
编辑:
我试着用Lock()
for item in resolved_urls:
for scheme_item in scheme_list:
from threading import Lock
_lock = Lock()
with _lock:
redirectTest(scheme_item + item)
但它似乎并没有很好地工作。
解决方案
一切实际上都在正常工作。200 表示成功,它会重定向到成功页面。然后它运行你的最后一个循环。
推荐阅读
- swift - @main 和 @uiapplicationmain 有什么区别
- python - Python 列表格式化字符串
- python - 在 Tkinter 中输入键绑定
- python - .txt 文件中只有一个单词正在读取
- javascript - 无法分配给 g2.js 中对象“[object Object]”的只读属性“constructor”
- javascript - TokenExpiredError:当我使用 passport-jwt 时 jwt 已过期
- mapreduce - 当数据库很大时,couchdb mapReduce 超时
- json - 我可以在 Salesforce 平台事件中创建数据类型为 sobject 的自定义字段吗?
- reactjs - 图表刷新两次
- python - 我在运行此代码时遇到问题,它不断返回此错误“NameError:名称'矩阵'未定义”