wsgo

package
v0.0.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 20, 2024 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MISS                  TryCacheResponse = 0
	HIT                                    = 1
	HIT_BUT_EXPIRING_SOON                  = 2
)
View Source
const (
	DISCONNECT int = 0
	RETRY          = 1
	HTTP_204       = 2
	HTTP_504       = 3
)

Variables

View Source
var EXITCODE_INVALID int = 27

Functions

func AddCron

func AddCron(function *C.PyObject, period int, min int, hour int, day int, mon int, wday int)

func AddWsgiRequestReader

func AddWsgiRequestReader(requestId int64, reader RequestReader)

func AllWorkersAreStuck

func AllWorkersAreStuck() bool

func CachePage

func CachePage(cw *CacheWriter, req *http.Request)

func CallApplication

func CallApplication(requestId int64, req *http.Request) *C.PyObject

Calls the WSGI application function. Returns a new reference to the output.

func CanAccelResponse

func CanAccelResponse(job *RequestJob) bool

func CreateStartResponseFunction

func CreateStartResponseFunction(requestId int64) *C.PyObject

func CreateWsgiEnvironment

func CreateWsgiEnvironment(requestId int64, req *http.Request) *C.PyObject

func CronRoutine

func CronRoutine()

func CronTick

func CronTick()

func DeinitPythonInterpreter added in v0.0.15

func DeinitPythonInterpreter()

func DeriveCacheKey added in v0.0.8

func DeriveCacheKey(req *http.Request) string

func DurationUntilNextCron

func DurationUntilNextCron() time.Duration

func ExitProcessInvalid

func ExitProcessInvalid(msg string)

Allow a process to exit without being restarted by the process manager.

func ExtractCookies

func ExtractCookies(cookies string, filter string) string

func GetRateLimitKey added in v0.0.15

func GetRateLimitKey(ip net.IP) string

func GetRemoteAddr added in v0.0.8

func GetRemoteAddr(req *http.Request) string

func GetThreadCpuTime added in v0.0.8

func GetThreadCpuTime() uint64

func Iif added in v0.0.5

func Iif(condition bool, ifTrue int, ifFalse int) int

func InitPythonInterpreter

func InitPythonInterpreter(module_name string)

func LogRequest

func LogRequest(req *http.Request, statusCode int, finishTime time.Time, elapsed int, cpuTime int, workerNumber int, priority int)

func LogRequestJob added in v0.0.14

func LogRequestJob(job *RequestJob)

func NewMonitor

func NewMonitor()

func ParkJob added in v0.0.12

func ParkJob(job *RequestJob)

func ParseFlags

func ParseFlags()

func PrintMemoryStats

func PrintMemoryStats()

func PrintPythonTraceback added in v0.0.16

func PrintPythonTraceback()

func PrintRequestStats added in v0.0.13

func PrintRequestStats()

func PruneCache

func PruneCache()

func PyDictSet

func PyDictSet(dict *C.PyObject, key string, value string)

func PyDictSetObject

func PyDictSetObject(dict *C.PyObject, key string, obj *C.PyObject)

func PyEval

func PyEval(code string) (*C.PyObject, func())

func ReadWsgiResponseToWriter

func ReadWsgiResponseToWriter(response *C.PyObject, w io.Writer) error

func RemoveWsgiRequestReader

func RemoveWsgiRequestReader(requestId int64)

func ResolveAccel

func ResolveAccel(job *RequestJob) bool

func RunProcess

func RunProcess(wg *sync.WaitGroup, process int)

func RunProcessManager

func RunProcessManager()

func Send504 added in v0.0.14

func Send504(job *RequestJob)

func Serve

func Serve(w http.ResponseWriter, req *http.Request)

func StartWorkers

func StartWorkers()

func StartupWsgo

func StartupWsgo(initMux func(*http.ServeMux))

func TryStatic

func TryStatic(w http.ResponseWriter, req *http.Request) bool

Types

type BackgroundJob

type BackgroundJob struct {
	// contains filtered or unexported fields
}

type BufferingReader

type BufferingReader struct {
	// contains filtered or unexported fields
}

func NewBufferingReader

func NewBufferingReader(r io.Reader, bufLen int) *BufferingReader

func (*BufferingReader) Read

func (b *BufferingReader) Read(p []byte) (int, error)

func (*BufferingReader) Readline added in v0.0.12

func (b *BufferingReader) Readline(p []byte) (n int, err error)

func (*BufferingReader) Rewind added in v0.0.12

func (b *BufferingReader) Rewind() error

type CacheWriter

type CacheWriter struct {
	// contains filtered or unexported fields
}

func NewCacheOnlyCacheWriter

func NewCacheOnlyCacheWriter() *CacheWriter

func NewCacheWriter

func NewCacheWriter(w http.ResponseWriter) *CacheWriter

func NewNonCachingCacheWriter

func NewNonCachingCacheWriter(w http.ResponseWriter) *CacheWriter

func (*CacheWriter) Flush

func (cw *CacheWriter) Flush() error

func (*CacheWriter) Header

func (cw *CacheWriter) Header() http.Header

func (*CacheWriter) Write

func (cw *CacheWriter) Write(b []byte) (int, error)

func (*CacheWriter) WriteHeader

func (cw *CacheWriter) WriteHeader(statusCode int)

type Cron

type Cron struct {
	// contains filtered or unexported fields
}

type FancyScheduler added in v0.0.11

type FancyScheduler struct {
	// contains filtered or unexported fields
}

func NewFancyScheduler added in v0.0.11

func NewFancyScheduler() *FancyScheduler

func (*FancyScheduler) CalculateJobPriority added in v0.0.11

func (sched *FancyScheduler) CalculateJobPriority(job *RequestJob) int

func (*FancyScheduler) FindJobInQueue added in v0.0.11

func (sched *FancyScheduler) FindJobInQueue(job *RequestJob) int

func (*FancyScheduler) GetAgedRequestCount added in v0.0.11

func (sched *FancyScheduler) GetAgedRequestCount(remoteAddr string) RequestCount

func (*FancyScheduler) GetHighestPriorityJob added in v0.0.11

func (sched *FancyScheduler) GetHighestPriorityJob() (*RequestJob, int)

func (*FancyScheduler) GetLowestPriorityJob added in v0.0.11

func (sched *FancyScheduler) GetLowestPriorityJob() (*RequestJob, int)

func (*FancyScheduler) GrabJob added in v0.0.11

func (sched *FancyScheduler) GrabJob() *RequestJob

func (*FancyScheduler) HandleJob added in v0.0.11

func (sched *FancyScheduler) HandleJob(job *RequestJob, timeout time.Duration) error

func (*FancyScheduler) JobFinished added in v0.0.11

func (sched *FancyScheduler) JobFinished(job *RequestJob)

type PageCacheEntry

type PageCacheEntry struct {
	// contains filtered or unexported fields
}

func (*PageCacheEntry) Size

func (entry *PageCacheEntry) Size() uint64

type ParkedJob added in v0.0.12

type ParkedJob struct {
	// contains filtered or unexported fields
}

type ParkedJobNotification added in v0.0.12

type ParkedJobNotification struct {
	// contains filtered or unexported fields
}

type PythonWorker

type PythonWorker struct {
	// contains filtered or unexported fields
}

func (*PythonWorker) BackgroundWorkerRun added in v0.0.8

func (worker *PythonWorker) BackgroundWorkerRun()

func (*PythonWorker) HandleBackgroundJob

func (worker *PythonWorker) HandleBackgroundJob(job *BackgroundJob)

func (*PythonWorker) HandleJob

func (worker *PythonWorker) HandleJob(job *RequestJob)

func (*PythonWorker) Run

func (worker *PythonWorker) Run()

func (*PythonWorker) RunPythonTask added in v0.0.8

func (worker *PythonWorker) RunPythonTask(task func(), timeout int) (time.Time, int64, int64)

type RequestCount added in v0.0.11

type RequestCount struct {
	// contains filtered or unexported fields
}

type RequestJob added in v0.0.11

type RequestJob struct {
	// contains filtered or unexported fields
}

type RequestReader added in v0.0.12

type RequestReader interface {
	Read([]byte) (n int, err error)
	Readline([]byte) (n int, err error)
	Rewind() error
}

type ResponseStart

type ResponseStart struct {
	// contains filtered or unexported fields
}

func GetWsgiResponseStart

func GetWsgiResponseStart(requestId int64) *ResponseStart

type RollingAverage

type RollingAverage struct {
	// contains filtered or unexported fields
}

func NewRollingAverage

func NewRollingAverage() RollingAverage

func (*RollingAverage) Add

func (r *RollingAverage) Add(sample int64)

func (*RollingAverage) GetFilteredMax

func (r *RollingAverage) GetFilteredMax() int64

type Scheduler added in v0.0.11

type Scheduler interface {
	// called from web handler threads, should it block or return + chan callback?
	HandleJob(job *RequestJob, timeout time.Duration) error

	// called from worker threads, blocks until a job is good to run
	GrabJob() *RequestJob

	// called from worker thread, indicates that a job is finished and should be released back to the web handler
	JobFinished(job *RequestJob)
}

type SimpleScheduler added in v0.0.11

type SimpleScheduler struct {
	// contains filtered or unexported fields
}

func NewSimpleScheduler added in v0.0.11

func NewSimpleScheduler() *SimpleScheduler

func (*SimpleScheduler) GrabJob added in v0.0.11

func (sched *SimpleScheduler) GrabJob() *RequestJob

func (*SimpleScheduler) HandleJob added in v0.0.11

func (sched *SimpleScheduler) HandleJob(job *RequestJob, timeout time.Duration) error

func (*SimpleScheduler) JobFinished added in v0.0.11

func (sched *SimpleScheduler) JobFinished(job *RequestJob)

type TryCacheResponse

type TryCacheResponse int

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL