Giter VIP home page Giter VIP logo

rust-actix-example's Introduction

Rust/Actix Example

Build Status

An Actix 2.0 REST server using the Rust language.

Motivation

Actix Web is a fast, powerful web framework for building web applications in Rust. This project aims to create ergonomic abstractions comparable to frameworks in other languages while attempting to maintain the performance benefits of Actix.

Features

  • Actix 2.x HTTP Server
  • Multi-Database Support (CockroachDB, Postgres, MySQL, Sqlite)
  • JWT Support
  • Async Caching Layer with a Simple API
  • Public and Secure Static File Service
  • Diesel Database Operations are Non-Blocking
  • Filesystem Organized for Scale
  • .env for Local Development
  • Integrated Application State with a Simple API
  • Lazy Static Config struct
  • Built-in Healthcheck (includes cargo version info)
  • Listeners configured for TDD
  • Custom Errors and HTTP Payload/Json Validation
  • Secure Argon2i Password Hashing
  • CORS Support
  • Unit and Integration Tests
  • Test Coverage Reports
  • Dockerfile for Running the Server in a Container
  • TravisCI Integration

Featured Packages

  • Argon2i: Argon2i Password Hasning
  • actix-cors: CORS Support
  • actix-identity: User Authentication
  • actix-redis and redis-async: Async Caching Layer
  • actix-web: Actix Web Server
  • derive_more: Error Formatting
  • diesel: ORM that Operates on Several Databases
  • dotenv: Configuration Loader (.env)
  • envy: Deserializes Environment Variables into a Config Struct
  • jsonwebtoken: JWT encoding/decoding
  • kcov: Coverage Analysis
  • listenfd: Listens for Filesystem Changes
  • rayon: Parallelize
  • r2d2: Database Connection Pooling
  • validator: Validates incoming Json

Installation

Clone the repo and cd into the repo:

git clone https://github.com/ddimaria/rust-actix-example.git
cd rust-actix-example

Copy over the example .env file:

cp .env.example .env

IMPORTANT: Change .env values for your setup, paying special attention to the salt and various keys.

After you set the DATABASE value in .env, you'll need it to match the default value in the features section in Cargo.toml with the DATABASE value in .env:

[features]
cockroach = []
mysql = []
postgres = []
sqlite = []
default = ["mysql"]

note: Only supply a SINGLE database in the default array.

Next, you'll need to install the Diesel CLI:

cargo install diesel_cli

If you run into errors, see http://diesel.rs/guides/getting-started/

Now run the migrations via the Diesel CLI:

diesel migration run

Running the Server

To startup the server:

cargo run

Autoreloading

To startup the server and autoreload on code changes:

systemfd --no-pid -s http::3000 -- cargo watch -x run

Tests

Integration tests are in the /src/tests folder. There are helper functions to make testing the API straightforward. For example, if we want to test the GET /api/v1/user route:

  use crate::tests::helpers::tests::assert_get;

  #[test]
  async fn test_get_users() {
      assert_get("/api/v1/user").await;
  }

Using the Actix test server, the request is sent and the response is asserted for a successful response:

assert!(response.status().is_success());

Similarly, to test a POST route:

use crate::handlers::user::CreateUserRequest;
use crate::tests::helpers::tests::assert_post;

#[test]
async fn test_create_user() {
    let params = CreateUserRequest {
        first_name: "Satoshi".into(),
        last_name: "Nakamoto".into(),
        email: "[email protected]".into(),
    };
    assert_post("/api/v1/user", params).await;
}

Running Tests

To run all of the tests:

cargo test

Test Covearage

I created a repo on DockerHub that I'll update with each Rust version (starting at 1.37), whose tags will match the Rust version.

In the root of the project:

docker run -it --rm --security-opt seccomp=unconfined --volume "${PWD}":/volume --workdir /volume ddimaria/rust-kcov:1.37 --exclude-pattern=/.cargo,/usr/lib,/src/main.rs,src/server.rs

note: coverage takes a long time to run (up to 30 mins).

You can view the HTML output of the report at target/cov/index.html

Docker

To build a Docker image of the application:

docker build -t rust_actix_example .

Once the image is built, you can run the container in port 3000:

docker run -it --rm --env-file=.env.docker -p 3000:3000 --name rust_actix_example rust_actix_example

Public Static Files

Static files are served up from the /static folder. Directory listing is turned off. Index files are supported (index.html).

Example:

curl -X GET http://127.0.0.1:3000/test.html

Secure Static Files

To serve static files to authenticated users only, place them in the /static-secure folder. These files are referenced using the root-level /secure path.

Example:

curl -X GET http://127.0.0.1:3000/secure/test.html

Application State

A shared, mutable hashmap is automatically added to the server. To invoke this data in a handler, simply add data: AppState<'_, String> to the function signature.

Helper Functions

get<T>(data: AppState<T>, key: &str) -> Option<T>

Retrieves a copy of the entry in application state by key.

Example:

use create::state::get;

pub async fn handle(data: AppState<'_, String>) -> impl Responder {
  let key = "SOME_KEY";
  let value = get(data, key);
  assert_eq!(value, Some("123".to_string()));
}

set<T>(data: AppState<T>, key: &str, value: T) -> Option<T>

Inserts or updates an entry in application state.

Example:

use create::state::set;

pub async fn handle(data: AppState<'_, String>) -> impl Responder {
  let key = "SOME_KEY";
  let value = set(data, key, "123".into());
  assert_eq!(value, None)); // if this is an insert
  assert_eq!(value, Some("123".to_string())); // if this is an update
}

delete<T>(data: AppState<T>, key: &str) -> Option<T>

Deletes an entry in application state by key.

Example:

use create::state::get;

pub async fn handle(data: AppState<'_, String>) -> impl Responder {
  let key = "SOME_KEY";
  let value = delete(data, key);
  assert_eq!(value, None);
}

Application Cache

Asynchronous access to redis is automatically added to the server if a value is provided for the REDIS_URL environment variable. To invoke this data in a handler, simply add cache: Cache to the function signature.

Helper Functions

get(cache: Cache, key: &str) -> Result<String, ApiError>

Retrieves a copy of the entry in the application cache by key.

Example:

use crate::cache::{get, Cache};

pub async fn handle(cache: Cache) -> impl Responder {
  let key = "SOME_KEY";
  let value = get(cache, key).await?;
  assert_eq!(value, "123");
}

set(cache: Cache, key: &str, value: &str) -> Result<String, ApiError>

Inserts or updates an entry in the application cache.

Example:

use crate::cache::{set, Cache};

pub async fn handle(cache: Cache) -> impl Responder {
  let key = "SOME_KEY";
  set(cache, key, "123").await?;
}

delete(cache: Cache, key: &str) -> Result<String, ApiError>

Deletes an entry in the application cache by key.

Example:

use crate::cache::{delete, Cache};

pub async fn handle(cache: Cache) -> impl Responder {
  let key = "SOME_KEY";
  delete(cache, key).await?;
}

Non-Blocking Diesel Database Operations

When accessing a database via Diesel, operations block the main server thread. This blocking can be mitigated by running the blocking code in a thread pool from within the handler.

Example:

pub async fn get_user(
    user_id: Path<Uuid>,
    pool: Data<PoolType>,
) -> Result<Json<UserResponse>, ApiError> {
    let user = block(move || find(&pool, *user_id)).await?;
    respond_json(user)
}

Blocking errors are automatically converted into ApiErrors to keep the api simple:

impl From<BlockingError<ApiError>> for ApiError {
    fn from(error: BlockingError<ApiError>) -> ApiError {
        match error {
            BlockingError::Error(api_error) => api_error,
            BlockingError::Canceled => ApiError::BlockingError("Thread blocking error".into()),
        }
    }
}

Endpoints

Healthcheck

Determine if the system is healthy.

GET /health

Response

{
  "status": "ok",
  "version": "0.1.0"
}

Example:

curl -X GET http://127.0.0.1:3000/health

Login

POST /api/v1/auth/login

Request

Param Type Description Required Validations
email String The user's email address yes valid email address
password String The user's password yes at least 6 characters
{
  "email": "[email protected]",
  "password": "123456"
}

Response

Header

HTTP/1.1 200 OK
content-length: 118
content-type: application/json
set-cookie: auth=COOKIE_VALUE_HERE; HttpOnly; Path=/; Max-Age=1200
date: Tue, 15 Oct 2019 02:04:54 GMT

Json Body

{
  "id": "0c419802-d1ef-47d6-b8fa-c886a23d61a7",
  "first_name": "Linus",
  "last_name": "Torvalds",
  "email": "[email protected]"
}

When sending subsequent requests, create a header variable cookie with the value auth=COOKIE_VALUE_HERE

Logout

GET /api/v1/auth/logout

Response

200 OK

Example:

curl -X GET http://127.0.0.1:3000/api/v1/auth/logout

Get All Users

GET /api/v1/user

Response

[
  {
    "id": "a421a56e-8652-4da6-90ee-59dfebb9d1b4",
    "first_name": "Satoshi",
    "last_name": "Nakamoto",
    "email": "[email protected]"
  },
  {
    "id": "c63d285b-7794-4419-bfb7-86d7bb3ff17d",
    "first_name": "Barbara",
    "last_name": "Liskov",
    "email": "[email protected]"
  }
]

Example:

curl -X GET http://127.0.0.1:3000/api/v1/user

Get a User

GET /api/v1/user/{id}

Request

Param Type Description
id Uuid The user's id

Response

{
  "id": "a421a56e-8652-4da6-90ee-59dfebb9d1b4",
  "first_name": "Satoshi",
  "last_name": "Nakamoto",
  "email": "[email protected]"
}

Example:

curl -X GET http://127.0.0.1:3000/api/v1/user/a421a56e-8652-4da6-90ee-59dfebb9d1b4

Response - Not Found

404 Not Found

{
  "errors": ["User c63d285b-7794-4419-bfb7-86d7bb3ff17a not found"]
}

Create a User

POST /api/v1/user

Request

Param Type Description Required Validations
first_name String The user's first name yes at least 3 characters
last_name String The user's last name yes at least 3 characters
email String The user's email address yes valid email address
{
  "first_name": "Linus",
  "last_name": "Torvalds",
  "email": "[email protected]"
}

Response

{
  "id": "0c419802-d1ef-47d6-b8fa-c886a23d61a7",
  "first_name": "Linus",
  "last_name": "Torvalds",
  "email": "[email protected]"
}

Example:

curl -X POST \
  http://127.0.0.1:3000/api/v1/user \
  -H 'Content-Type: application/json' \
  -d '{
    "first_name": "Linus",
    "last_name": "Torvalds",
    "email": "[email protected]"
}'

Response - Validation Errors

422 Unprocessable Entity

{
  "errors": [
    "first_name is required and must be at least 3 characters",
    "last_name is required and must be at least 3 characters",
    "email must be a valid email"
  ]
}

Update a User

PUT /api/v1/{id}

Request

Path

Param Type Description
id Uuid The user's id

Body

Param Type Description Required Validations
first_name String The user's first name yes at least 3 characters
last_name String The user's last name yes at least 3 characters
email String The user's email address yes valid email address
{
  "first_name": "Linus",
  "last_name": "Torvalds",
  "email": "[email protected]"
}

Response

{
  "id": "0c419802-d1ef-47d6-b8fa-c886a23d61a7",
  "first_name": "Linus",
  "last_name": "Torvalds",
  "email": "[email protected]"
}

Example:

curl -X PUT \
  http://127.0.0.1:3000/api/v1/user/0c419802-d1ef-47d6-b8fa-c886a23d61a7 \
  -H 'Content-Type: application/json' \
  -d '{
    "first_name": "Linus",
    "last_name": "Torvalds",
    "email": "[email protected]"
}'

Response - Validation Errors

422 Unprocessable Entity

{
  "errors": [
    "first_name is required and must be at least 3 characters",
    "last_name is required and must be at least 3 characters",
    "email must be a valid email"
  ]
}

Response - Not Found

404 Not Found

{
  "errors": ["User 0c419802-d1ef-47d6-b8fa-c886a23d61a7 not found"]
}

Delete a User

DELETE /api/v1/user/{id}

Request

Param Type Description
id Uuid The user's id

Response

{
  "id": "a421a56e-8652-4da6-90ee-59dfebb9d1b4",
  "first_name": "Satoshi",
  "last_name": "Nakamoto",
  "email": "[email protected]"
}

Response

200 OK

Example:

curl -X DELETE http://127.0.0.1:3000/api/v1/user/a421a56e-8652-4da6-90ee-59dfebb9d1b4

Response - Not Found

404 Not Found

{
  "errors": ["User c63d285b-7794-4419-bfb7-86d7bb3ff17a not found"]
}

License

This project is licensed under:

rust-actix-example's People

Contributors

ddimaria avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rust-actix-example's Issues

Add guide for system dependency for bootstrap

Hi,

I am trying out the example inside a relative new VM (ubuntu16.04).

The cargo test report a linker error at the end.

  = note: /usr/bin/x86_64-linux-gnu-ld: cannot find -lsqlite3
          /usr/bin/x86_64-linux-gnu-ld: cannot find -lpq
          /usr/bin/x86_64-linux-gnu-ld: cannot find -lmysqlclient
          collect2: error: ld returned 1 exit status

Is it possible to update the README to include some steps for a brand new linux VM setup?

Diesel migration run will fail with sqlite

On the up.sql script that is used as a first migration.

This: created_at TIMESTAMP NOT NULL DEFAULT NOW(), fails when using sqlite as a database.

One way to solve it is to replace it with: created_at TIMESTAMP NOT NULL DEFAULT (strftime('%s','now')),

Error happened when running the demo

ENV

Ubuntu 18.04 in VMware

$ rustc --version
rustc 1.42.0 (b8cedc004 2020-03-09)

steps

follow the README.md:

  1. install postgres
  2. install diesel_cli(to make it succeed, I install mysql, libsqlite3-dev and so on)
  3. modify the Cargo.toml:
[features]
cockroach = []
mysql = []
postgres = []
sqlite = []
default = ["postgres"]
  1. modify the .env
    I JUST modify the DATABASE_URL to postgres link.
  2. diesel migration run
    it succeeds
  3. run:
cargo run

Problem

What should I do to just use postgres? Because I think problem is caused by the program trying to connect other database like mysql, redis and so on:
log:

$ cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.15s
     Running `target/debug/rust_actix_example`
[2020-04-08T02:46:17Z INFO  actix_server::builder] Starting 8 workers
[2020-04-08T02:46:17Z INFO  actix_server::builder] Starting "actix-web-service-127.0.0.1:3000" service on 127.0.0.1:3000
thread 'actix-rt:worker:1' panicked at 'Failed to create connection pool: Error(Some("MySQL connection URLs must be in the form `mysql://[[user]:[password]@]host[:port][/database]`"))', src/database.rs:75:16
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1052
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:204
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:224
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:472
  11: rust_begin_unwind
             at src/libstd/panicking.rs:380
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  13: core::option::expect_none_failed
             at src/libcore/option.rs:1199
  14: core::result::Result<T,E>::expect
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/result.rs:991
  15: rust_actix_example::database::add_pool
             at src/database.rs:75
  16: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  17: actix_web::app::App<T,B>::configure
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/app.rs:183
  18: rust_actix_example::server::server::{{closure}}::{{closure}}
             at src/server.rs:24
  19: actix_web::server::HttpServer<F,I,S,B>::listen::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:261
  20: <F as actix_server::service::ServiceFactory<I>>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:183
  21: <actix_server::service::StreamNewService<F,Io> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:148
  22: <alloc::boxed::Box<dyn actix_server::service::InternalServiceFactory> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:170
  23: actix_server::worker::Worker::start::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/worker.rs:189
  24: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  25: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/future/future.rs:119
  26: <alloc::boxed::Box<F> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1131
  27: tokio::task::core::Core<T>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/core.rs:128
  28: tokio::task::harness::Harness<T,S>::poll::{{closure}}::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:120
  29: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  30: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:318
  31: std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
  32: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  33: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
  34: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
  35: tokio::task::harness::Harness<T,S>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:101
  36: tokio::loom::std::causal_cell::CausalCell<T>::with_mut
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/loom/std/causal_cell.rs:41
  37: tokio::task::harness::Harness<T,S>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:100
  38: tokio::task::raw::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:162
  39: tokio::task::raw::RawTask::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:113
  40: tokio::task::Task<S>::run
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/mod.rs:381
  41: tokio::task::local::Scheduler::tick
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:513
  42: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:407
  43: tokio::task::local::Scheduler::with::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  44: std::thread::local::LocalKey<T>::try_with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:262
  45: std::thread::local::LocalKey<T>::with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:239
  46: tokio::task::local::Scheduler::with
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  47: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  48: std::future::poll_with_tls_context
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:98
  49: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  50: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  51: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  52: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  53: tokio::runtime::context::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  54: tokio::runtime::handle::Handle::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  55: tokio::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  56: tokio::task::local::LocalSet::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  57: actix_rt::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  58: actix_rt::arbiter::Arbiter::new::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/arbiter.rs:125
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'actix-rt:worker:0' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250:25
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1052
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:204
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:224
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:472
  11: rust_begin_unwind
             at src/libstd/panicking.rs:380
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  13: core::option::expect_none_failed
             at src/libcore/option.rs:1199
  14: core::result::Result<T,E>::unwrap
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/result.rs:963
  15: actix_web::server::HttpServer<F,I,S,B>::listen::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250
  16: <F as actix_server::service::ServiceFactory<I>>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:183
  17: <actix_server::service::StreamNewService<F,Io> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:148
  18: <alloc::boxed::Box<dyn actix_server::service::InternalServiceFactory> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:170
  19: actix_server::worker::Worker::start::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/worker.rs:189
  20: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  21: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/future/future.rs:119
  22: <alloc::boxed::Box<F> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1131
  23: tokio::task::core::Core<T>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/core.rs:128
  24: tokio::task::harness::Harness<T,S>::poll::{{closure}}::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:120
  25: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  26: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:318
  27: std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
  28: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  29: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
  30: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
  31: tokio::task::harness::Harness<T,S>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:101
  32: tokio::loom::std::causal_cell::CausalCell<T>::with_mut
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/loom/std/causal_cell.rs:41
  33: tokio::task::harness::Harness<T,S>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:100
  34: tokio::task::raw::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:162
  35: tokio::task::raw::RawTask::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:113
  36: tokio::task::Task<S>::run
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/mod.rs:381
  37: tokio::task::local::Scheduler::tick
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:513
  38: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:407
  39: tokio::task::local::Scheduler::with::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  40: std::thread::local::LocalKey<T>::try_with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:262
  41: std::thread::local::LocalKey<T>::with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:239
  42: tokio::task::local::Scheduler::with
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  43: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  44: std::future::poll_with_tls_context
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:98
  45: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  46: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  47: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  48: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  49: tokio::runtime::context::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  50: tokio::runtime::handle::Handle::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  51: tokio::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  52: tokio::task::local::LocalSet::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  53: actix_rt::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  54: actix_rt::arbiter::Arbiter::new::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/arbiter.rs:125
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'actix-rt:worker:2' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250:25
stack backtrace:
   0: backtrace::backtrace::libunwind::[2020-04-08T02:46:48Z ERROR actix_redis::redis] Can not connect to redis server: Connection refused (os error 111)
trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1052
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:204
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:224
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:472
  11: rust_begin_unwind
             at src/libstd/panicking.rs:380
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  13: core::option::expect_none_failed
             at src/libcore/option.rs:1199
  14: core::result::Result<T,E>::unwrap
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/result.rs:963
  15: actix_web::server::HttpServer<F,I,S,B>::listen::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250
  16: <F as actix_server::service::ServiceFactory<I>>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:183
  17: <actix_server::service::StreamNewService<F,Io> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:148
  18: <alloc::boxed::Box<dyn actix_server::service::InternalServiceFactory> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:170
  19: actix_server::worker::Worker::start::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/worker.rs:189
  20: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  21: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/future/future.rs:119
  22: <alloc::boxed::Box<F> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1131
  23: tokio::task::core::Core<T>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/core.rs:128
  24: tokio::task::harness::Harness<T,S>::poll::{{closure}}::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:120
  25: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  26: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:318
  27: std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
  28: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  29: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
  30: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
  31: tokio::task::harness::Harness<T,S>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:101
  32: tokio::loom::std::causal_cell::CausalCell<T>::with_mut
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/loom/std/causal_cell.rs:41
  33: tokio::task::harness::Harness<T,S>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:100
  34: tokio::task::raw::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:162
  35: tokio::task::raw::RawTask::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:113
  36: tokio::task::Task<S>::run
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/mod.rs:381
  37: tokio::task::local::Scheduler::tick
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:513
  38: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:407
  39: tokio::task::local::Scheduler::with::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  40: std::thread::local::LocalKey<T>::try_with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:262
  41: std::thread::local::LocalKey<T>::with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:239
  42: tokio::task::local::Scheduler::with
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  43: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  44: std::future::poll_with_tls_context
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:98
  45: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  46: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  47: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  48: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  49: tokio::runtime::context::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  50: tokio::runtime::handle::Handle::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  51: tokio::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  52: tokio::task::local::LocalSet::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  53: actix_rt::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  54: actix_rt::arbiter::Arbiter::new::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/arbiter.rs:125
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'actix-rt:worker:3' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250:25
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1052
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:204
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:224
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:472
  11: rust_begin_unwind
             at src/libstd/panicking.rs:380
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  13: core::option::expect_none_failed
             at src/libcore/option.rs:1199
  14: core::result::Result<T,E>::unwrap
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/result.rs:963
  15: actix_web::server::HttpServer<F,I,S,B>::listen::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250
  16: <F as actix_server::service::ServiceFactory<I>>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:183
  17: <actix_server::service::StreamNewService<F,Io> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:148
  18: <alloc::boxed::Box<dyn actix_server::service::InternalServiceFactory> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:170
  19: actix_server::worker::Worker::start::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/worker.rs:189
  20: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  21: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/future/future.rs:119
  22: <alloc::boxed::Box<F> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1131
  23: tokio::task::core::Core<T>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/core.rs:128
  24: tokio::task::harness::Harness<T,S>::poll::{{closure}}::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:120
  25: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  26: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:318
  27: std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
  28: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  29: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
  30: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
  31: tokio::task::harness::Harness<T,S>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:101
  32: tokio::loom::std::causal_cell::CausalCell<T>::with_mut
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/loom/std/causal_cell.rs:41
  33: tokio::task::harness::Harness<T,S>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:100
  34: tokio::task::raw::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:162
  35: tokio::task::raw::RawTask::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:113
  36: tokio::task::Task<S>::run
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/mod.rs:381
  37: tokio::task::local::Scheduler::tick
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:513
  38: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:407
  39: tokio::task::local::Scheduler::with::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  40: std::thread::local::LocalKey<T>::try_with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:262
  41: std::thread::local::LocalKey<T>::with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:239
  42: tokio::task::local::Scheduler::with
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  43: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  44: std::future::poll_with_tls_context
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:98
  45: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  46: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  47: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  48: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  49: tokio::runtime::context::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  50: tokio::runtime::handle::Handle::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  51: tokio::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  52: tokio::task::local::LocalSet::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  53: actix_rt::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  54: actix_rt::arbiter::Arbiter::new::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/arbiter.rs:125
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'actix-rt:worker:4' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250:25
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1052
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:204
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:224
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:472
  11: rust_begin_unwind
             at src/libstd/panicking.rs:380
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  13: core::option::expect_none_failed
             at src/libcore/option.rs:1199
  14: core::result::Result<T,E>::unwrap
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/result.rs:963
  15: actix_web::server::HttpServer<F,I,S,B>::listen::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250
  16: <F as actix_server::service::ServiceFactory<I>>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:183
  17: <actix_server::service::StreamNewService<F,Io> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:148
  18: <alloc::boxed::Box<dyn actix_server::service::InternalServiceFactory> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:170
  19: actix_server::worker::Worker::start::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/worker.rs:189
  20: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  21: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/future/future.rs:119
  22: <alloc::boxed::Box<F> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1131
  23: tokio::task::core::Core<T>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/core.rs:128
  24: tokio::task::harness::Harness<T,S>::poll::{{closure}}::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:120
  25: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  26: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:318
  27: std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
  28: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  29: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
  30: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
  31: tokio::task::harness::Harness<T,S>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:101
  32: tokio::loom::std::causal_cell::CausalCell<T>::with_mut
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/loom/std/causal_cell.rs:41
  33: tokio::task::harness::Harness<T,S>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:100
  34: tokio::task::raw::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:162
  35: tokio::task::raw::RawTask::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:113
  36: tokio::task::Task<S>::run
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/mod.rs:381
  37: tokio::task::local::Scheduler::tick
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:513
  38: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:407
  39: tokio::task::local::Scheduler::with::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  40: std::thread::local::LocalKey<T>::try_with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:262
  41: std::thread::local::LocalKey<T>::with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:239
  42: tokio::task::local::Scheduler::with
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  43: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  44: std::future::poll_with_tls_context
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:98
  45: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  46: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  47: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  48: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  49: tokio::runtime::context::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  50: tokio::runtime::handle::Handle::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  51: tokio::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  52: tokio::task::local::LocalSet::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  53: actix_rt::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  54: actix_rt::arbiter::Arbiter::new::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/arbiter.rs:125
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'actix-rt:worker:5' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250:25
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1052
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:204
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:224
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:472
  11: rust_begin_unwind
             at src/libstd/panicking.rs:380
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  13: core::option::expect_none_failed
             at src/libcore/option.rs:1199
  14: core::result::Result<T,E>::unwrap
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/result.rs:963
  15: actix_web::server::HttpServer<F,I,S,B>::listen::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250
  16: <F as actix_server::service::ServiceFactory<I>>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:183
  17: <actix_server::service::StreamNewService<F,Io> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:148
  18: <alloc::boxed::Box<dyn actix_server::service::InternalServiceFactory> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:170
  19: actix_server::worker::Worker::start::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/worker.rs:189
  20: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  21: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/future/future.rs:119
  22: <alloc::boxed::Box<F> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1131
  23: tokio::task::core::Core<T>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/core.rs:128
  24: tokio::task::harness::Harness<T,S>::poll::{{closure}}::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:120
  25: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  26: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:318
  27: std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
  28: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  29: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
  30: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
  31: tokio::task::harness::Harness<T,S>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:101
  32: tokio::loom::std::causal_cell::CausalCell<T>::with_mut
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/loom/std/causal_cell.rs:41
  33: tokio::task::harness::Harness<T,S>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:100
  34: tokio::task::raw::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:162
  35: tokio::task::raw::RawTask::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:113
  36: tokio::task::Task<S>::run
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/mod.rs:381
  37: tokio::task::local::Scheduler::tick
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:513
  38: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:407
  39: tokio::task::local::Scheduler::with::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  40: std::thread::local::LocalKey<T>::try_with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:262
  41: std::thread::local::LocalKey<T>::with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:239
  42: tokio::task::local::Scheduler::with
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  43: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  44: std::future::poll_with_tls_context
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:98
  45: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  46: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  47: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  48: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  49: tokio::runtime::context::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  50: tokio::runtime::handle::Handle::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  51: tokio::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  52: tokio::task::local::LocalSet::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  53: actix_rt::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  54: actix_rt::arbiter::Arbiter::new::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/arbiter.rs:125
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'actix-rt:worker:6' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250:25
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1052
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:204
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:224
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:472
  11: rust_begin_unwind
             at src/libstd/panicking.rs:380
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  13: core::option::expect_none_failed
             at src/libcore/option.rs:1199
  14: core::result::Result<T,E>::unwrap
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/result.rs:963
  15: actix_web::server::HttpServer<F,I,S,B>::listen::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250
  16: <F as actix_server::service::ServiceFactory<I>>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:183
  17: <actix_server::service::StreamNewService<F,Io> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:148
  18: <alloc::boxed::Box<dyn actix_server::service::InternalServiceFactory> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:170
  19: actix_server::worker::Worker::start::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/worker.rs:189
  20: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  21: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/future/future.rs:119
  22: <alloc::boxed::Box<F> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1131
  23: tokio::task::core::Core<T>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/core.rs:128
  24: tokio::task::harness::Harness<T,S>::poll::{{closure}}::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:120
  25: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  26: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:318
  27: std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
  28: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  29: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
  30: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
  31: tokio::task::harness::Harness<T,S>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:101
  32: tokio::loom::std::causal_cell::CausalCell<T>::with_mut
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/loom/std/causal_cell.rs:41
  33: tokio::task::harness::Harness<T,S>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:100
  34: tokio::task::raw::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:162
  35: tokio::task::raw::RawTask::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:113
  36: tokio::task::Task<S>::run
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/mod.rs:381
  37: tokio::task::local::Scheduler::tick
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:513
  38: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:407
  39: tokio::task::local::Scheduler::with::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  40: std::thread::local::LocalKey<T>::try_with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:262
  41: std::thread::local::LocalKey<T>::with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:239
  42: tokio::task::local::Scheduler::with
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  43: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  44: std::future::poll_with_tls_context
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:98
  45: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  46: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  47: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  48: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  49: tokio::runtime::context::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  50: tokio::runtime::handle::Handle::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  51: tokio::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  52: tokio::task::local::LocalSet::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  53: actix_rt::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  54: actix_rt::arbiter::Arbiter::new::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/arbiter.rs:125
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'actix-rt:worker:7' panicked at 'called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"', /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250:25
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1052
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1426
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:204
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:224
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:472
  11: rust_begin_unwind
             at src/libstd/panicking.rs:380
  12: core::panicking::panic_fmt
             at src/libcore/panicking.rs:85
  13: core::option::expect_none_failed
             at src/libcore/option.rs:1199
  14: core::result::Result<T,E>::unwrap
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/result.rs:963
  15: actix_web::server::HttpServer<F,I,S,B>::listen::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-web-2.0.0/src/server.rs:250
  16: <F as actix_server::service::ServiceFactory<I>>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:183
  17: <actix_server::service::StreamNewService<F,Io> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:148
  18: <alloc::boxed::Box<dyn actix_server::service::InternalServiceFactory> as actix_server::service::InternalServiceFactory>::create
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/service.rs:170
  19: actix_server::worker::Worker::start::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-server-1.0.1/src/worker.rs:189
  20: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  21: <core::pin::Pin<P> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/future/future.rs:119
  22: <alloc::boxed::Box<F> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/liballoc/boxed.rs:1131
  23: tokio::task::core::Core<T>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/core.rs:128
  24: tokio::task::harness::Harness<T,S>::poll::{{closure}}::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:120
  25: core::ops::function::FnOnce::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libcore/ops/function.rs:232
  26: <std::panic::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:318
  27: std::panicking::try::do_call
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:305
  28: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:86
  29: std::panicking::try
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panicking.rs:281
  30: std::panic::catch_unwind
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/panic.rs:394
  31: tokio::task::harness::Harness<T,S>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:101
  32: tokio::loom::std::causal_cell::CausalCell<T>::with_mut
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/loom/std/causal_cell.rs:41
  33: tokio::task::harness::Harness<T,S>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/harness.rs:100
  34: tokio::task::raw::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:162
  35: tokio::task::raw::RawTask::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/raw.rs:113
  36: tokio::task::Task<S>::run
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/mod.rs:381
  37: tokio::task::local::Scheduler::tick
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:513
  38: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:407
  39: tokio::task::local::Scheduler::with::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  40: std::thread::local::LocalKey<T>::try_with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:262
  41: std::thread::local::LocalKey<T>::with
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/thread/local.rs:239
  42: tokio::task::local::Scheduler::with
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  43: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  44: std::future::poll_with_tls_context
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:98
  45: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  46: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/b8cedc00407a4c56a3bda1ed605c6fc166655447/src/libstd/future.rs:43
  47: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  48: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  49: tokio::runtime::context::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  50: tokio::runtime::handle::Handle::enter
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  51: tokio::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  52: tokio::task::local::LocalSet::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  53: actix_rt::runtime::Runtime::block_on
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  54: actix_rt::arbiter::Arbiter::new::{{closure}}
             at /home/flyq/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/arbiter.rs:125
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
^C[2020-04-08T02:52:30Z INFO  actix_server::builder] SIGINT received, exiting

Can not run API

i have installed demo and try to access: http://127.0.0.1:3000/user
however, i got this: The system cannot find the file specified. (os error 2)

Also, tried: http://127.0.0.1:3000/user/00000000-0000-0000-0000-000000000000
and get this
[2020-04-30T05:49:58Z INFO actix_web::middleware::logger] 127.0.0.1:52709 "GET /user/00000000-0000-0000-0000-000000000000 HTTP/1.1" 404 55 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" 0.000000
The system cannot find the path specified. (os error 3)

Docker build fails on mac

Docker build does not work out of the box, fails with the message

#0 1490.7 = note: /usr/bin/ld: cannot find -lsqlite3
#0 1490.7 /usr/bin/ld: cannot find -lmysqlclient
#0 1490.7 collect2: error: ld returned 1 exit status

havent tried on other systems

Cannot start app

thread 'main' panicked at 'Configuration Error: Custom(
"invalid digit found in string while parsing value 'short' provided by RUST_BACKTRACE",
)', src/config.rs:43:23

stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/libunwind.rs:88
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.40/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:77
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:61
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1028
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1412
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:65
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:50
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:188
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:205
  10: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:464
  11: std::panicking::continue_panic_fmt
             at src/libstd/panicking.rs:373
  12: std::panicking::begin_panic_fmt
             at src/libstd/panicking.rs:328
  13: rust_actix_example::config::get_config
             at src/config.rs:43
  14: <rust_actix_example::config::CONFIG as core::ops::deref::Deref>::deref::__static_ref_initialize
             at src/config.rs:34
  15: core::ops::function::FnOnce::call_once
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libcore/ops/function.rs:227
  16: lazy_static::lazy::Lazy<T>::get::{{closure}}
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/inline_lazy.rs:31
  17: std::sync::once::Once::call_once::{{closure}}
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/sync/once.rs:224
  18: std::sync::once::Once::call_inner
             at src/libstd/sync/once.rs:391
  19: std::sync::once::Once::call_once
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/sync/once.rs:224
  20: lazy_static::lazy::Lazy<T>::get
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/lazy_static-1.4.0/src/inline_lazy.rs:30
  21: <rust_actix_example::config::CONFIG as core::ops::deref::Deref>::deref::__stability
             at ./<::lazy_static::__lazy_static_internal macros>:16
  22: <rust_actix_example::config::CONFIG as core::ops::deref::Deref>::deref
             at ./<::lazy_static::__lazy_static_internal macros>:18
  23: rust_actix_example::server::server::{{closure}}
             at src/server.rs:37
  24: <std::future::GenFuture<T> as core::future::future::Future>::poll::{{closure}}
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:43
  25: std::future::set_task_context
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:79
  26: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:43
  27: std::future::poll_with_tls_context::{{closure}}
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:121
  28: std::future::get_task_context
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:111
  29: std::future::poll_with_tls_context
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:121
  30: rust_actix_example::main::{{closure}}
             at src/main.rs:33
  31: <std::future::GenFuture<T> as core::future::future::Future>::poll::{{closure}}
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:43
  32: std::future::set_task_context
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:79
  33: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:43
  34: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll::{{closure}}
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:403
  35: tokio::task::local::Scheduler::with::{{closure}}
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:478
  36: std::thread::local::LocalKey<T>::try_with
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/thread/local.rs:262
  37: std::thread::local::LocalKey<T>::with
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/thread/local.rs:239
  38: tokio::task::local::Scheduler::with
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:474
  39: <tokio::task::local::LocalFuture<F> as core::future::future::Future>::poll
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:402
  40: std::future::poll_with_tls_context::{{closure}}
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:121
  41: std::future::get_task_context
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:111
  42: std::future::poll_with_tls_context
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:121
  43: tokio::task::local::LocalSet::run_until::{{closure}}
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:358
  44: <std::future::GenFuture<T> as core::future::future::Future>::poll::{{closure}}
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:43
  45: std::future::set_task_context
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:79
  46: <std::future::GenFuture<T> as core::future::future::Future>::poll
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/future.rs:43
  47: tokio::runtime::basic_scheduler::BasicScheduler<P>::block_on
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/basic_scheduler.rs:138
  48: tokio::runtime::Runtime::block_on::{{closure}}
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:411
  49: tokio::runtime::context::enter
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/context.rs:72
  50: tokio::runtime::handle::Handle::enter
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/handle.rs:34
  51: tokio::runtime::Runtime::block_on
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/runtime/mod.rs:408
  52: tokio::task::local::LocalSet::block_on
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-0.2.11/src/task/local.rs:321
  53: actix_rt::runtime::Runtime::block_on
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/runtime.rs:89
  54: actix_rt::builder::SystemRunner::block_on
             at /home/venny/.cargo/registry/src/github.com-1ecc6299db9ec823/actix-rt-1.0.0/src/builder.rs:187
  55: rust_actix_example::main
             at src/main.rs:31
  56: std::rt::lang_start::{{closure}}
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/rt.rs:61
  57: std::rt::lang_start_internal::{{closure}}
             at src/libstd/rt.rs:48
  58: std::panicking::try::do_call
             at src/libstd/panicking.rs:287
  59: __rust_maybe_catch_panic
             at src/libpanic_unwind/lib.rs:78
  60: std::panicking::try
             at src/libstd/panicking.rs:265
  61: std::panic::catch_unwind
             at src/libstd/panic.rs:396
  62: std::rt::lang_start_internal
             at src/libstd/rt.rs:47
  63: std::rt::lang_start
             at /rustc/73528e339aae0f17a15ffa49a8ac608f50c6cf14/src/libstd/rt.rs:61
  64: main
  65: __libc_start_main
  66: _start
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Panic in Arbiter thread.

Process finished with exit code 101

Auth

I did not notice the 'from ' on the model

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.