AWS Lambda에서 Websocket을 사용할 때 가끔 Websocket URL 시간 초과 오류가 발생합니다. 이 문제로 인해 Websocket에 대한 연결을 설정하거나 유지할 수 없게 되어 애플리케이션의 정상적인 작동에 영향을 미칠 수 있습니다. 이 기사에서는 이 문제의 원인과 해결책을 소개하고 개발자가 Websocket URL 시간 초과 오류를 해결하고 애플리케이션의 안정성과 신뢰성을 보장하도록 돕습니다. 초보자와 숙련된 개발자 모두 이 기사를 통해 AWS Lambda 및 Websocket에 대한 귀중한 정보를 얻을 수 있습니다.
저는 Go 언어를 사용하여 AWS Lambda를 개발하고 있습니다. chromedp 및 docker 이미지를 사용하여 go lang 코드를 배포하고 있는데 websocket url 시간 초과 오류가 발생합니다. 내 람다는 3008MB RAM 메모리, 512MB 스토리지, 15분 제한 시간으로 설정되어 있습니다. 문제를 식별하고 해결 방법을 알 수 있나요? 파일이에요 main.go
和 dockerfile
파일 main.go
(chromedp 부분)
파일 dockerfile
func getpage(url string, linenum string, stationnm string) { // settings for crawling ctx, cancle := chromedp.newcontext( context.background(), chromedp.withlogf(log.printf), ) defer cancle() opts := []chromedp.execallocatoroption{ chromedp.disablegpu, chromedp.nosandbox, chromedp.headless, chromedp.flag("no-zygote", true), chromedp.flag("single-process", true), chromedp.flag("homedir", "/tmp"), chromedp.flag("data-path", "/tmp/data-path"), chromedp.flag("disk-cache-dir", "/tmp/cache-dir"), chromedp.flag("remote-debugging-port", "9222"), chromedp.flag("remote-debugging-address", "0.0.0.0"), chromedp.flag("disable-dev-shm-usage", true), } allocctx, cancel := chromedp.newexecallocator(ctx, opts...) defer cancel() ctx, cancel = chromedp.newcontext(allocctx, chromedp.withlogf(log.printf)) defer cancel() var htmlcontent string ch := chromedp.waitnewtarget(ctx, func(i *target.info) bool { return strings.contains(i.url, "/timetable/web/") }) }
에서는 chromedp/headless-shell을 사용하는 것이 좋습니다. 크기가 작고 aws 람다에 더 적합하기 때문입니다.
방금 chromedp/headless-shell
를 사용하여 간단한 데모를 테스트했는데 제대로 작동했습니다.
dockerfile:
으아악main.go:
으아악이 예는 https://github.com/andiedie/chromedp-aws-lambda-example을 기반으로 합니다. 나열된 chromedp.execallocatoroption
항목은 이 저장소에서 직접 복사됩니다. 작동하지만 이것이 최선의 옵션 목록인지는 확실하지 않습니다. 어쩌면 필요에 맞게 조정해야 할 수도 있습니다.
위 내용은 AWS Lambda에서 Websocket URL 시간 초과 오류가 발생했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!