Skip to content

TRIGONIM/lua-requests-async

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

АсинхронныС HTTP запросы Π½Π° Lua

  • πŸ”¬ Минимализм
  • πŸš€ АсинхронноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ сотСн ΠΈΠ»ΠΈ тысяч http запросов Π² сСкунду
  • πŸ”’ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° https
  • πŸ™…β€β™‚οΈ Nginx Π½Π΅ трСбуСтся
  • 🐍 Удобная ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ° http_requests.lua, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° питоновской requests
  • πŸ“¦ Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ multipart/form-data запросов
  • πŸ€– ИдСально для парсСров, Ρ‚Π΅Π»Π΅Π³Ρ€Π°ΠΌ Π±ΠΎΡ‚ΠΎΠ², ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… API Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выполнСния синхронных запросов
  • Π›Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π² Garry's Mod

Установка

luarocks install lua-requests-async

ИспользованиС

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ здСсь

ИспользованиС Π±Π°Π·ΠΎΠ²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

-- http_async.lua
local http = require("http_async")
http.request({
	url        = "https://httpbin.org/post?foo=bar",
	method     = "POST",
	body       = "body payload",
	success    = function(code, body, headers)
		assert(code == 200)
		assert(headers["connection"] == "close")
		print(body)
	end,
})

require("copas").loop()

ИспользованиС ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ-Ρ…Π΅Π»ΠΏΠ΅Ρ€Π°

-- http_requests.lua
local requests = require("http_requests")

requests.get({"https://httpbin.org/get", {key = "val"}}, function(res)
	print(res.content)
end)

require("copas").loop()

Π’ любом случаС Π² вашСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Π³Π»Π°Π²Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π² ΠΊΠΎΠ½Ρ†Π΅, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… конструкций:

-- Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ всС накопившиСся http запросы ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ скрипта
require("copas").loop()

-- ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ само ΠΏΠΎ сСбС
while true do require("copas").step() end

ДокумСнтация

Пока Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π΅Ρ‚, Π½ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Π² Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ объяснСния нСпонятных ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΈ Π½Π°ΠΉΠ΄ΠΈΡ‚Π΅ Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ

TODO

  • Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π° readme список Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ git.io/ggram
  • Π’ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ multipart "ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ" Π±Π΅Π· нСобходимости Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ
  • Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ возмоТности ΠΈΠ· питновского requests
  • (?) Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π² ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°Ρ…, Ρ‚Π°ΠΊ ΠΈ Π±Π΅Π· Π½ΠΈΡ…. Π‘ ΠΊΠΎΠ»Π»Π±Π΅ΠΊΠ°ΠΌΠΈ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ
  • (?) Если Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€Ρ…Π½Π΅Π΅, Ρ‚ΠΎ Π±Π΅Π· copas, вСроятно, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ (Π½ΠΎ Π΅ΡΡ‚ΡŒ Π»ΠΈ смысл)

About

πŸ•ΈοΈ Easy HTTP(s) requests for pure Lua. You can even make non-blocking (async) HTTP(s) requests

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages