Documentation ¶
Index ¶
- Constants
- Variables
- func AddCron(function *C.PyObject, period int, min int, hour int, day int, mon int, ...)
- func AddWsgiRequestReader(requestId int64, reader RequestReader)
- func AllWorkersAreStuck() bool
- func CachePage(cw *CacheWriter, req *http.Request)
- func CallApplication(requestId int64, req *http.Request) *C.PyObject
- func CanAccelResponse(job *RequestJob) bool
- func CreateStartResponseFunction(requestId int64) *C.PyObject
- func CreateWsgiEnvironment(requestId int64, req *http.Request) *C.PyObject
- func CronRoutine()
- func CronTick()
- func DeinitPythonInterpreter()
- func DeriveCacheKey(req *http.Request) string
- func DurationUntilNextCron() time.Duration
- func ExitProcessInvalid(msg string)
- func ExtractCookies(cookies string, filter string) string
- func GetRateLimitKey(ip net.IP) string
- func GetRemoteAddr(req *http.Request) string
- func GetThreadCpuTime() uint64
- func Iif(condition bool, ifTrue int, ifFalse int) int
- func InitPythonInterpreter(module_name string)
- func LogRequest(req *http.Request, statusCode int, finishTime time.Time, elapsed int, ...)
- func LogRequestJob(job *RequestJob)
- func NewMonitor()
- func ParkJob(job *RequestJob)
- func ParseFlags()
- func PrintMemoryStats()
- func PrintPythonTraceback()
- func PrintRequestStats()
- func PruneCache()
- func PyDictSet(dict *C.PyObject, key string, value string)
- func PyDictSetObject(dict *C.PyObject, key string, obj *C.PyObject)
- func PyEval(code string) (*C.PyObject, func())
- func ReadWsgiResponseToWriter(response *C.PyObject, w io.Writer) error
- func RemoveWsgiRequestReader(requestId int64)
- func ResolveAccel(job *RequestJob) bool
- func RunProcess(wg *sync.WaitGroup, process int)
- func RunProcessManager()
- func Send504(job *RequestJob)
- func Serve(w http.ResponseWriter, req *http.Request)
- func StartWorkers()
- func StartupWsgo(initMux func(*http.ServeMux))
- func TryStatic(w http.ResponseWriter, req *http.Request) bool
- type BackgroundJob
- type BufferingReader
- type CacheWriter
- type Cron
- type FancyScheduler
- func (sched *FancyScheduler) CalculateJobPriority(job *RequestJob) int
- func (sched *FancyScheduler) FindJobInQueue(job *RequestJob) int
- func (sched *FancyScheduler) GetAgedRequestCount(remoteAddr string) RequestCount
- func (sched *FancyScheduler) GetHighestPriorityJob() (*RequestJob, int)
- func (sched *FancyScheduler) GetLowestPriorityJob() (*RequestJob, int)
- func (sched *FancyScheduler) GrabJob() *RequestJob
- func (sched *FancyScheduler) HandleJob(job *RequestJob, timeout time.Duration) error
- func (sched *FancyScheduler) JobFinished(job *RequestJob)
- type PageCacheEntry
- type ParkedJob
- type ParkedJobNotification
- type PythonWorker
- func (worker *PythonWorker) BackgroundWorkerRun()
- func (worker *PythonWorker) HandleBackgroundJob(job *BackgroundJob)
- func (worker *PythonWorker) HandleJob(job *RequestJob)
- func (worker *PythonWorker) Run()
- func (worker *PythonWorker) RunPythonTask(task func(), timeout int) (time.Time, int64, int64)
- type RequestCount
- type RequestJob
- type RequestReader
- type ResponseStart
- type RollingAverage
- type Scheduler
- type SimpleScheduler
- type TryCacheResponse
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 AddWsgiRequestReader ¶
func AddWsgiRequestReader(requestId int64, reader RequestReader)
func AllWorkersAreStuck ¶
func AllWorkersAreStuck() bool
func CachePage ¶
func CachePage(cw *CacheWriter, req *http.Request)
func CallApplication ¶
Calls the WSGI application function. Returns a new reference to the output.
func CanAccelResponse ¶
func CanAccelResponse(job *RequestJob) bool
func CreateWsgiEnvironment ¶
func CronRoutine ¶
func CronRoutine()
func DeinitPythonInterpreter ¶ added in v0.0.15
func DeinitPythonInterpreter()
func DeriveCacheKey ¶ added in v0.0.8
func DurationUntilNextCron ¶
func ExitProcessInvalid ¶
func ExitProcessInvalid(msg string)
Allow a process to exit without being restarted by the process manager.
func ExtractCookies ¶
func GetRateLimitKey ¶ added in v0.0.15
func GetRemoteAddr ¶ added in v0.0.8
func GetThreadCpuTime ¶ added in v0.0.8
func GetThreadCpuTime() uint64
func InitPythonInterpreter ¶
func InitPythonInterpreter(module_name string)
func LogRequest ¶
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 RemoveWsgiRequestReader ¶
func RemoveWsgiRequestReader(requestId int64)
func ResolveAccel ¶
func ResolveAccel(job *RequestJob) bool
func RunProcess ¶
func RunProcessManager ¶
func RunProcessManager()
func Send504 ¶ added in v0.0.14
func Send504(job *RequestJob)
func StartWorkers ¶
func StartWorkers()
func StartupWsgo ¶
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) 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) WriteHeader ¶
func (cw *CacheWriter) WriteHeader(statusCode int)
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
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 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
func TryCache ¶
func TryCache(w http.ResponseWriter, req *http.Request) TryCacheResponse
Source Files ¶
- accel.go
- buffering_reader.go
- cache_writer.go
- config.go
- cron.go
- handler.go
- logging.go
- monitor.go
- page_cache.go
- park.go
- process_manager.go
- python_interface.go
- python_worker.go
- rolling_average.go
- scheduler.go
- scheduler_fancy.go
- scheduler_simple.go
- static.go
- wsgi_environ.go
- wsgi_request_reader.go
- wsgi_response_starter.go
Click to show internal directories.
Click to hide internal directories.