我正在我的PHP服务器端API中,我正在进行大量的MySQL查询,我想通过让多个线程处理不同的查询然后返回结果来加快速度.
但是如何在PHP中创建另一个线程?我正在传递POST params,所以一个简单的shell_exec()可以工作,但似乎有点不安全.我正在考虑的选项:
1)使用我拥有的参数发出cURL请求,处理请求中的JSON然后返回
2)shell_exec()用PHP CLI 调用a 并以某种方式(我将如何做到这一点?)处理PHP中的响应
这里最好的选择是什么?
我的服务器将发送一个JSON,序列化为字符串,通过套接字发送到另一台客户端机器.我会拿最后的json做这个:
import json
python_dict_obj = { "id" : 1001, "name" : "something", "file" : <???> }
serialized_json_str = json.dumps(python_dict_obj)
Run Code Online (Sandbox Code Playgroud)
我想让我的JSON中的一个字段具有作为文件的值,编码为字符串.
性能方面(但也是互操作性)使用python编码文件的最佳方法是什么?Base64编码?二进制?只是原始的字符串文本?
编辑 - 对于那些建议base64,这样的事情?
# get file
import base64
import json
with open(filename, 'r') as f:
filecontents = f.read()
encoded = base64.b64encode(filecontents)
python_dict_obj['file'] = encoded
serialized_json_str = json.dumps(python_dict_obj)
# ... sent to client via socket
# decrpyting
json_again = json.loads(serialized)
filecontents_again = base64.b64decode(json_again['file'])
Run Code Online (Sandbox Code Playgroud) 我有一个带有相关API和数据库的Web应用程序.
我想在API中使用相同的Django模型,但是它由不同的进程单独提供,因此我可以独立扩展它.
我也不需要API来提供静态资产或任何其他视图.
复杂的是我定义的路由有API,webapp共享根域:
http://domain.com/normal/application/stuff
http://domain.com/api/different/stuff
Run Code Online (Sandbox Code Playgroud)
另外我的Django应用程序依赖于彼此的模型和常量(所以两个不同的settings.py文件有不同INSTALLED_APPS并不能完全解决它).
我想有一种方法是我可以在我的Procfile中定义不同的进程,它只是启动Django应用程序,但是在其中一个进程中它可能有不同的环境变量?我不认为我可以改变每个Proc的环境heroku:config,我认为它实际上必须是Procfile中的指令.
任何人都有这方面的经验或见解吗?谢谢!
尝试drfdocs在virtualenv中的Mac OSX上安装Python pip包(Django Rest Framework文档):
以下是pip,python,easy_install的相关版本:
$ virtualenv --version
1.11.4
$ mkvirtualenv test
New python executable in test/bin/python
Installing setuptools, pip...done.
(test)$ python --version; which python
Python 2.7.10
/Users/me/.virtualenvs/test/bin/python
(test)$ pip --version; which pip
pip 1.5.4 from /Users/me/.virtualenvs/test/lib/python2.7/site-packages (python 2.7)
/Users/me/.virtualenvs/test/bin/pip
(test)$ easy_install --version; which easy_install
setuptools 2.2
/Users/me/.virtualenvs/test/bin/easy_install
(test)$ python -c "import setuptools.command; print setuptools.command"
<module 'setuptools.command' from '/Users/me/.virtualenvs/test/lib/python2.7/site-packages/setuptools/command/__init__.pyc'>
Run Code Online (Sandbox Code Playgroud)
这是错误:
$ pip install drfdocs
Downloading/unpacking drfdocs
Downloading drfdocs-0.0.11.tar.gz (771kB): 771kB downloaded
Running setup.py (path:/Users/me/.virtualenvs/test/build/drfdocs/setup.py) egg_info for package …Run Code Online (Sandbox Code Playgroud) 我发现Dataset.map()功能非常适合设置管道以预先处理图像/音频数据,然后再送入网络进行培训,但我遇到的一个问题是在预处理之前访问原始数据以发送到tensorboard作为摘要.
例如,假设我有一个加载音频数据的功能,做一些帧,制作频谱图,然后返回.
import tensorflow as tf
def load_audio_examples(label, path):
# loads audio, converts to spectorgram
pcm = ... # this is what I'd like to put into tf.summmary.audio() !
# creates one-hot encoded labels, etc
return labels, examples
# create dataset
training = tf.data.Dataset.from_tensor_slices((
tf.constant(labels),
tf.constant(paths)
))
training = training.map(load_audio_examples, num_parallel_calls=4)
# create ops for training
train_step = # ...
accuracy = # ...
# create iterator
iterator = training.repeat().make_one_shot_iterator()
next_element = iterator.get_next()
# ready session
sess = tf.InteractiveSession()
tf.global_variables_initializer().run() …Run Code Online (Sandbox Code Playgroud) python tensorflow tensorboard tensorflow-serving tensorflow-datasets
这是 my docker-compose.yml,它包含一个 web 服务,它在本地安装一个文件夹,以便在任何代码更改时watchmedo重新启动webappdjango 服务器。它是 nginx 的反向代理。
version: '3'
services:
webapp:
build:
context: .
dockerfile: ./web/Dockerfile
volumes:
- ./web/:/usr/src/app/
- staticfile_volume:/usr/src/app/public
entrypoint: >
watchmedo auto-restart --recursive
--pattern="*.py" --directory="."
gunicorn myapp.wsgi:application -- --bind 0.0.0.0:9000
nginx:
build:
context: .
dockerfile: ./nginx/Dockerfile
depends_on:
- webapp
volumes:
- staticfile_volume:/usr/src/app/public
volumes:
staticfile_volume:
Run Code Online (Sandbox Code Playgroud)
我的本地文件设置如下:
$ tree -L 2
.
??? docker-compose.yml
??? nginx
? ??? Dockerfile
? ??? nginx.conf
??? web
??? Dockerfile
??? manage.py
??? myapp
??? public
??? …Run Code Online (Sandbox Code Playgroud) 好的,我有一个 CodePipeline,它的功能非常普通
CodeCommit -> Build Docker images -> CodeDeploy to ECS
在该buildspec.yml文件中,AWS要求输出imagedefinitions.json为 CodePipeline 可用于将容器名称映射到 ECR 图像 URL 的工件。
以下是经常引用的示例,说明如何在您的 中执行此操作buildspec.yml:
printf '[{"name":"MyService","imageUri":"%s"}]' $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/myservice/app:latest > imagedefinitions.json
但这对我来说似乎完全多余。在 ECS 任务定义中,我们可以在 下包含以下内容containerDefinitions:
"containerDefinitions": [
{
"name": "MyService",
"image": "123456789.dkr.ecr.us-east-1.amazonaws.com/myservice/app:latest"
},
...
]
Run Code Online (Sandbox Code Playgroud)
为什么为了使用 CodePipeline CodeDeploy ECS 任务,我们必须提供 ECS 任务定义中已指定的信息?在这里消除对工件(以及存储所述工件的 S3 存储桶)的需要会更加干净!
也许 CodeDeploy/ECS 的一些基础知识我不明白。
我使用Python 2.7和virtualenv&virtualenvwrapper使用Ubuntu 16.04.
按照本指南,我设法让我的系统Python2.7使用cv2全局安装的以下脚本.
我用这个脚本来安装它:
######################################
# INSTALL OPENCV ON UBUNTU OR DEBIAN #
######################################
# | THIS SCRIPT IS TESTED CORRECTLY ON |
# |----------------------------------------------------|
# | OS | OpenCV | Test | Last test |
# |----------------|--------------|------|-------------|
# | Ubuntu 16.04.2 | OpenCV 3.2.0 | OK | 20 May 2017 |
# | Debian 8.8 | OpenCV 3.2.0 | OK | 20 May 2017 |
# | Debian 9.0 | OpenCV 3.2.0 | OK …Run Code Online (Sandbox Code Playgroud) 这是一个Rust 游乐场链接,但是:
fn main() {
// marking var as mutable
let mut counter = 0;
counter += 1;
counter += 3;
println!("counter: {}", counter);
// "shadowing" a variable: this is allocating mem for new var,
// and replacing the old one after
let myvar = 5;
let myvar = 1000;
println!("myvar: {}", myvar);
}
Run Code Online (Sandbox Code Playgroud)
这给出了警告:
warning: unused variable: `myvar`
--> src/main.rs:19:9
|
19 | let myvar = 5;
| ^^^^^ help: if this is intentional, prefix it with …Run Code Online (Sandbox Code Playgroud) 我想手动编码一个 1D 卷积,因为我正在使用内核进行时间序列分类,我决定制作著名的 Wikipedia 卷积图像,如图所示。
import numpy as np
import matplotlib.pyplot as plt
import scipy.ndimage
plt.style.use('ggplot')
def convolve1d(signal, ir):
"""
we use the 'same' / 'constant' method for zero padding.
"""
n = len(signal)
m = len(ir)
output = np.zeros(n)
for i in range(n):
for j in range(m):
if i - j < 0: continue
output[i] += signal[i - j] * ir[j]
return output
def make_square_and_saw_waves(height, start, end, n):
single_square_wave = []
single_saw_wave = [] …Run Code Online (Sandbox Code Playgroud) python ×6
django ×3
amazon-ecs ×1
api ×1
concurrency ×1
convolution ×1
docker ×1
ffmpeg ×1
heroku ×1
json ×1
macos ×1
matplotlib ×1
mysql ×1
nginx ×1
numpy ×1
opencv ×1
php ×1
procfile ×1
rust ×1
scipy ×1
server-side ×1
tensorboard ×1
tensorflow ×1
ubuntu ×1
virtualenv ×1