Ci sono poche impostazioni di concorrenza in Scrapy, come CONCURRENT_REQUESTS. Significa, che Scrapy crawler è multi-threaded? Quindi, se corro scrapy crawl my_crawler
letteralmente sparerà più richieste simultanee in parallelo? Mi sto chiedendo perché, ho letto che Scrapy è single-threaded.è Scrapy single-threaded o multi-threaded?
risposta
Scrapy è a thread singolo, tranne la shell interattiva e alcuni test, vedere source.
'costruito in cima Twisted, che è a thread singolo troppo, e fa uso delle proprie capacità concorrenza asincrone, come twisted.internet.interfaces.IReactorThreads.callFromThread
, vedi source.
Qual è il punto di queste impostazioni allora? –
Asincronismo significa che possono esserci più richieste simultanee. Puoi inviare una richiesta A, e prima che sia restituita fai un'altra richiesta B, quindi hai due richieste parallele. –
Stavo cercando di scrivere i risultati del mio scraping in un singolo file di testo. So che capisco che è una brutta cosa ... o no? – deostroll
Scrapy fa la maggior parte del lavoro in modo sincrono. Tuttavia, la gestione delle richieste viene eseguita in modo asincrono.
Suggerisco questa pagina se non l'hai già visto.
http://doc.scrapy.org/en/latest/topics/architecture.html
edit: Mi rendo conto ora la questione era di circa threading e non necessariamente se è asincrona oppure no. Quel collegamento sarebbe comunque una buona lettura :)
riguardo alla tua domanda su CONCURRENT_REQUESTS. Questa impostazione modifica il numero di richieste che il doppino si differenzierà in una sola volta. Una volta che molte richieste sono state avviate, aspetterà che alcune di esse finiscano prima di iniziare di più.
Scrapy è un framework a thread singolo, non è possibile utilizzare più thread all'interno di uno spider allo stesso tempo. Tuttavia, possiamo creare più spider e piplines contemporaneamente per rendere il processo simultaneo. Scrapy non supporta multi-threading
perché è costruito su Twisted
, che è un Asynchronous http protocol framework
.
- 1. Come è multithreaded ASP.NET?
- 2. perché non è numpy.mean multithreaded?
- 3. Multithreaded JDBC
- 4. Multithreaded A * Ricerca in Java o Lisp o C#
- 5. Aiuto progettazione programma multithreaded
- 6. Scrapy dati Python con Scrapy
- 7. Scrapy: come disabilitare o modificare il registro?
- 8. Scrapy Shell e Scrapy Splash
- 9. Singleton pigro in un'applicazione C# multithreaded
- 10. Python & Scrapy: Problema con la versione Scrapy
- 11. Scrapy HtmlXPathSelector
- 12. I parametri di riferimento .NET sono thread-safe o vulnerabili a un accesso multithreaded non sicuro?
- 13. Scrapy: limita il numero di richieste o richieste byte
- 14. Scrapy: memorizzazione dei dati
- 15. start_urls dinamico in scrapy
- 16. Scrapy Vs Nutch
- 17. Dal classico server multithreaded a java.nio asincrono/non bloccante
- 18. Scrapy: Ottimizzazione Spider
- 19. Scrapy: pausa non bloccante
- 20. Ripristino pausa raschiare, Scrapy
- 21. Scrapy non trova ragno
- 22. Impaginazione utilizzando Scrapy
- 23. Richiesta ritardo scrapy
- 24. Scrapy testo codifica
- 25. Esportatore personalizzato di scrapy
- 26. Scrapy exceptions tutorial
- 27. Scrapy with TOR (Windows)
- 28. Errore durante l'installazione Scrapy
- 29. Scrapy + Splash + ScrapyJS
- 30. uWSGI e abbreviare con grazia un'applicazione multithreaded Flask
Scrapy utilizza Twisted e utilizza un modello di programmazione asincrona a thread singolo. Puoi leggere a riguardo [in] (http://krondo.com/wp-content/uploads/2009/08/twisted-intro.html) [vari] (http://krondo.com/wp-content/uploads /2009/08/twisted-intro.html) [places] (http://jessenoller.com/blog/2009/02/11/twisted-hello-asynchronous-programming) –