ReleaseEngineering/Development Best Practices: Difference between revisions

→‎Server-side: Update server-side recommendations
(→‎Server-side: Update server-side recommendations)
Line 23: Line 23:
= Programming Language & Framework =
= Programming Language & Framework =
== Server-side ==
== Server-side ==
For server-side stuff, use Python 2.7, aiming to be as Python-3 compatible as possible, as we'll switch someday.
For server-side stuff, use Python 3, with legacy python support only if needed.
 
See also our [[ReleaseEngineering/Python Standards|python standards]] document.


Within that:
Within that:
Line 29: Line 31:
* for DB interfaces: sqlalchemy
* for DB interfaces: sqlalchemy
* for an HTTP client: requests
* for an HTTP client: requests
* for messaging: kombu (talking to RabbitMQ)
* for async: asyncio
* for job scheduling: celery
..and the don'ts:
..and the don'ts:
* don't manage daemonization yourself; plan to use supervisord in production
* don't manage daemonization yourself; plan to use supervisord in production
* do '''not''' use async libraries like twisted or gevent if you can help it
* do '''not''' use async libraries like twisted or gevent if you can help it
** target MySQL only, or if you're ambitious, MySQL in prod and SQLite for development, noting that the latter can get you in trouble


== Browser-side ==
== Browser-side ==
Confirmed users
2,456

edits