Gunicorn的前叉模型内部行为

时间:2017-07-26 17:41:41

标签: process synchronization fork wsgi gunicorn

Gunicorn陈述如下:

  

Gunicorn基于前叉工人模型。这意味着有一个中央主进程来管理一组工作进程。主人永远不会了解个人客户。所有请求和响应都由工作进程完全处理。

http://docs.gunicorn.org/en/stable/design.html

然而,我无法理解这个定义的范围。 我很乐意看到图表,图表或任何可视化这个概念/模型的东西。

让我们假设我们有一个由单个文件组成的文件夹:wsgi.py

class CoreDataHelper {
class func getFetchRequestforModelClass(_ className : NSManagedObject.Type) -> NSFetchRequest<NSFetchRequestResult> {

    let stringClassName = String(stringInterpolationSegment: className)

    let entityDescription = NSEntityDescription.entity(forEntityName: stringClassName, in: ManagedObjectContext)

    let request = NSFetchRequest<NSFetchRequestResult>()
    request.entity = entityDescription

    return request
}

class func getAllTask() -> [Task]?{
    let fetchRequest = CoreDataHelper.getFetchRequestforModelClass(Task.self)
    fetchRequest.sortDescriptors = [NSSortDescriptor(key: "task_id", ascending: true)]
    var fetchedEntities:[Task]?
    do
    {
        fetchedEntities = try ManagedObjectContext.fetch(fetchRequest) as? [Task]
    }catch{
    }
    return fetchedEntities
}}

使用以下参数运行gunicorn:

    def app(environ, start_response):
        data = b"Hello, World!\n"
        start_response("200 OK", [
            ("Content-Type", "text/plain"),
            ("Content-Length", str(len(data)))
        ])

因此:

如果两个worker是活动的,因此每个都接受一个连接,那么每个进程是否都有自己的wsgi.py实例?

OR

如果他们共享一个公共数据库或I / O操作,它是否同步?

P.S:我很乐意看到有关这个主题的文章的参考文献!

0 个答案:

没有答案