小编Jam*_*ell的帖子

PM2复活不能重启 - dump.pm2被清空

我正在尝试将PM2配置为在centos上守护简单的node.js服务器.init.d脚本执行,没有错误,但pm2 list返回一个空列表,服务器没有启动.

最初,我试图以不同的用户开始这个过程(对于那些感兴趣的人,可以通过修改来完成pm2-init.sh).但由于复杂性,我决定首先尝试让它以root身份运行.

问题的一个奇怪症状是dump.pm2文件被某个进程清空,因此pm2复活无关.我将pm2设置为在重启时运行,如下所示

$ pm2 startup centos
$ pm2 start /path/to/my/server.js
$ pm2 save
Run Code Online (Sandbox Code Playgroud)

此时,dump.pm2中有一个大的JSON对象,服务器正在运行.然后,运行:

$ reboot
  ... wait and log back in
$ pm2 list
Run Code Online (Sandbox Code Playgroud)

它又是空的,dump.pm2也是如此!

我不确定清除此文件的进程是什么.我已经尝试重新安装并重新运行启动脚本无济于事.任何帮助是极大的赞赏.

centos node.js pm2

6
推荐指数
1
解决办法
2295
查看次数

Django移民被杀

我对Django非常有信心,但直到最近才主要依赖生成的迁移.我写了一个小的自定义迁移,在我的CI开始抱怨超时后不久,它最终说明它与Django在部署期间的迁移有关.

起初,我能够解决这个问题,但我不知道我做了什么(如果有的话)修复它.这个问题似乎与我为特定迁移输入的一些自定义代码有关.这就是我所知道的:

  • 最初,一切都很好,但是在添加我的自定义代码之后,迁移开始需要长时间才能运行(相对).大约10秒钟.
  • 它有时有效.即.如果我从命令行运行十次迁移,有时它会工作,有时会失败.

输出如下(应用程序名称已删除):

[web@dev myapp]$ ./manage.py migrate
Operations to perform:
  Apply all migrations: myapp1, myapp2, myapp3, myapp4
Running migrations:
Killed
Run Code Online (Sandbox Code Playgroud)
  • 起初我以为是因为我正在使用RunPythonPython函数在删除其中一个字段之前复制两个字段之间的数据.该文档不鼓励将其用于PostgreSQL,但是有更好的方法吗?
  • 这里的业务场景是我有一个布尔字段,我需要切换到一组选项(CharField with options).代码检查布尔值是否为true并为字符字段设置正确的值.我做了两次.第一次最终结束了工作,但我还没有在另一个数据库上测试它.

这是迁移(已删除的应用程序名称):

from __future__ import unicode_literals

from django.db import migrations

def fix_consulting(apps, schema_editor):
    my_model = apps.get_model("myapp", "MyModel")
    for m in my_model._default_manager.all():
        if m.consulting:
            m.detail = "CONSLT"
            m.save()


class Migration(migrations.Migration):

    dependencies = [
        ('myapp', '0024_auto_20160117_1113'),
    ]

    operations = [
        migrations.RunPython(fix_consulting,atomic=False),
    ]
Run Code Online (Sandbox Code Playgroud)

我的想法:

  • 也许我在这里写的代码运行时间太长了?数据库中不到一百个模型,所以我不知道为什么fix_consulting函数需要这么长时间.

  • 如果我在开头添加print语句fix_consulting,它们有时只会运行,并且会被杀死.就目前而言,我已经跑了6-8次并且每次都被杀死,但是在不同的点上

其他信息: - 使用Django …

python migration django postgresql

6
推荐指数
1
解决办法
2246
查看次数

BeautifulSoup`get_all`发电机

有没有办法find_all变成更节省内存的发电机?例如:

鉴于:

soup = BeautifulSoup(content, "html.parser")
return soup.find_all('item')
Run Code Online (Sandbox Code Playgroud)

我想改为使用:

soup = BeautifulSoup(content, "html.parser")
while True:
    yield soup.next_item_generator()
Run Code Online (Sandbox Code Playgroud)

(假设正确处理最终StopIteration例外)

内置了一些生成器,但不会在查找中产生下一个结果.find只返回第一个项目.有数以千计的物品,find_all吸收了大量的记忆.对于5792件商品,我看到的内存只有1GB以上的内存.

我很清楚,有更高效的解析器,如lxml,可以实现这一目标.让我们假设还有其他业务限制阻止我使用其他任何东西.

如何find_all以更有效的内存方式转换为生成器进行迭代.

python parsing beautifulsoup

6
推荐指数
2
解决办法
1449
查看次数

无头Google Chrome-更改时区

是否可以启动无头Google Chrome并以编程方式设置时区进行测试?它似乎不作为shell开关存在

我希望能够以不同的时区运行测试,以确认前端是否正确处理了时区转换。

google-chrome google-chrome-headless

6
推荐指数
1
解决办法
1081
查看次数

jQuery slice否定索引不起作用

我有一个奇怪的问题,可能我在这里遗漏了一些东西.

我得到了一个元素列表,其中一部分是可见的,另一部分是不可见的.

我想选择不可见部分的最后3个元素.我添加了一个剪切来说明问题.

我正在寻找的结果是在js运行后显示10,11,12,而不是1,2,3我认为slice(-3)会给我数组的最后3个元素,但似乎我遗漏了一些东西.我使用时会发生同样的问题filter(':gt(-4)').有人能解释一下我做错了什么吗?

jQuery(document).ready(function() {
  setTimeout(function () {
    var prevs = jQuery('li').filter(':visible').first().prevAll();
    var vis = jQuery('li').filter(':visible');
    
    vis.hide(1000);
    prevs.slice(-3).show(1000);
    
  }, 1000);
});
Run Code Online (Sandbox Code Playgroud)
li:nth-last-child(n+4) {
  display: none
}

li {
  width: 30px;
  height: 30px;
  border: 1px dotted gray;
  background-color: red;
  list-style: none;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
  <li>10</li>
  <li>11</li>
  <li>12</li>
  <li>13</li>
  <li>14</li>
  <li>15</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

javascript arrays jquery slice

3
推荐指数
1
解决办法
353
查看次数

如何在django admin中显示带有相关对象计数的list_filter?

如何在django admin的list_filter中的每个过滤器之后显示相关对象的计数?

class Application(TimeStampModel):

    name = models.CharField(verbose_name='CI Name', max_length=100, unique=True)
    description = models.TextField(blank=True, help_text="Business application")

class Server(TimeStampModel):
    name = models.CharField(max_length=100, verbose_name='Server Name', unique=True)
    company = models.CharField(max_length=3, choices=constants.COMPANIES.items())
    online = models.BooleanField(default=True, blank=True, verbose_name='OnLine')
    application_members = models.ManyToManyField('Application',through='Rolemembership',
            through_fields = ('server', 'application'),
            )


class Rolemembership(TimeStampModel):

    server = models.ForeignKey(Server, on_delete = models.CASCADE)
    application = models.ForeignKey(Application, on_delete = models.CASCADE)
    name = models.CharField(verbose_name='Server Role', max_length=50, choices=constants.SERVER_ROLE.items())
    roleversion = models.CharField(max_length=100, verbose_name='Version', blank=True)
Run Code Online (Sandbox Code Playgroud)

管理员

@admin.register(Server)
class ServerAdmin(admin.ModelAdmin):

    save_on_top = True
    list_per_page = 30
    list_max_show_all = 500
    inlines = …
Run Code Online (Sandbox Code Playgroud)

django-admin django-modeladmin

3
推荐指数
1
解决办法
843
查看次数

类型转换和相等行为

我是Haskell的新手,只是偶然发现了这个问题.我试图找出解释,但我没有足够的经验与Haskell类型确定.

功能:

mystery :: Int -> Int -> Float -> Bool
mystery x y z = not ((x==y) && ((fromIntegral y) == z ))
Run Code Online (Sandbox Code Playgroud)

表现得像它似乎会.它基本上检查值是否都不相等,但是从a进行类型转换Integral y以确保它可以与之进行比较z

如果这是真的,那么为什么:

case1 = do 
    if mystery 1 1 1.00000001 -- a very small number
        then putStrLn "True"
        else putStrLn "False"
Run Code Online (Sandbox Code Playgroud)

打印错误(即,值全部相等,所以1 == 1 == 1.00000001),而:

case2 = do 
    if mystery 1 1 1.0000001 -- a larger number
        then putStrLn "True"
        else putStrLn "False"
Run Code Online (Sandbox Code Playgroud)

打印真的吗?(即.值并非全部相等)

我知道它可能与精度有关,但我不明白.任何帮助是极大的赞赏.

floating-point precision haskell

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

从txt文件打印随机行?

我使用random.randint生成一个随机数,然后将该数字赋给变量.然后我想用我分配给变量的数字打印行,但我一直收到错误:

列表索引超出范围

这是我试过的:

f = open(filename. txt)
lines = f.readlines() 

rand_line = random. randint(1,10)
print lines[rand_line]
Run Code Online (Sandbox Code Playgroud)

python random

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