python的面試題整理Web篇(1)_第1頁(yè)
python的面試題整理Web篇(1)_第2頁(yè)
python的面試題整理Web篇(1)_第3頁(yè)
python的面試題整理Web篇(1)_第4頁(yè)
python的面試題整理Web篇(1)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2020年python的面試題整理Web篇Flask140.對(duì)Flask藍(lán)圖(Blueprint)的理解?藍(lán)圖的定義藍(lán)圖 /Blueprint 是Flask應(yīng)用程序組件化的方法,可以在一個(gè)應(yīng)用內(nèi)或跨越多個(gè)項(xiàng)目共用藍(lán)圖。使用藍(lán)圖可以極大簡(jiǎn)化大型應(yīng)用的開發(fā)難度,也為Flask擴(kuò)展提供了一種在應(yīng)用中注冊(cè)服務(wù)的集中式機(jī)制。藍(lán)圖的應(yīng)用場(chǎng)景:把一個(gè)應(yīng)用分解為一個(gè)藍(lán)圖的集合。這對(duì)大型應(yīng)用是理想的。一個(gè)項(xiàng)目可以實(shí)例化一個(gè)應(yīng)用對(duì)象,初始化幾個(gè)擴(kuò)展,并注冊(cè)一集合的藍(lán)圖。以URL前綴和/或子域名,在應(yīng)用上注冊(cè)一個(gè)藍(lán)圖。URL前綴/子域名中的參數(shù)即成為這個(gè)藍(lán)圖下的所有視圖函數(shù)的共同的視圖參數(shù)(默認(rèn)情況下) 在一個(gè)應(yīng)用

2、中用不同的URL規(guī)則多次注冊(cè)一個(gè)藍(lán)圖。通過藍(lán)圖提供模板過濾器、靜態(tài)文件、模板和其他功能。一個(gè)藍(lán)圖不一定要實(shí)現(xiàn)應(yīng)用或視圖函數(shù)。初始化一個(gè)Flask擴(kuò)展時(shí),在這些情況中注冊(cè)一個(gè)藍(lán)圖。藍(lán)圖的缺點(diǎn):不能在應(yīng)用創(chuàng)建后撤銷注冊(cè)一個(gè)藍(lán)圖而不銷毀整個(gè)應(yīng)用對(duì)象。使用藍(lán)圖的三個(gè)步驟1.創(chuàng)建一個(gè)藍(lán)圖對(duì)象blue = Blueprint(blue,_name_)2.在這個(gè)藍(lán)圖對(duì)象上進(jìn)行操作,例如注冊(cè)路由、指定靜態(tài)文件夾、注冊(cè)模板過濾器.blue.route(/)def blue_index(): return Welcome to my blueprint3.在應(yīng)用對(duì)象上注冊(cè)這個(gè)藍(lán)圖對(duì)象app.register_bl

3、ueprint(blue,url_prefix=/blue)141.Flask 和 Django 路由映射的區(qū)別?在django中,路由是瀏覽器訪問服務(wù)器時(shí),先訪問的項(xiàng)目中的url,再由項(xiàng)目中的url找到應(yīng)用中url,這些url是放在一個(gè)列表里,遵從從前往后匹配的規(guī)則。在flask中,路由是通過裝飾器給每個(gè)視圖函數(shù)提供的,而且根據(jù)請(qǐng)求方式的不同可以一個(gè)url用于不同的作用。Django142.什么是wsgi,uwsgi,uWSGI?WSGI:web服務(wù)器網(wǎng)關(guān)接口,是一套協(xié)議。用于接收用戶請(qǐng)求并將請(qǐng)求進(jìn)行初次封裝,然后將請(qǐng)求交給web框架。實(shí)現(xiàn)wsgi協(xié)議的模塊:wsgiref,本質(zhì)上就是編寫一

4、socket服務(wù)端,用于接收用戶請(qǐng)求(django)werkzeug,本質(zhì)上就是編寫一個(gè)socket服務(wù)端,用于接收用戶請(qǐng)求(flask)uwsgi:與WSGI一樣是一種通信協(xié)議,它是uWSGI服務(wù)器的獨(dú)占協(xié)議,用于定義傳輸信息的類型。 uWSGI:是一個(gè)web服務(wù)器,實(shí)現(xiàn)了WSGI的協(xié)議,uWSGI協(xié)議,http協(xié)議143.Django、Flask、Tornado的對(duì)比?1、 Django走的大而全的方向,開發(fā)效率高。它的MTV框架,自帶的ORM,admin后臺(tái)管理,自帶的sqlite數(shù)據(jù)庫(kù)和開發(fā)測(cè)試用的服務(wù)器,給開發(fā)者提高了超高的開發(fā)效率。 重量級(jí)web框架,功能齊全,提供一站式解決的思路

5、,能讓開發(fā)者不用在選擇上花費(fèi)大量時(shí)間。自帶ORM和模板引擎,支持jinja等非官方模板引擎。自帶ORM使Django和關(guān)系型數(shù)據(jù)庫(kù)耦合度高,如果要使用非關(guān)系型數(shù)據(jù)庫(kù),需要使用第三方庫(kù)自帶數(shù)據(jù)庫(kù)管理app成熟,穩(wěn)定,開發(fā)效率高,相對(duì)于Flask,Django的整體封閉性比較好,適合做企業(yè)級(jí)網(wǎng)站的開發(fā)。python web框架的先驅(qū),第三方庫(kù)豐富2、 Flask 是輕量級(jí)的框架,自由,靈活,可擴(kuò)展性強(qiáng),核心基于Werkzeug WSGI工具 和jinja2 模板引擎適用于做小網(wǎng)站以及web服務(wù)的API,開發(fā)大型網(wǎng)站無壓力,但架構(gòu)需要自己設(shè)計(jì)與關(guān)系型數(shù)據(jù)庫(kù)的結(jié)合不弱于Django,而與非關(guān)系型數(shù)據(jù)庫(kù)

6、的結(jié)合遠(yuǎn)遠(yuǎn)優(yōu)于Django3、 Tornado走的是少而精的方向,性能優(yōu)越,它最出名的異步非阻塞的設(shè)計(jì)方式Tornado的兩大核心模塊:iostraem:對(duì)非阻塞的socket進(jìn)行簡(jiǎn)單的封裝ioloop: 對(duì)I/O 多路復(fù)用的封裝,它實(shí)現(xiàn)一個(gè)單例144.CORS 和 CSRF的區(qū)別?什么是CORS?CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是“跨域資源共享(Cross-origin resoure sharing). 它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請(qǐng)求,從而客服了AJAX只能同源使用的限制。什么是CSRF?CSRF主流防御方式是在后端生成表單的時(shí)候生成一串隨機(jī)token,內(nèi)置到

7、表單里成為一個(gè)字段,同時(shí),將此串token置入session中。每次表單提交到后端時(shí)都會(huì)檢查這兩個(gè)值是否一致,以此來判斷此次表單提交是否是可信的,提交過一次之后,如果這個(gè)頁(yè)面沒有生成CSRF token,那么token將會(huì)被清空,如果有新的需求,那么token會(huì)被更新。 攻擊者可以偽造POST表單提交,但是他沒有后端生成的內(nèi)置于表單的token,session中沒有token都無濟(jì)于事。145.Session,Cookie,JWT的理解為什么要使用會(huì)話管理眾所周知,HTTP協(xié)議是一個(gè)無狀態(tài)的協(xié)議,也就是說每個(gè)請(qǐng)求都是一個(gè)獨(dú)立的請(qǐng)求,請(qǐng)求與請(qǐng)求之間并無關(guān)系。但在實(shí)際的應(yīng)用場(chǎng)景,這種方式并不能滿足

8、我們的需求。舉個(gè)大家都喜歡用的例子,把商品加入購(gòu)物車,單獨(dú)考慮這個(gè)請(qǐng)求,服務(wù)端并不知道這個(gè)商品是誰(shuí)的,應(yīng)該加入誰(shuí)的購(gòu)物車?因此這個(gè)請(qǐng)求的上下文環(huán)境實(shí)際上應(yīng)該包含用戶的相關(guān)信息,在每次用戶發(fā)出請(qǐng)求時(shí)把這一小部分額外信息,也做為請(qǐng)求的一部分,這樣服務(wù)端就可以根據(jù)上下文中的信息,針對(duì)具體的用戶進(jìn)行操作。所以這幾種技術(shù)的出現(xiàn)都是對(duì)HTTP協(xié)議的一個(gè)補(bǔ)充,使得我們可以用HTTP協(xié)議+狀態(tài)管理構(gòu)建一個(gè)的面向用戶的WEB應(yīng)用。Session 和Cookie的區(qū)別這里我想先談?wù)剆ession與cookies,因?yàn)檫@兩個(gè)技術(shù)是做為開發(fā)最為常見的。那么session與cookies的區(qū)別是什么?個(gè)人認(rèn)為sessi

9、on與cookies最核心區(qū)別在于額外信息由誰(shuí)來維護(hù)。利用cookies來實(shí)現(xiàn)會(huì)話管理時(shí),用戶的相關(guān)信息或者其他我們想要保持在每個(gè)請(qǐng)求中的信息,都是放在cookies中,而cookies是由客戶端來保存,每當(dāng)客戶端發(fā)出新請(qǐng)求時(shí),就會(huì)稍帶上cookies,服務(wù)端會(huì)根據(jù)其中的信息進(jìn)行操作。 當(dāng)利用session來進(jìn)行會(huì)話管理時(shí),客戶端實(shí)際上只存了一個(gè)由服務(wù)端發(fā)送的session_id,而由這個(gè)session_id,可以在服務(wù)端還原出所需要的所有狀態(tài)信息,從這里可以看出這部分信息是由服務(wù)端來維護(hù)的。除此以外,session與cookies都有一些自己的缺點(diǎn): cookies的安全性不好,攻擊者可以通

10、過獲取本地cookies進(jìn)行欺騙或者利用cookies進(jìn)行CSRF攻擊。使用cookies時(shí),在多個(gè)域名下,會(huì)存在跨域問題。 session 在一定的時(shí)間里,需要存放在服務(wù)端,因此當(dāng)擁有大量用戶時(shí),也會(huì)大幅度降低服務(wù)端的性能,當(dāng)有多臺(tái)機(jī)器時(shí),如何共享session也會(huì)是一個(gè)問題.(redis集群)也就是說,用戶第一個(gè)訪問的時(shí)候是服務(wù)器A,而第二個(gè)請(qǐng)求被轉(zhuǎn)發(fā)給了服務(wù)器B,那服務(wù)器B如何得知其狀態(tài)。實(shí)際上,session與cookies是有聯(lián)系的,比如我們可以把session_id存放在cookies中的。JWT是如何工作的首先用戶發(fā)出登錄請(qǐng)求,服務(wù)端根據(jù)用戶的登錄請(qǐng)求進(jìn)行匹配,如果匹配成功,將相

11、關(guān)的信息放入payload中,利用算法,加上服務(wù)端的密鑰生成token,這里需要注意的是secret_key很重要,如果這個(gè)泄露的話,客戶端就可以隨機(jī)篡改發(fā)送的額外信息,它是信息完整性的保證。生成token后服務(wù)端將其返回給客戶端,客戶端可以在下次請(qǐng)求時(shí),將token一起交給服務(wù)端,一般是說我們可以將其放在Authorization首部中,這樣也就可以避免跨域問題。146.簡(jiǎn)述Django請(qǐng)求生命周期一般是用戶通過瀏覽器向我們的服務(wù)器發(fā)起一個(gè)請(qǐng)求(request),這個(gè)請(qǐng)求會(huì)去訪問視圖函數(shù),如果不涉及到數(shù)據(jù)調(diào)用,那么這個(gè)時(shí)候視圖函數(shù)返回一個(gè)模板也就是一個(gè)網(wǎng)頁(yè)給用戶) 視圖函數(shù)調(diào)用模型毛模型去數(shù)

12、據(jù)庫(kù)查找數(shù)據(jù),然后逐級(jí)返回,視圖函數(shù)把返回的數(shù)據(jù)填充到模板中空格中,最后返回網(wǎng)頁(yè)給用戶。1.wsgi ,請(qǐng)求封裝后交給web框架(Flask,Django)2.中間件,對(duì)請(qǐng)求進(jìn)行校驗(yàn)或在請(qǐng)求對(duì)象中添加其他相關(guān)數(shù)據(jù),例如:csrf,request.session3.路由匹配 根據(jù)瀏覽器發(fā)送的不同url去匹配不同的視圖函數(shù)4.視圖函數(shù),在視圖函數(shù)中進(jìn)行業(yè)務(wù)邏輯的處理,可能涉及到:orm,templates 5.中間件,對(duì)響應(yīng)的數(shù)據(jù)進(jìn)行處理6.wsgi,將響應(yīng)的內(nèi)容發(fā)送給瀏覽器147.用的restframework完成api發(fā)送時(shí)間時(shí)區(qū)當(dāng)前的問題是用django的rest framework模塊做一

13、個(gè)get請(qǐng)求的發(fā)送時(shí)間以及時(shí)區(qū)信息的apiclass getCurrenttime(APIView): def get(self,request): local_time = time.localtime() time_zone =settings.TIME_ZONE temp = localtime:local_time,timezone:time_zone return Response(temp)148.nginx,tomcat,apach到都是什么?Nginx(engine x)是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是 一個(gè)IMAP/POP3/SMTP服務(wù)器,工作在OSI七層,負(fù)載

14、的實(shí)現(xiàn)方式:輪詢,IP_HASH,fair,session_sticky. Apache HTTP Server是一個(gè)模塊化的服務(wù)器,源于NCSAhttpd服務(wù)器 Tomcat 服務(wù)器是一個(gè)免費(fèi)的開放源代碼的Web應(yīng)用服務(wù)器,屬于輕量級(jí)應(yīng)用服務(wù)器,是開發(fā)和調(diào)試JSP程序的首選。149.請(qǐng)給出你熟悉關(guān)系數(shù)據(jù)庫(kù)范式有哪些,有什么作用?在進(jìn)行數(shù)據(jù)庫(kù)的設(shè)計(jì)時(shí),所遵循的一些規(guī)范,只要按照設(shè)計(jì)規(guī)范進(jìn)行設(shè)計(jì),就能設(shè)計(jì)出沒有數(shù)據(jù)冗余和數(shù)據(jù)維護(hù)異常的數(shù)據(jù)庫(kù)結(jié)構(gòu)。數(shù)據(jù)庫(kù)的設(shè)計(jì)的規(guī)范有很多,通常來說我們?cè)谠O(shè)是數(shù)據(jù)庫(kù)時(shí)只要達(dá)到其中一些規(guī)范就可以了,這些規(guī)范又稱之為數(shù)據(jù)庫(kù)的三范式,一共有三條,也存在著其他范式,我們只要

15、做到滿足前三個(gè)范式的要求,就能設(shè)陳出符合我們的數(shù)據(jù)庫(kù)了,我們也不能全部來按照范式的要求來做,還要考慮實(shí)際的業(yè)務(wù)使用情況,所以有時(shí)候也需要做一些違反范式的要求。 1.數(shù)據(jù)庫(kù)設(shè)計(jì)的第一范式(最基本),基本上所有數(shù)據(jù)庫(kù)的范式都是符合第一范式的,符合第一范式的表具有以下幾個(gè)特點(diǎn):數(shù)據(jù)庫(kù)表中的所有字段都只具有單一屬性,單一屬性的列是由基本的數(shù)據(jù)類型(整型,浮點(diǎn)型,字符型等)所構(gòu)成的設(shè)計(jì)出來的表都是簡(jiǎn)單的二比表2.數(shù)據(jù)庫(kù)設(shè)計(jì)的第二范式(是在第一范式的基礎(chǔ)上設(shè)計(jì)的),要求一個(gè)表中只具有一個(gè)業(yè)務(wù)主鍵,也就是說符合第二范式的表中不能存在非主鍵列對(duì)只對(duì)部分主鍵的依賴關(guān)系3.數(shù)據(jù)庫(kù)設(shè)計(jì)的第三范式,指每一個(gè)非主屬性既

16、不部分依賴與也不傳遞依賴于業(yè)務(wù)主鍵,也就是第二范式的基礎(chǔ)上消除了非主屬性對(duì)主鍵的傳遞依賴150.簡(jiǎn)述QQ登陸過程qq登錄,在我們的項(xiàng)目中分為了三個(gè)接口,第一個(gè)接口是請(qǐng)求qq服務(wù)器返回一個(gè)qq登錄的界面;第二個(gè)接口是通過掃碼或賬號(hào)登陸進(jìn)行驗(yàn)證,qq服務(wù)器返回給瀏覽器一個(gè)code和state,利用這個(gè)code通過本地服務(wù)器去向qq服務(wù)器獲取access_token覆返回給本地服務(wù)器,憑借access_token再向qq服務(wù)器獲取用戶的openid(openid用戶的唯一標(biāo)識(shí))第三個(gè)接口是判斷用戶是否是第一次qq登錄,如果不是的話直接登錄返回的jwt-token給用戶,對(duì)沒有綁定過本網(wǎng)站的用戶,對(duì)o

17、penid進(jìn)行加密生成token進(jìn)行綁定151.post 和 get的區(qū)別?1.GET是從服務(wù)器上獲取數(shù)據(jù),POST是向服務(wù)器傳送數(shù)據(jù)2.在客戶端,GET方式在通過URL提交數(shù)據(jù),數(shù)據(jù)在URL中可以看到,POST方式,數(shù)據(jù)放置在HTMLHEADER內(nèi)提交3.對(duì)于GET方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于POST方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)152.項(xiàng)目中日志的作用一、日志相關(guān)概念1.日志是一種可以追蹤某些軟件運(yùn)行時(shí)所發(fā)生事件的方法2.軟件開發(fā)人員可以向他們的代碼中調(diào)用日志記錄相關(guān)的方法來表明發(fā)生了某些事情3.一個(gè)事件可以用一個(gè)包含可選

18、變量數(shù)據(jù)的消息來描述4.此外,事件也有重要性的概念,這個(gè)重要性也可以被成為嚴(yán)重性級(jí)別(level)二、日志的作用1.通過log的分析,可以方便用戶了解系統(tǒng)或軟件、應(yīng)用的運(yùn)行情況;2.如果你的應(yīng)用log足夠豐富,可以分析以往用戶的操作行為、類型喜好,地域分布或其他更多信息;3.如果一個(gè)應(yīng)用的log同時(shí)也分了多個(gè)級(jí)別,那么可以很輕易地分析得到該應(yīng)用的健康狀況,及時(shí)發(fā)現(xiàn)問題并快速定位、解決問題,補(bǔ)救損失。4.簡(jiǎn)單來講就是我們通過記錄和分析日志可以了解一個(gè)系統(tǒng)或軟件程序運(yùn)行情況是否正常,也可以在應(yīng)用程序出現(xiàn)故障時(shí)快速定位問題。不僅在開發(fā)中,在運(yùn)維中日志也很重要,日志的作用也可以簡(jiǎn)單。總結(jié)為以下幾點(diǎn):1

19、.程序調(diào)試2.了解軟件程序運(yùn)行情況,是否正常3,軟件程序運(yùn)行故障分析與問題定位4,如果應(yīng)用的日志信息足夠詳細(xì)和豐富,還可以用來做用戶行為分析153.django中間件的使用?Django在中間件中預(yù)置了六個(gè)方法,這六個(gè)方法的區(qū)別在于不同的階段執(zhí)行,對(duì)輸入或輸出進(jìn)行干預(yù),方法如下:1.初始化:無需任何參數(shù),服務(wù)器響應(yīng)第一個(gè)請(qǐng)求的時(shí)候調(diào)用一次,用于確定是否啟用當(dāng)前中間件def _init_(): pass2.處理請(qǐng)求前:在每個(gè)請(qǐng)求上調(diào)用,返回None或HttpResponse對(duì)象。def process_request(request): pass3.處理視圖前:在每個(gè)請(qǐng)求上調(diào)用,返回None或H

20、ttpResponse對(duì)象。def process_view(request,view_func,view_args,view_kwargs): pass4.處理模板響應(yīng)前:在每個(gè)請(qǐng)求上調(diào)用,返回實(shí)現(xiàn)了render方法的響應(yīng)對(duì)象。def process_template_response(request,response): pass5.處理響應(yīng)后:所有響應(yīng)返回瀏覽器之前被調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回HttpResponse對(duì)象。def process_response(request,response): pass6.異常處理:當(dāng)視圖拋出異常時(shí)調(diào)用,在每個(gè)請(qǐng)求上調(diào)用,返回一個(gè)HttpResp

21、onse對(duì)象。def process_exception(request,exception): pass154.談一下你對(duì)uWSGI和nginx的理解?1.uWSGI是一個(gè)Web服務(wù)器,它實(shí)現(xiàn)了WSGI協(xié)議、uwsgi、http等協(xié)議。Nginx中HttpUwsgiModule的作用是與uWSGI服務(wù)器進(jìn)行交換。WSGI是一種Web服務(wù)器網(wǎng)關(guān)接口。它是一個(gè)Web服務(wù)器(如nginx,uWSGI等服務(wù)器)與web應(yīng)用(如用Flask框架寫的程序)通信的一種規(guī)范。要注意WSGI/uwsgi/uWSGI這三個(gè)概念的區(qū)分。WSGI是一種通信協(xié)議。uwsgi是一種線路協(xié)議而不是通信協(xié)議,在此常用于在u

22、WSGI服務(wù)器與其他網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù)通信。uWSGI是實(shí)現(xiàn)了uwsgi和WSGI兩種協(xié)議的Web服務(wù)器。nginx 是一個(gè)開源的高性能的HTTP服務(wù)器和反向代理:1.作為web服務(wù)器,它處理靜態(tài)文件和索引文件效果非常高2.它的設(shè)計(jì)非常注重效率,最大支持5萬個(gè)并發(fā)連接,但只占用很少的內(nèi)存空間3.穩(wěn)定性高,配置簡(jiǎn)潔。4.強(qiáng)大的反向代理和負(fù)載均衡功能,平衡集群中各個(gè)服務(wù)器的負(fù)載壓力應(yīng)用155.Python中三大框架各自的應(yīng)用場(chǎng)景?django:主要是用來搞快速開發(fā)的,他的亮點(diǎn)就是快速開發(fā),節(jié)約成本,,如果要實(shí)現(xiàn)高并發(fā)的話,就要對(duì)django進(jìn)行二次開發(fā),比如把整個(gè)笨重的框架給拆掉自己寫socket實(shí)

23、現(xiàn)http的通信,底層用純c,c+寫提升效率,ORM框架給干掉,自己編寫封裝與數(shù)據(jù)庫(kù)交互的框架,ORM雖然面向?qū)ο髞聿僮鲾?shù)據(jù)庫(kù),但是它的效率很低,使用外鍵來聯(lián)系表與表之間的查詢; flask: 輕量級(jí),主要是用來寫接口的一個(gè)框架,實(shí)現(xiàn)前后端分離,提考開發(fā)效率,F(xiàn)lask本身相當(dāng)于一個(gè)內(nèi)核,其他幾乎所有的功能都要用到擴(kuò)展(郵件擴(kuò)展Flask-Mail,用戶認(rèn)證Flask-Login),都需要用第三方的擴(kuò)展來實(shí)現(xiàn)。比如可以用Flask-extension加入ORM、文件上傳、身份驗(yàn)證等。Flask沒有默認(rèn)使用的數(shù)據(jù)庫(kù),你可以選擇MySQL,也可以用NoSQL。其WSGI工具箱用Werkzeug(路

24、由模塊),模板引擎則使用Jinja2,這兩個(gè)也是Flask框架的核心。Tornado: Tornado是一種Web服務(wù)器軟件的開源版本。Tornado和現(xiàn)在的主流Web服務(wù)器框架(包括大多數(shù)Python的框架)有著明顯的區(qū)別:它是非阻塞式服務(wù)器,而且速度相當(dāng)快。得利于其非阻塞的方式和對(duì)epoll的運(yùn)用,Tornado每秒可以處理數(shù)以千計(jì)的連接因此Tornado是實(shí)時(shí)Web服務(wù)的一個(gè)理想框架156.Django中哪里用到了線程?哪里用到了協(xié)程?哪里用到了進(jìn)程?1.Django中耗時(shí)的任務(wù)用一個(gè)進(jìn)程或者線程來執(zhí)行,比如發(fā)郵件,使用celery.2.部署django項(xiàng)目是時(shí)候,配置文件中設(shè)置了進(jìn)程和

25、協(xié)程的相關(guān)配置。157.有用過Django REST framework嗎?Django REST framework是一個(gè)強(qiáng)大而靈活的Web API工具。使用RESTframework的理由有:Web browsable API對(duì)開發(fā)者有極大的好處包括OAuth1a和OAuth2的認(rèn)證策略支持ORM和非ORM數(shù)據(jù)資源的序列化全程自定義開發(fā)-如果不想使用更加強(qiáng)大的功能,可僅僅使用常規(guī)的function-based views額外的文檔和強(qiáng)大的社區(qū)支持158.對(duì)cookies與session的了解?他們能單獨(dú)用嗎?Session采用的是在服務(wù)器端保持狀態(tài)的方案,而Cookie采用的是在客戶端保持

26、狀態(tài)的方案。但是禁用Cookie就不能得到Session。因?yàn)镾ession是用Session ID來確定當(dāng)前對(duì)話所對(duì)應(yīng)的服務(wù)器Session,而Session ID是通過Cookie來傳遞的,禁用Cookie相當(dāng)于SessionID,也就得不到Session。爬蟲159.試列出至少三種目前流行的大型數(shù)據(jù)庫(kù)160.列舉您使用過的Python網(wǎng)絡(luò)爬蟲所用到的網(wǎng)絡(luò)數(shù)據(jù)包?requests, urllib,urllib2, httplib2161.爬取數(shù)據(jù)后使用哪個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)的,為什么?162.你用過的爬蟲框架或者模塊有哪些??jī)?yōu)缺點(diǎn)?Python自帶:urllib,urllib2第三方:requests框架: Scrapyurllib 和urllib2模塊都做與請(qǐng)求URL相關(guān)的操作,但他們提供不同的功能。urllib2: urllib2.urlopen可以接受一個(gè)Request對(duì)象或者url,(在接受Request對(duì)象時(shí),并以此可以來設(shè)置一個(gè)URL的headers),urllib.urlopen只接收一個(gè)url。urllib 有urlencode,urllib2沒有,因此總是urllib, urllib2常會(huì)一起使用的原因scrapy是封裝起來的框架,他包含了下載器,解析器,日志及異常處理,基于多線程,twisted的方式處理,對(duì)于固定單個(gè)網(wǎng)站的爬取開發(fā),有優(yōu)勢(shì),但是對(duì)于多網(wǎng)站

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論