小编KGo*_*KGo的帖子

Docker-compose:npm安装成功后,卷中没有node_modules

我有一个具有以下服务的应用程序:

  • web/ - 在端口5000上保存并运行python 3 flask Web服务器.使用sqlite3.
  • worker/- 有一个index.js文件,它是队列的工作者.Web服务器使用json API over port与此队列交互9730.工人使用redis进行存储.工作人员还将数据本地存储在文件夹中worker/images/

现在这个问题只涉及到了worker.

worker/Dockerfile

FROM node:0.12

WORKDIR /worker

COPY package.json /worker/
RUN npm install

COPY . /worker/
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

redis:
    image: redis
worker:
    build: ./worker
    command: npm start
    ports:
        - "9730:9730"
    volumes:
        - worker/:/worker/
    links:
        - redis
Run Code Online (Sandbox Code Playgroud)

当我运行时docker-compose build,一切都按预期工作,所有npm模块都/worker/node_modules按照我的预期安装.

npm WARN package.json unfold@1.0.0 No README data

> phantomjs@1.9.2-6 install /worker/node_modules/pageres/node_modules/screenshot-stream/node_modules/phantom-bridge/node_modules/phantomjs
> node install.js

<snip>
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时docker-compose up,我看到了这个错误:

worker_1 …
Run Code Online (Sandbox Code Playgroud)

node.js docker ubuntu-14.04 docker-compose

155
推荐指数
10
解决办法
7万
查看次数

Mac + virtualenv + pip + postgresql =错误:找不到pg_config可执行文件

我试图为教程安装postgres,但是pip给了我错误:

pip install psycopg
Run Code Online (Sandbox Code Playgroud)

我得到一个错误:

Error: pg_config executable not found.

Please add the directory containing pg_config to the PATH

or specify the full executable path with the option:

    python setup.py build_ext --pg-config /path/to/pg_config build ...

or with the pg_config option in 'setup.cfg'.
Run Code Online (Sandbox Code Playgroud)

pg_config我的virtualenv 在哪里?如何配置?我正在使用virtualenv,因为我不想在系统范围内安装postgres.

python postgresql macos psycopg2

74
推荐指数
9
解决办法
6万
查看次数

MissingSchemaError:尚未为模型"用户"注册架构

在我的models/user.js档案中:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var userSchema = new Schema({
    (define schema)
});
...
(save user)
...
(check password)
...
mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)

在我router/index.js,我有:

var mongoose = require('mongoose');
var User = mongoose.model('User');
Run Code Online (Sandbox Code Playgroud)

抛出错误:

MissingSchemaError: Schema hasn't been registered for model "User".
Run Code Online (Sandbox Code Playgroud)

但是,如果user.js,我(在最后一行)

module.exports = mongoose.model('User', userSchema);
Run Code Online (Sandbox Code Playgroud)

index.js我这样做var User = require('../models/User');,然后一切正常.

但它不应该,因为config/pass.js我正在做,var User = mongoose.model('User');而且它的工作完美无瑕.

require('../models/User');语法不工作在Ubuntu,但在我的Mac.

我该怎么办?我如何解决它?我看了很多样本​​应用程序,包括MEAN,但没有什么是真正有用的.

javascript mongoose node.js express

42
推荐指数
7
解决办法
5万
查看次数

Selenium是慢的还是我的代码错了?

所以我试图使用Python登录Quora,然后刮掉一些东西.

我正在使用Selenium登录该网站.这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get('http://www.quora.com/')

username = driver.find_element_by_name('email')
password = driver.find_element_by_name('password')

username.send_keys('email')
password.send_keys('password')
password.send_keys(Keys.RETURN)

driver.close()
Run Code Online (Sandbox Code Playgroud)

现在的问题是:

  1. 找到并填写登录表单需要大约4分钟,这非常缓慢.我能做些什么来加快这个过程吗?

  2. 登录时,如何确保没有错误?换句话说,我如何检查响应代码?

  3. 如何用硒保存饼干,以便我可以在登录后继续抓取?

  4. 如果没有办法让硒更快,那还有其他的登录方式吗?(Quora没有API)

python selenium http ui-automation selenium-webdriver

14
推荐指数
2
解决办法
2万
查看次数

编写express.js应用程序.辅助方法在哪里?

所以我开始使用express.js - 我的第一个JS web开发框架.我没有做任何小事,但开始了一个更大的项目.我正在学习,并在同一时间建设.

来自Python/Flask背景,express似乎非常复杂.

就像在python中一样,如果我想要一个帮助器方法,我可以把它放在文件的顶部,或者放在一个新模块中,然后导入它.超级容易.但是在node/express中,事物是异步的,一切都在exportsmodule.exports(??).辅助方法在哪里?我怎么用回调来打电话给他们?

在我问的另一个问题中,我多次进行同样的计算.在Python中,我会编写一个方法(使用if语句和参数),并使用for.. in...循环多次调用它.我现在的代码非常冗余.

我怎么做快递?编写快速代码的最佳做法是什么?

javascript node.js express

9
推荐指数
1
解决办法
7544
查看次数

连续聚合大型数据集

我正在尝试一种算法来解决我遇到的这个问题.这不是硬件问题,而是我正在研究的一个副项目.

有一个表A大约有10 ^ 5行的顺序,并且每天以10 ^ 2的顺序添加新的.

表B具有10 ^ 6行的顺序,并且每天以10 ^ 3添加新的.从A到B有一对多关系(A中某些行有很多B行).

我想知道如何为这种数据进行连续聚合.我希望每隔约10分钟运行一次这样的工作并执行此操作:对于A中的每一行,查找在最后一天,一周和一个月中创建的B中与其相关的每一行(然后按计数排序)并保存他们在不同的数据库或缓存他们.

如果这令人困惑,这里有一个实际的例子:Say表A有亚马逊产品,表B有产品评论.我们希望显示最近4小时,每天,每周等评价最高的产品的分类列表.新产品和评论会快速添加,我们希望上述列表为最新版本尽可能.

我当前的实现只是一个for循环(伪代码):

result = []

for product in db_products:
    reviews = db_reviews(product_id=product.id, create>=some_time)
    reviews_count = len(reviews)
    result[product]['reviews'] = reviews
    result[product]['reviews_count'] = reviews_count

sort(result, by=reviews_count)

return result
Run Code Online (Sandbox Code Playgroud)

我每小时都这样做,并将结果保存在json文件中以供服务.问题是这不能很好地扩展,并且需要很长时间来计算.

那么,我在哪里可以解决这个问题呢?

更新:

谢谢您的回答.但我最终学习并使用Apache Storm.

python mysql cron aggregate

7
推荐指数
1
解决办法
903
查看次数

如何在Python 2.7.5中获取消息框

>>> from Tkinter import tkMessageBox

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    from Tkinter import tkMessageBox
ImportError: cannot import name tkMessageBox
Run Code Online (Sandbox Code Playgroud)

我收到此错误,即使from Tkinter import *工作正常.我使用的是Python 2.7.5.

python tkinter python-2.7

5
推荐指数
1
解决办法
1万
查看次数

尝试使用mechanize登录quora

我正在尝试使用mechanize模块登录quora.com.

这是我的代码:

#!/usr/bin/env python

import mechanize
import cookielib

br = mechanize.Browser() # create a browser object
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_headers = [('User-Agent', 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)')]

cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)

res = br.open('http://www.quora.com')
br.select_form(nr = 0)

br.form['email'] = 'uuuu'
br.form['password'] = 'pppp'

res = br.submit()
print res.read()
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Traceback (most recent call last):
  File "mech.py", line 29, in <module>
    res = br.submit()
  File "/usr/local/lib/python2.7/dist-packages/mechanize/_mechanize.py", line 541, in submit
    return self.open(self.click(*args, **kwds))
  File …
Run Code Online (Sandbox Code Playgroud)

python http mechanize quora

2
推荐指数
1
解决办法
1038
查看次数

使用matplotlib按时间序列自定义日期范围(x轴)

我绘制时间序列的代码是这样的:

def plot_series(x, y):
    fig, ax = plt.subplots()
    ax.plot_date(x, y, fmt='g--') # x = array of dates, y = array of numbers

    fig.autofmt_xdate()
    plt.grid(True)
    plt.show()
Run Code Online (Sandbox Code Playgroud)

我有几千个数据点,所以matplotlib创建3个月的x轴范围.这就是我现在的时间序列:

在此输入图像描述

但是,我想要每周/每两周播放一次.如何更改matplotlib计算x轴日期范围的方式,由于我有近1年的数据,如何确保所有数据都能很好地适用于单个图表?

python time-series matplotlib

2
推荐指数
1
解决办法
7814
查看次数

Heroku实例是否持久存在?(或者,我可以使用dict/array作为缓存吗?)

所以我的朋友告诉我,Heroku上的实例是持久性的(我不确定词汇是否正确,但他暗示所有用户共享相同的实例).

因此,如果我有app.py,并且实例运行它,那么所有用户都共享该实例.这意味着我们可以使用dict作为临时缓存来存储小东西,以缩短响应时间.

因此,举例来说,如果我的服务API,我也许可以这样定义缓存这个,然后使用它.

那是真的吗?我试着查看,但找不到任何东西.

我在1 dyno上将链接的API部署到heroku,并且每秒只有几个请求,服务它需要100多秒.所以我的理解是缓存不起作用.(根据新的遗物,这里可能有用的是大多数时间是由于请求排队.)

python heroku instance newrelic

2
推荐指数
1
解决办法
1149
查看次数

connect-flash和jade:无法显示flash flashahe

我现在开始使用Express,并希望显示一条简单的flash错误消息,这只是无法正常工作.

app.js

var flash = require('connect-flash');
...

var app = express(); // create an express app

// configure environments
app.configure(function(){
    ...
    app.use(express.cookieParser('keyboard cat'));
    app.use(express.session({ cookie: { maxAge: 60000 }}));
    app.use(flash());
    app.use(app.router);
});

app.get('/signup', routes.signup);
app.post('/signup', routes.adduser);
...
Run Code Online (Sandbox Code Playgroud)

和我的 router.js

exports.signup = function(req, res) {
    console.log(req.flash('error'));
    res.render('signup', {message: req.flash('error')});
}
Run Code Online (Sandbox Code Playgroud)

exports.adduser = function(req, res) {

    // get the form values from "name" attribute
    var username = req.body.username;
    var email = req.body.useremail;
    var password = req.body.userpassword;

    User.findOne({'username': username}, function(err, user) { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js express flash-message pug

2
推荐指数
1
解决办法
4606
查看次数