GithubHelp home page GithubHelp logo

system800's People

Contributors

daithimaco avatar guyrt avatar leandraking avatar oelachqar avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

system800's Issues

[prod][celery][twilio] retry on request errors in twilio

Example stacktrace:

Traceback (most recent call last):
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "", line 2, in raise_from
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/http/client.py", line 1321, in getresponse
response.begin()
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/http/client.py", line 296, in begin
version, status, reason = self._read_status()
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/http/client.py", line 265, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/util/retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/packages/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "", line 2, in raise_from
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/http/client.py", line 1321, in getresponse
response.begin()
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/http/client.py", line 296, in begin
version, status, reason = self._read_status()
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/http/client.py", line 265, in _read_status
raise RemoteDisconnected("Remote end closed connection without"
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/celery/app/trace.py", line 382, in trace_task
R = retval = fun(*args, **kwargs)
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/celery/app/trace.py", line 641, in protected_call
return self.run(*args, **kwargs)
File "/Users/dger/projets/system800/api/tasks.py", line 110, in run
status = twilio.fetch_status(call_sid)
File "/Users/dger/projets/system800/workflow/call/twilio_call_wrapper.py", line 126, in fetch_status
return self.fetch_call(call_sid).status
File "/Users/dger/projets/system800/workflow/call/twilio_call_wrapper.py", line 107, in fetch_call
return self._client.calls.get(call_sid).fetch()
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/twilio/rest/api/v2010/account/call/init.py", line 422, in fetch
params=params,
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/twilio/base/version.py", line 78, in fetch
allow_redirects=allow_redirects,
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/twilio/base/version.py", line 47, in request
allow_redirects=allow_redirects
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/twilio/base/domain.py", line 46, in request
allow_redirects=allow_redirects
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/twilio/rest/init.py", line 128, in request
allow_redirects=allow_redirects
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/twilio/http/http_client.py", line 68, in request
timeout=timeout,
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/local/miniconda3/envs/asapEnv37/lib/python3.7/site-packages/requests/adapters.py", line 498, in send
raise ConnectionError(err, request=request)
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))

[celery] Report appropriate errors to the caller

We should make sure that our internal logging captures whatever exception has been thrown, as well as the input case number, and the task number we generated.

We should try to report something that's humanly understandable to the user.

[celery] Make sure timezones are consistent

It seems like we are using machine default timezone, which can cause problem if running on different workers.

For example If running a worker locally (PST timezone) vs one Azure (UTC)

[api] callback_url validation is too strict in /process endpoint

Currently we are calling to endpoint to make sure it is correct.

This is problematic because the callback should only be called to return results, as it may interfere with any internal processing the consumers of the API might be doing. Also, if the callback is momentarily down we will fail too early.

Suggestion:
only check if the callback_url is not empty or null, and that is a well formatted url.

[celery][prod] Deploy flower and secure access

For easier monitoring and debugging, we should have a continuously running flower instance. ]

Before deploying it, we should setup some kind of authentication (basic auth is probably enough).

[celery][prod] configure redis storage and retention policy

Redis is a memory key value store, which means if the memory is full or if the machine reboots we loose our data.

To mitigate this we need to:

  1. Configure disk backups
  2. Set a retention policy for records (Eg. auto delete after 1 week)
  3. Choose a policy for automatic record deletion when memory is full (Eg. least recently used first)

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.